mimi-os
Self-hosted runtime for personal AI agents running around the clock on the owner's machine. An always-on Node.js gateway runs every model call (vLLM, llama.cpp, OpenRouter), keeps the provider keys, caps each model's daily tokens or USD with a fallback model, and holds any tool its agent marks as a write for the owner's approval (denied after 5 min). Agents are TypeScript folders on an SDK with memory, wiki and daily-routine packs; a Tauri 2 app for macOS, Android and Windows (preview) reaches the gateway over an end-to-end encrypted Noise IK + ML-KEM-768 channel.
My role
Personal project, solo end-to-end - all 7 repos, from the wire protocol to the desktop/Android app. Open source, Apache-2.0.
- Secure channel on a from-scratch Noise implementation (byte-exact vs test vectors): X25519 IK handshake + per-session ML-KEM-768 rekey
- Gateway daemon: app API tunneled as streams in the channel, turns that re-attach after a disconnect, up to 6 chained tool calls per round
- Model layer over vLLM, llama.cpp and OpenRouter with no vendor SDK: per-agent grants, daily token / USD limits with a fallback model
- Agents own their history: a SHA-256 hash chain in each agent's SQLite that the gateway only caches; agent-to-agent calls and shared rooms
- Tauri 2 client for macOS, Android and Windows (preview): streaming chat, approval cards, 6-digit SAS pairing, content-free Android push
- Mini-apps (macOS): an agent's own web UI in a sandboxed iframe on a per-app origin, its fetch / WebSocket / cookies relayed over the channel
- Tooling: mimi-dev scenario tests on a real gateway and model, scored pass / flaky / fail; one-command setup script
Tech stack
TypeScript, Node.js, Noise / ML-KEM, Tauri 2, React, SQLite



