Which optional engines (OpenAI Whisper, Vosk, remote API) survive in Voculinux as installable extras, and what support promise does each carry (guaranteed, best-effort, dropped)?
Part of #1
## Question
Which optional engines (OpenAI Whisper, Vosk, remote API) survive in Voculinux as installable extras, and what support promise does each carry (guaranteed, best-effort, dropped)?
Decision. whisper_cpp stays the only guaranteed engine in Voculinux. vosk, whisper (OpenAI), faster_whisper, and parakeet survive as best-effort installable extras. remote_api survives as a best-effort user-configured engine. Nothing is dropped from the source tree.
What each promise means.
Guaranteed (whisper_cpp only): default engine, pinned in install.sh (SELECTED_ENGINE default, --engine=whisper_cpp default), runtime dependency pywhispercpp in pyproject.toml, models covered by pinned checksums (model_checksums.txt), packaged in the xbps build (Vulkan plus CPU), and the engine the performance baseline and CUDA/Vulkan decisions are measured against.
Best-effort extra (vosk, whisper, faster_whisper, parakeet): each has a pyproject optional-dependency extra, an EngineType entry, detection in available_engines(), and install.sh --engine= support, but none is vendored in the xbps package, none is covered by the performance budgets, and breakage outside the default path is fixed opportunistically, not as a release blocker.
Best-effort user-configured (remote_api): engine code exists in recognition_manager.py (_init_remote_api, remote_api_url/key/endpoint/model settings) and needs only requests (already a runtime dep), but Voculinux ships no server for it; the user supplies the URL and key. Audio leaves the machine when it is used.
Rationale and evidence. The map Notes already settle whisper_cpp as the only guaranteed engine, and the code agrees: pyproject.toml runtime deps carry pywhispercpp (not the extras), install.sh defaults to whisper_cpp with upgrade mode preserving a configured engine, EngineType keeps all six identifiers, and the xbps decision packages Vulkan plus CPU only. Dropping any engine would break existing configs that upgrade mode deliberately preserves, so the smallest decision reaching the Destination keeps all six and tiers the promise instead.
Grilling provenance. Frontier questions worked under delegation: (1) does whisper_cpp stay the sole guarantee — yes, per Notes plus runtime-dep evidence; (2) do the four local extras survive — yes as best-effort, per extras plus EngineType plus --engine= flags; (3) does remote_api survive — yes as user-configured, per _init_remote_api plus settings keys; (4) is anything dropped — no, dropping breaks upgrade-kept configs. Domain check: guaranteed means packaged, pinned, and budgeted; best-effort means installable and selectable but unbudgeted. No GLOSSARY.md or ADR change: no new term crystallised and the promise is reversible in the handoff spec.
Provenance. Decision made by agent under the user's explicit delegation for this run (act as orchestrator and decision maker), grounded in the map Notes, pyproject.toml, install.sh, engines/__init__.py, settings_engines.py, common_types.py, and recognition_manager.py.
Consequences for later tickets. The Model catalog for 4 GB VRAM ticket covers whisper_cpp variants only; no per-extra model catalog is owed. The Signed xbps pipeline ticket packages whisper_cpp only. The PipeWire and Portal tickets are engine-independent.
## Resolution: optional engines support promise
**Decision.** whisper_cpp stays the only guaranteed engine in Voculinux. vosk, whisper (OpenAI), faster_whisper, and parakeet survive as best-effort installable extras. remote_api survives as a best-effort user-configured engine. Nothing is dropped from the source tree.
**What each promise means.**
- Guaranteed (whisper_cpp only): default engine, pinned in install.sh (SELECTED_ENGINE default, --engine=whisper_cpp default), runtime dependency pywhispercpp in pyproject.toml, models covered by pinned checksums (model_checksums.txt), packaged in the xbps build (Vulkan plus CPU), and the engine the performance baseline and CUDA/Vulkan decisions are measured against.
- Best-effort extra (vosk, whisper, faster_whisper, parakeet): each has a pyproject optional-dependency extra, an EngineType entry, detection in available_engines(), and install.sh --engine= support, but none is vendored in the xbps package, none is covered by the performance budgets, and breakage outside the default path is fixed opportunistically, not as a release blocker.
- Best-effort user-configured (remote_api): engine code exists in recognition_manager.py (_init_remote_api, remote_api_url/key/endpoint/model settings) and needs only requests (already a runtime dep), but Voculinux ships no server for it; the user supplies the URL and key. Audio leaves the machine when it is used.
**Rationale and evidence.** The map Notes already settle whisper_cpp as the only guaranteed engine, and the code agrees: pyproject.toml runtime deps carry pywhispercpp (not the extras), install.sh defaults to whisper_cpp with upgrade mode preserving a configured engine, EngineType keeps all six identifiers, and the xbps decision packages Vulkan plus CPU only. Dropping any engine would break existing configs that upgrade mode deliberately preserves, so the smallest decision reaching the Destination keeps all six and tiers the promise instead.
**Grilling provenance.** Frontier questions worked under delegation: (1) does whisper_cpp stay the sole guarantee — yes, per Notes plus runtime-dep evidence; (2) do the four local extras survive — yes as best-effort, per extras plus EngineType plus --engine= flags; (3) does remote_api survive — yes as user-configured, per _init_remote_api plus settings keys; (4) is anything dropped — no, dropping breaks upgrade-kept configs. Domain check: guaranteed means packaged, pinned, and budgeted; best-effort means installable and selectable but unbudgeted. No GLOSSARY.md or ADR change: no new term crystallised and the promise is reversible in the handoff spec.
**Provenance.** Decision made by agent under the user's explicit delegation for this run (act as orchestrator and decision maker), grounded in the map Notes, pyproject.toml, install.sh, engines/__init__.py, settings_engines.py, common_types.py, and recognition_manager.py.
**Consequences for later tickets.** The Model catalog for 4 GB VRAM ticket covers whisper_cpp variants only; no per-extra model catalog is owed. The Signed xbps pipeline ticket packages whisper_cpp only. The PipeWire and Portal tickets are engine-independent.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #1
Question
Which optional engines (OpenAI Whisper, Vosk, remote API) survive in Voculinux as installable extras, and what support promise does each carry (guaranteed, best-effort, dropped)?
Resolution: optional engines support promise
Decision. whisper_cpp stays the only guaranteed engine in Voculinux. vosk, whisper (OpenAI), faster_whisper, and parakeet survive as best-effort installable extras. remote_api survives as a best-effort user-configured engine. Nothing is dropped from the source tree.
What each promise means.
Rationale and evidence. The map Notes already settle whisper_cpp as the only guaranteed engine, and the code agrees: pyproject.toml runtime deps carry pywhispercpp (not the extras), install.sh defaults to whisper_cpp with upgrade mode preserving a configured engine, EngineType keeps all six identifiers, and the xbps decision packages Vulkan plus CPU only. Dropping any engine would break existing configs that upgrade mode deliberately preserves, so the smallest decision reaching the Destination keeps all six and tiers the promise instead.
Grilling provenance. Frontier questions worked under delegation: (1) does whisper_cpp stay the sole guarantee — yes, per Notes plus runtime-dep evidence; (2) do the four local extras survive — yes as best-effort, per extras plus EngineType plus --engine= flags; (3) does remote_api survive — yes as user-configured, per _init_remote_api plus settings keys; (4) is anything dropped — no, dropping breaks upgrade-kept configs. Domain check: guaranteed means packaged, pinned, and budgeted; best-effort means installable and selectable but unbudgeted. No GLOSSARY.md or ADR change: no new term crystallised and the promise is reversible in the handoff spec.
Provenance. Decision made by agent under the user's explicit delegation for this run (act as orchestrator and decision maker), grounded in the map Notes, pyproject.toml, install.sh, engines/__init__.py, settings_engines.py, common_types.py, and recognition_manager.py.
Consequences for later tickets. The Model catalog for 4 GB VRAM ticket covers whisper_cpp variants only; no per-extra model catalog is owed. The Signed xbps pipeline ticket packages whisper_cpp only. The PipeWire and Portal tickets are engine-independent.