OpenVoiceOS / OpenVoiceOS/raspOVOS
offline/hybrid builds autoconfigure before installing the plugins they select
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 52
- Forks
- 6
- PR merge metrics
- No merged PRs in 30d
Description
🤖 Auto-generated by Claude Sonnet 5 (claude-sonnet-5) via Claude Code — NOT human-reviewed. Verify before acting.
Found while auditing the OVOS technical manual against current source.
The offline and hybrid build tiers call ovos-config autoconfigure --offline
(or --hybrid) before the recommends layer's selected plugins are installed.
--offline autoconfigure now selects onnx-asr and phoonnx, and --hybrid
merges offline_male into phoonnx, but the build step that installs
onnx-asr/phoonnx packages runs after autoconfigure, and the offline tier
never installs them at all — only citrinet/piper land on disk. The
generated mycroft.conf on both tiers names STT/TTS plugins the image does
not actually have installed.
Verified against the build scripts and ovos-config autoconfigure defaults
on origin/dev; not verified against a booted image.
Suggested fix: install the recommends-layer packages before running
autoconfigure, or run autoconfigure after the install step completes, on
both the offline and hybrid tiers.
Confirmed on dev, and reordering does not fix it
🤖 This section auto-generated by Claude Opus 5 (claude-opus-5) via Claude Code — NOT human-reviewed. The autoconfigure runs below were executed; the install lines were read from
origin/dev.
ovos-config 3.5.0a1 (c9baca5), run per tier in a throwaway venv with HOME and XDG_CONFIG_HOME pointed at a sandbox:
autoconfigure --lang en-US --offline --male --platform rpi5
stt.module = ovos-stt-plugin-onnx-asr
tts.module = ovos-tts-plugin-phoonnx
autoconfigure --lang en-US --hybrid --male --platform rpi5
stt.module = ovos-stt-plugin-server
tts.module = ovos-tts-plugin-phoonnx
Against raspOVOS 374f5f5:
| Tier | autoconfigure | installs | selected plugin present |
|---|---|---|---|
| offline | line 20 | ovos-stt-plugin-citrinet, line 23 |
no, for both STT and TTS |
| hybrid | line 22 | ovos-tts-plugin-piper, line 32 |
no, for TTS |
The offline tier is worse than the report above states: it selects onnx-asr and phoonnx, installs neither, and the one plugin it does install, citrinet, is named nowhere in the generated config.
The suggested reorder does not close it. git grep for phoonnx, onnx-asr and onnx_asr across every shell script in the repo returns nothing, so those packages are never installed at any point in any tier. ovos-core's pyproject.toml names none of phoonnx, onnx-asr or citrinet in any extra, so ovos-core[skills-en] on the lite base cannot supply them either. Running autoconfigure last would write the same config against the same missing packages.
What the fix has to choose between, since this is about what the image ships rather than step order:
- Install what the tier selects: add
ovos-stt-plugin-onnx-asrandovos-tts-plugin-phoonnxto the offline script,ovos-tts-plugin-phoonnxto hybrid. Honours the recommends layer, grows the image. - Select what the tier installs: pass explicit STT/TTS overrides so the config names
citrinetandpiper. Keeps image size, diverges from the shared recommends. - Change the recommends layer in
ovos-config, which moves the decision to every consumer of that layer, not just raspOVOS.
Only the first leaves the recommends layer meaning what it says everywhere. The call belongs to whoever owns the image size budget.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the offline and hybrid build scripts and the ovos-config autoconfigure entry point; compare their install lines with the generated STT/TTS selections. Check ovos-core's pyproject.toml only to confirm the plugins are not supplied indirectly. Done means each tier's generated configuration names plugins that the image actually installs, after choosing whether to add packages or override selections.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- shell
- Domain
- build-system, devops, embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100