Apps
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
Buddy mode
Press ✦ in her window (or F4) and Chibi leaves it to wander the desktop: along the bottom of the screen, up onto the tops of windows, talking in a bubble over her head. To start straight into it:
chibi --buddy
Click her to pet her, double-click to type to her, drag her anywhere, and right-click for her menu — Go home in it puts her back in her window. Voice, alarms and the sentinel aspect keep working while she is out, and the rest of the desktop stays clickable around her.
She roams the monitor her window was on. To choose another, or change her size,
set these in ~/.config/chibi/config.local.py:
buddy_output = "DP-1" # connector name, as `synctl outputs` lists it
buddy_scale = 0.7 # default 0.55
What's in the box
| Piece | Role |
|---|---|
| STT | faster-whisper with the small model, from synapse-voice (shipped on the ISO — she hears you with no network) |
| TTS | piper with the en_GB-cori-medium voice, from synapse-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 |
| Buddy mode | a GTK 4 layer-shell overlay (gtk4-layer-shell) that draws her with the same 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
defaultPCM must route to PipeWire, which is what thepipewire-alsapackage's/etc/alsa/conf.dsymlink does. Without itdefaultfalls back todmixon card 0 — and on a box whose card 0 is an HDMI-only GPU there is no device 0, so everyaplay/arecorddies and Chibi comes up mute.pipewire-alsais 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/binisn'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-linuxtree.
See also: synapd (her brain), synguard + kmod (her security feed), and Vibe (the coding-assistant sibling on the same model).