Injects only the context your task needs. No prompt bloat. Single binary, no runtime.
See it in action
Open any popular agent and inspect the raw request. You'll find the same wall of tokens sent on every turn — whether you're writing Java or React, fixing a typo or designing an architecture.
| Gemini CLI | OpenCode | zap | |
|---|---|---|---|
| Spring Boot request | 4,096 tokens | 2,003 tokens | 1,889 tokens |
| React request | 4,096 tokens | 2,003 tokens | 1,661 tokens |
| Prompts identical? | ✅ Yes — same bytes | ✅ Yes — same bytes | ❌ No — different skill |
| Java conventions in prompt? | ❌ None | ❌ None | ✅ 650 tokens |
| React conventions in prompt? | ❌ None | ❌ None | ✅ 422 tokens |
Gemini CLI sends the same 4,096-token prompt for both tasks. The word "java" does not appear anywhere in its 68,410-character prompt file. OpenCode also ships a static provider-specific prompt. Zap changes the prompt itself based on the job — which means less prompt waste, faster turns, and more room for your actual code, logs, stack traces, and diff context.
Six interlocking systems — each designed so every token in the context window earns its place.
Skills are markdown files injected surgically only when your message triggers them. A Rust question gets the Rust skill. A greeting costs 31 tokens, not 2,000.
Tree-sitter + SQLite map of your repo — symbols, function calls, imports, and PageRank-ranked files. The model answers "who calls X" or "what breaks if I rename Y" in one query instead of ten greps.
Learn more →See exactly what's in the context window. Remove stale messages with /context drop — without starting a new session.
Written in Rust. No Python venv, no Node.js, no Docker. Cold start in milliseconds. Drop it on your PATH and it works.
Learn more →MCP servers stay pending at startup. Tool schemas only enter context when explicitly needed — not 10,000 tokens dumped on every turn.
Learn more →Works with Claude, Gemini, OpenAI, DeepSeek, and local models via LM Studio or Ollama. Switch providers mid-session with /provider.
Keep one default model, then route coding, review, explain, or search tasks to different models automatically with [model_routes].
codex/gpt-5.5 for coding, claude-opus-4-8 for review, and keep claude-sonnet-4-6 as the default. zap switches for that turn only, then restores the session model.At the end of every session, zap asks the LLM to write down what should happen next. Those notes are stored in .zap/context.md and session_log.md. At next startup, the last 3 sessions' bullets are injected into the system prompt automatically — so the model always knows where you left off.
Use TUI scheduler commands like /schedule 1h ... or /schedule 17:30 ... to run recurring goals, inspect active jobs, and cancel them when you're done.
The public roadmap lives in the README roadmap section. Shipped work is recorded in the changelog / feature registry. Upcoming work and discussion should happen in GitHub Issues.
Pick your platform. No runtime dependencies — just a single binary.
Pre-built binary, installed to ~/.local/bin. Works on both Apple Silicon and Intel Macs.
Or configure Gemini, OpenAI, or a local model in ~/.agent.toml.
Inside the REPL, run /init on first use to let zap learn your codebase.
Pre-built binary, installed to ~/.local/bin. Supports x86_64 and arm64.
Pre-built binary, installed automatically.
Open source, MIT licensed. Zero telemetry. Powerful enough for real multi-step engineering work — but still easy to install, inspect, and control.