diff --git a/docs/homelab-integration.md b/docs/homelab-integration.md index 1b805a6..5104020 100644 --- a/docs/homelab-integration.md +++ b/docs/homelab-integration.md @@ -12,6 +12,20 @@ it** — endpoints and aliases drift, and this file is a snapshot (2026-06-06), - **Off-cluster (host / NodePort):** `http://koala:30401/v1/` — service `litellm-nodeport` (`4000:30401`). - NOTE: the earlier `31234` was **wrong** — `31234` is the `llama-swap` NodePort (`8080:31234`), not LiteLLM. Use `30401` for off-cluster LiteLLM. `confirm` resolved. +- **Speech-to-text (ADR-033):** the same gateway serves `POST /v1/audio/transcriptions` for + `iguana/kb-whisper` (primary, local) and `berget/kb-whisper` (fallback, EU cloud — private audio + leaves the homelab if it is used). **Call it via the NodePort / in-cluster address above, NOT + `https://llm-api.d-ma.be`:** that public ingress (openresty) returns `413` for bodies over + roughly 8–10 MB (~5 minutes of 16 kHz WAV), while the NodePort took 174 MB (90 minutes) in one + request (measured 2026-10-01, `docs/research/audio-length-ceiling-2026-10-01.md`). Send multipart + field `file`, `response_format=verbose_json`, no `Expect: 100-continue`. iguana's whisper-server + can wedge permanently after a Metal OOM (infra#273); never branch on its + `{"error":"failed to process audio"}` string — it has had at least five causes. Tapir's knobs: + `TAPIR_UPLOADS_ENABLED` (off by default), `TAPIR_UPLOAD_MAX_MB` (200), `TAPIR_UPLOAD_MAX_MINUTES` + (90), `TAPIR_TRANSCRIBE_MODEL`, `TAPIR_TRANSCRIBE_FALLBACK_MODEL` (empty disables the cloud + fallback), `TAPIR_TRANSCRIBE_TIMEOUT` (30m), `TAPIR_UPLOAD_TMP_DIR`, `TAPIR_FFMPEG_BIN`, + `TAPIR_FFPROBE_BIN`, `TAPIR_MAX_UPLOADED_TRANSCRIPT_CHARS` (120000). Needs `ffmpeg` + `ffprobe` + in the runtime image; Tapir's own ingress body limit for a 200 MB upload is unverified (infra). - **Auth key:** treat as a secret via the SecretStore port; do not hardcode in committed code. NOTE: the documented `sk-local-123` returned `401` on `30401/v1/models` (2026-06-02) — it is stale or the gateway now enforces the `LITELLM_MASTER_KEY` (1Password `op://HomeLab/LITELLM_MASTER_KEY`).