openspec/changes/archive/2026-09-10-add-parakeet-api/proposal.md
add-parakeet-api
ACTIVE BUILD
Why
The 3090 stays on 30 fps plugins. Parakeet runs on the 14600KF. Callers need a machine-readable contract so any agent can pipe audio and get text without reading this notebook. This repo is adapter-static Pages today; the only HTTP is the bay loadout feed. The API is a new process.
What
- Capability ADDED:
parakeet-asr - Standalone Bun + Hono +
@hono/zod-openapion fractal1 - Canonical spec at
GET /.well-known/openapi.json(OpenAPI 3.1), same bytes as/api/v1/openapi.json, plus RFC 9727/.well-known/api-catalog - CPU INT8 Parakeet TDT 0.6B v3; no CUDA context
- Tailscale bind only (port 8750, not bay 8745)
- Clip transcribe and a 16 kHz mono PCM stream that emits text
- Steal Papyrus CPU-when-strong + PCM contract; do not vendor morphist-asr
Impact
- Capabilities: ADDED
parakeet-asr - ADRs: will amend ARCHITECTURE.md (Bun process beside Pages SSG)
User journey & surfaces
An agent or CLI on the tailnet discovers the API, then posts or streams audio.
- Working:
GET /.well-known/openapi.jsonlists operations.POST /api/v1/transcribereturns text. A PCM stream yields NDJSON/SSE lines.nvidia-smistays compositor-only. - Empty: model not loaded yet. Health says so; transcribe is 503, not a hang.
- Failed: bad audio shape (not 16 kHz mono) is 422 from the spec. Sidecar down is 503.
- Off (GitHub Pages visitor): Pages does not proxy this API. No mixed-content fetch.
No new UI because the surface is REST + OpenAPI. Bay glass does not own ASR.
Out of scope
- GPU / CUDA / NIM Parakeet (keeps the 3090 for plugins)
- Vendoring Papyrus Tauri, cpal, CoreML
- Unified RNNT word-by-word partials (later; windowed TDT is v1)
- IdentiKey login (tailnet is the gate, like bay)
- Mounting Hono inside SvelteKit
adapter-static - daBOM PGLite / quotes