Configuration
Kiki's agent reads its settings from /etc/kiki/agentd.toml. The image ships a sensible, privacy-preserving default; you can edit it on a running device or bake a different default into a custom image.
The default
toml
[inference]
default_model = "granite4.1:3b" # set at build via DEFAULT_MODEL
ollama_url = "http://localhost:11434"
local_model_dir = "/var/lib/kiki/models"
[router_policy]
allow_remote = false
allow_third_party_remote = false
default_privacy_level = "standard"
preferred_model = "auto"
disable_remote_below_battery_pct = 15
disable_third_party_for_voice = true
trace_decisions = falseInference
| Key | Meaning |
|---|---|
default_model | The model used unless a task overrides it. |
ollama_url | Where the local model server listens. |
local_model_dir | Where on-device model weights are stored. |
Router policy — local-first
The router decides which model and provider handle each request. The defaults keep everything on your device:
| Key | Default | Effect |
|---|---|---|
allow_remote | false | Nothing leaves the device unless you opt in. |
allow_third_party_remote | false | Even with remote on, third-party providers stay off until allowed. |
default_privacy_level | "standard" | Baseline sensitivity applied to requests. |
preferred_model | "auto" | Let the router choose, or pin a model. |
disable_remote_below_battery_pct | 15 | Fall back to local on low battery. |
disable_third_party_for_voice | true | Keep voice away from third-party providers. |
trace_decisions | false | When true, log why the router chose each provider. |
See Models for how routing picks between local and cloud.
Changing it
On a running device — edit the file and restart:
shsudo systemctl restart agentdAt build time — change the default model with a build arg, or edit the template before building a custom image.
Across a fleet — when devices are in the cloud, configuration can be delivered centrally and applied atomically.
Service flags
sh
agentd --config /etc/kiki/agentd.toml # config path (default shown)
agentd --no-fleet # don't connect to the cloud
agentd --no-wm # run headless, no desktop