ka · vital essence
Your coding double.
ka is a model-agnostic coding agent written in Rust: one static binary of 6.25 MB that speaks to every model, from frontier APIs to a local Ollama. No daemon. No sidecar. No telemetry.
MIT license · Rust 1.85+ · Linux
The name
The vital essence, distilled.
In Ancient Egypt, the ka, written 𓂓 (two upraised arms), was the vital essence of a person: a double, born with you, mirroring your gestures, sustained by the essence within offerings rather than the offerings themselves.
ka the agent borrows the idea. It is a small, faithful double for your terminal: it reads what you would read, writes what it is cleared to write, and remembers every session as an append-only strand you can rewind, fork, and replay.
Everything that made other agents heavy was left out. No daemon, no plugins runtime, no vector database, no telemetry: one process, one binary, and just enough essence to get the work done.
GARDINER D28 · kꜣ
vital essence
The double that accompanies a person through life, and beyond.
Why ka
Small binary. Serious agent.
ka is built around a footprint contract enforced in CI on every commit, not a benchmark slide.
The footprint contract
One static musl binary. Cold start, idle memory, and size are asserted against committed baselines on every push, so ka cannot quietly grow past its own contract.
- binary
- 6.25 MB
- cold start
- ≤50 ms
- idle RSS
- ≤15 MB
no steady-state network (one update check per 24 h) · 779 tests · clippy -D warnings
Every surface
One engine, four front-ends, from interactive sessions to scripted pipelines.
- TUI: ratatui, mouse, markdown
- ka run: headless NDJSON
- ka serve: HTTP + SSE
- ka acp: editor embedding
Model-agnostic
Three wire protocols (Anthropic messages, OpenAI chat, OpenAI Responses) cover every provider. Local Ollama, LM Studio, vLLM and llama.cpp endpoints are auto-discovered, and a catalog of 500+ models ships in the binary.
anthropic/claude-sonnet-5 · ollama/qwen3.5:9b · …
A real safety floor
Unbypassable hardstops, bash decomposition, a read ledger that refuses stale edits, one-way secret redaction, and an optional landlock/bwrap filesystem sandbox.
Read the safety model →Sessions as strands
Every session is an append-only JSONL strand. Rewind, fork, export to markdown; replaying the records reproduces the whole session, model choice included.
How strands work →Speaks the ecosystem
No new formats to learn. ka reads the conventions and extensions your projects already use.
- AGENTS.md
- SKILL.md
- MCP
- hooks
- stream-json
- subagents
Install
One binary, one command.
$ cargo install ka-harness
$ ka --model ollama/qwen3.5:9b
Published on crates.io as ka-harness (≤ 0.2.11 shipped as ka-agent) · Requires Rust 1.85+ · full installation guide
Under the bandages
A pure engine, wrapped thin.
One-way dependencies: the engine knows nothing about terminals, TOML, or HTTP. Surfaces consume it, never the other way around.
ka-harness
the binary · TUI, serve, acp
ka-term
ratatui surface
ka-protocol
Command / Event wire
ka-dialect
catalog + 3 wires
ka-strand
append-only sessions
ka-index
FTS5 strand search
ka-sandbox
Linux fs sandbox
ka-engine
engine · turn machine
Turn machine: Receiving → Speaking → Acting → Settling · every state an append-only record · read the architecture →