Skip to content
velle edited this page Jul 17, 2026 · 1 revision

Chibi

A voice-interactive AI companion, with a sentinel aspect over synguard's security feed.

Chibi is a desktop companion: an animated avatar you can talk to. She listens (speech-to-text), thinks (through an LLM backend), and speaks back (text-to-speech in a "cute" voice). On SynapseOS her default brain is synapd — the same local model the rest of the OS uses — so she works with no API keys and no cloud. Her second job is security: she subscribes to synguard's verdict feed and can surface threats out loud.

Upstream: velle999/chibi-llm. Packaged for SynapseOS as chibi and shipped on the ISO.

Running her

chibi

The launcher exports CHIBI_LLM_BACKEND=synapd and points at synapd's socket, so she talks through the OS's own model. Override to use Ollama instead:

CHIBI_LLM_BACKEND=ollama chibi

What's in the box

Piece Role
STT faster-whisper (tiny model shipped on the ISO — she hears you with no network)
TTS piper with the en_GB-cori-medium voice, pitch-shifted via sox for the "cute" timbre; espeak-ng is the last-resort fallback
LLM synapd by default (llm_client.py), or Ollama
Sentinel read-only subscriber to synguard's secfeed; the security aspect never writes
Avatar pygame/SDL2 sprite renderer

Python deps are vendored under /usr/lib/chibi/pydeps with pip --target (not a venv — a venv bakes a build-time absolute path that breaks when installed elsewhere); the launcher puts that dir on PYTHONPATH.

Gotchas we already hit

  • Silent and deaf with no error. ALSA's default PCM must route to PipeWire, which is what the pipewire-alsa package's /etc/alsa/conf.d symlink does. Without it default falls back to dmix on card 0 — and on a box whose card 0 is an HDMI-only GPU there is no device 0, so every aplay/arecord dies and Chibi comes up mute. pipewire-alsa is a hard dependency for this reason; do not drop it.
  • Text-only when you expected voice. The venv gives voice; system Python is silently text-only. The packaged build vendors the deps so this is handled, but a from-source run must use the right interpreter.
  • ~/.local/bin isn't on the synui session PATH — install launchers to /usr/bin (the package does).
  • Three copies of every module. The upstream repo ships per-resolution app trees; a fix applied to one copy but not the others drifts. The package builds from the 1080x1920-linux tree.

See also: synapd (her brain), synguard + kmod (her security feed), and Vibe (the coding-assistant sibling on the same model).

Clone this wiki locally