Cache-first loop
Append-only history. No in-place mutation, no marker-based compaction. The byte prefix survives every tool call — DeepSeek's prefix-cache keeps hitting turn after turn.
Engineered around DeepSeek's prefix-cache so token costs stay low across long sessions. Custom cell-diff renderer. MCP first-class. Open source.
$ npx reasonix code
The loop is organized around four architectural pillars. Each one solves a problem generic agent frameworks don't even see — because they were designed for a different cache mechanic.
Append-only history. No in-place mutation, no marker-based compaction. The byte prefix survives every tool call — DeepSeek's prefix-cache keeps hitting turn after turn.
Distills reasoning_content into a typed plan state — subgoals,
hypotheses, uncertainties, rejected paths. Signal kept, noise dropped.
Schema flatten · JSON repair · scavenge from <think> ·
truncation. Four strategies that handle DeepSeek-specific quirks generic
loops mistake for model errors.
Cache-safe folding · aggressive-fold tier · summary-on-exit · model-aware budgets. The loop manages context size without breaking prefix stability.
Every layer is tuned around DeepSeek's specific cache mechanic and pricing. Coupling to one backend is the feature, not a limitation.
MIT licensed and community-developed. Scoped good first issue
tickets with code pointers and acceptance criteria. Real PRs from real
contributors.
Sign up at platform.deepseek.com and create a key.
No install needed.
cd my-project
npx reasonix code
First run walks you through a short wizard — paste API key, pick a preset, optionally attach MCP servers.
The agent proposes edits as reviewable blocks — nothing hits disk until
you /apply. Plan mode lets you stage multi-file changes
before committing any.
Requires Node ≥ 22. macOS, Linux, Windows (PowerShell · Git Bash · Windows
Terminal). Press Esc anytime to abort; /help for the
full slash-command list.
Twelve concrete capabilities. The loop is the foundation; everything below is what you get on top of it.
Custom TUI runtime built on Yoga. No Ink dependency. Wide-char, emoji, bracketed paste, and resize handled cleanly across platforms.
Stdio and Streamable HTTP transports. Tools, resources, and prompts.
In-app browser to inspect any server's surface, plus
--mcp "name=cmd" on the fly.
Review proposed edits before they touch disk. Approve, refine, or reject. Plan checkpoints persist across runs so you can resume mid-review.
allow · ask · deny per-tool.
Granular shell command rules. Interactive prompts you can teach.
Companion web view at localhost. Live cache hit rate, cost
ticker, session timeline, MCP health — all in one place.
Per-workspace, named, resumable. --resume picks up exactly
where you left off — system prompt, history, plan state.
Shell commands fire on lifecycle events. Drop-in skill packs spawn sub-agents. Project memory the agent reads on every turn.
reasonix index builds an embedding index your agent can
query. Local Ollama or DeepSeek-hosted embeddings.
Cursor-style session-scoped rollback for AI edits. Never pollutes git history; the checkpoint stack is yours alone.
/effort knob
Switch reasoning depth per turn. max for the gnarly,
low for routine. Slash command and CLI flag.
reasonix replay plays a recorded session back through the
renderer — useful for bug reports, demos, and audits.
events.jsonl sidecar with reducers and a
reasonix events CLI. Build dashboards, audits, or your own
analytics.
We don't ship benchmark numbers in marketing copy — they move with model pricing and harness changes, so they live with the harness instead of the README. Reproduce on your own machine:
git clone https://github.com/esengine/reasonix.git && cd reasonix && npm install
npx reasonix replay benchmarks/tau-bench/transcripts/t01_address_happy.reasonix.r1.jsonl
npx reasonix diff \
benchmarks/tau-bench/transcripts/t01_address_happy.baseline.r1.jsonl \
benchmarks/tau-bench/transcripts/t01_address_happy.reasonix.r1.jsonl
Each committed JSONL transcript carries per-turn usage,
cost, and prefixHash. Reasonix's prefix hash stays
byte-stable across every model call — that's the whole game.
npx reasonix code [path] # coding mode scoped to path
npx reasonix chat # interactive chat (saved config)
npx reasonix run "ask anything" # one-shot, streams to stdout
npx reasonix doctor # environment health check
npx reasonix replay <file.jsonl> # re-render a recorded session
npx reasonix diff a.jsonl b.jsonl # compare two transcripts
npx reasonix events <name> # query the event log
npx reasonix stats # cross-session usage
npx reasonix index # build semantic embedding index
npx reasonix mcp inspect <spec> # probe one MCP server
npx reasonix mcp list # list configured MCP servers
npx reasonix prune-sessions # clean up old sessions
Common flags:
--effort <max|high|medium|low> # reasoning depth for the run
--model <id> # explicit DeepSeek model id
--mcp "name=cmd args…" # attach an MCP server (repeatable)
--session <name> # named session
--resume # pick up the latest session for this workspace
--new # force a fresh session, preserve old
--no-config # ignore ~/.reasonix/config.json (CI)
Reasonix is open source and community-developed. Every avatar on the wall below is a real PR that shipped — not a sponsorship slot.