Files
esh-pfi-infrastructure/stacks/scriberr/.env.example
T
vh ee3db68db1 feat(scriberr): overlap-and-stitch Parakeet slicer patch, rebuild script, bench
Carry patches/0001 on our Scriberr build (upstream a353078): adjacent
buffered chunks overlap by 4 s inside --chunk-len and hand over at a word
both chunks transcribed alike, instead of cutting at fixed marks with no
overlap. Pause-aware cutting is included as an opt-in (--pause-search);
it measured neutral once the stitch was right. The Go<->Python CLI and
JSON seam is unchanged.

Bench (4 recordings, 118 min, 3 cut placements each, against a no-cut
whole-file reference; metrics only, private audio stays on fv-ml1):
cuts with an error within +-3 s fall from 52% (93/179) to 22% (41/184)
against a 19% background; floor +-0.08. Positive control: upstream's
cutter +0.33 over background. A-vs-A byte-identical in-process and
across CLI processes. Peak GPU memory unchanged at 5,496 MiB (n=3).
Also found: Parakeet skips runs of >=10 words mid-chunk with any
slicer, upstream's included; not addressed here.

scripts/scriberr-rebuild clones a pinned upstream sha into a new
/opt/docker/src dir, git-apply-checks the patches, builds a distinct
tag, and checks embed, unit tests, the JSON seam (scriberr-seam-check.py)
and the memory budget on idle GPU 3. Deploy stays manual. The upstream
PR is prepared under patches/upstream-pr/ and not opened.
2026-09-30 12:10:32 -07:00

56 lines
3.4 KiB
Bash

# Scriberr — copy to .env on the host at /opt/docker/compose/scriberr/.env
# Real .env is gitignored and lives only on fv-ml1.
# ── Image ────────────────────────────────────────────────────────────────
# Built locally from Dockerfile.cuda.12.9 — see the compose header for why
# the published scriberr-cuda image is NOT usable on these Blackwell cards.
# Patched builds come from scripts/scriberr-rebuild and are tagged
# scriberr:local-blackwell-<upstream sha7>-<suffix> (e.g. -a353078-slicer1)
# so every build keeps its own tag. Deploying = pointing this at a new tag;
# rollback = pointing it back. See stacks/scriberr/patches/README.md.
# (Unset falls back to the original unpatched scriberr:local-blackwell.)
SCRIBERR_IMAGE=scriberr:local-blackwell
# ── Network ──────────────────────────────────────────────────────────────
SCRIBERR_PORT=8080
SCRIBERR_BIND=0.0.0.0
# CORS. Must list every origin the UI is actually reached from, or the
# browser blocks the API calls. Comma-separated, no spaces, no trailing /.
SCRIBERR_ALLOWED_ORIGINS=http://10.251.50.54:8080,http://scriberr.fv.internal:8080
# ── GPU ──────────────────────────────────────────────────────────────────
# GPU0 is fully committed to the `gen` seat; GPU1 is the one with headroom.
SCRIBERR_GPU_ID=1
# ── Storage (on /tank — NOT the root pool, weights are multi-GB) ─────────
SCRIBERR_DATA_DIR=/tank/scriberr/data
SCRIBERR_ENV_DIR=/tank/scriberr/whisperx-env
# ── Runtime ──────────────────────────────────────────────────────────────
# ⚠ 10001, not the fleet-usual 1000. The Blackwell image's `appuser` IS 10001
# and its PUID remapping is broken — at 1000 the app cannot open its SQLite DB
# and crash-loops. The /tank dirs are chowned to 10001:10001 to match.
# See README "The PUID trap".
SCRIBERR_PUID=10001
SCRIBERR_PGID=10001
# Keep false while the app is served over plain HTTP. Setting this true
# without TLS makes login silently fail (cookie marked Secure, dropped).
SCRIBERR_SECURE_COOKIES=false
# ── Optional: summarisation / transcript chat ────────────────────────────
# Scriberr speaks the OpenAI API. Point it at the LiteLLM gateway so this
# costs nothing and stays on-prem, rather than a paid vendor key.
# Configure the base URL in the Scriberr UI (Settings -> AI provider):
# base URL : http://10.250.50.70:4000/v1
# model : summarizer (or gen / gen-reasoning)
# The key below is the shared all-agents gateway key.
# ⚠ That key also reaches PAID passthrough models (GLM, Kimi) on a shared
# tab — keep the configured model on a free local seat.
# SCRIBERR_OPENAI_API_KEY=
# GPU 1 memory budget (2026-09-30). Parakeet slice length in seconds and the
# torch allocator mode; see compose.yaml for the measurements. Defaults apply
# when unset; override only with a re-measured peak.
# SCRIBERR_PARAKEET_CHUNK_SECS=120
# SCRIBERR_PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True