Core concepts

Models & routing

Model-agnostic by design: cascades, downloads, and engine bridges.

The runtime never talks to a model engine directly. A task-first router picks a model per call from declarative manifests (capabilities, RAM/device class, context window, network requirement), honouring privacy mode, pack requirements, and battery state.

The cascade
1 deterministic rules tier      (always present — first launch, CI, low-end devices)
2 tiny intent classifier
3 small local model (1–8B quantised)
4 larger local model (high-tier devices)
5 ask the user to clarify
6 cloud fallback — only if privacy_mode allows AND user consented
  • External engine bridge: --model-cmd "<command>" attaches any engine speaking one JSON object per line (llama.cpp wrappers, Ollama, custom).
  • Verified downloads: resumable, sha256-checked, storage-pressure gated (ModelDownloadManager).
  • Swap without rewrites: agents, skills, workflows, and packs never change when models do.