deploy/tower/: - second-brain-transcribe.service — systemd unit. User=herbyadmin, Type=simple, After=/Wants= wg-quick@wg-lan.service so the WG tunnel must come up first. Restart=always with a StartLimitBurst guard. - second-brain-transcribe.env.example — env file template documenting the SECOND_BRAIN_DATABASE_URL form for db.wg.herbylab.dev (10.99.0.1) and the optional WHISPER_* overrides. - README.md — EndeavourOS install steps (nvidia/cuda/cudnn, ffmpeg, uv + tower extra, model pre-warm), WG topology reference, validation checklist for what to confirm once the tunnel is live, and a follow-ups section flagging the local-disk → NAS media migration as out-of-scope-for-this-round. Tests: - tests/test_claim.py — live-DB race test. Two threads call claim_next_source against a single PULLED video row; SKIP LOCKED must give exactly one of them the row, the other gets None. Also asserts the claimed_by/at columns land + release nulls them. Auto-skips when no SECOND_BRAIN_DATABASE_URL is set. - tests/test_transcribe.py — pure-Python coverage of resolve_settings (cpu→int8, cuda→float16, env-over-block) and write_srt; plus a CPU smoke test that synthesizes a numpy audio array and runs the `tiny` model on cpu/int8 (auto-skipped when faster-whisper isn't installed, i.e. on the dev side without --extra tower).
25 lines
1.1 KiB
Plaintext
25 lines
1.1 KiB
Plaintext
# /etc/default/second-brain-transcribe
|
|
#
|
|
# Copy to /etc/default/second-brain-transcribe, chmod 0600, chown root:root
|
|
# (systemd reads it before dropping to User=herbyadmin so a non-readable
|
|
# permissions mode is fine — the herbyadmin user never touches this file).
|
|
|
|
# REQUIRED — petalbrain Postgres reached over the WireGuard tunnel.
|
|
# Hub-side hostname is db.wg.herbylab.dev (10.99.0.1); the tower is 10.99.0.2.
|
|
# No TLS — WireGuard already encrypts, and lovebug doesn't require SSL.
|
|
SECOND_BRAIN_DATABASE_URL=postgresql+psycopg://lovebug:REPLACE_ME@db.wg.herbylab.dev:5432/petalbrain
|
|
|
|
# OPTIONAL — only set if the tower has a non-standard whisper layout.
|
|
# Defaults from settings.toml: model=large-v3, device=cuda, compute_type=float16.
|
|
# WHISPER_MODEL=large-v3
|
|
# WHISPER_DEVICE=cuda
|
|
# WHISPER_COMPUTE_TYPE=float16
|
|
|
|
# OPTIONAL — identifier stamped into sources.claimed_by (default tower:<hostname>).
|
|
# Useful if you ever run multiple tower workers and want to tell them apart.
|
|
# SECOND_BRAIN_WORKER_ID=tower-main
|
|
|
|
# OPTIONAL — bump worker log verbosity. INFO is the default.
|
|
# PYTHONUNBUFFERED=1
|
|
# SECOND_BRAIN_LOG_LEVEL=DEBUG
|