A DeepSeek-nativecoding agent,for your terminal.
§00 · Reasonixv0.50.0 · open source
A DeepSeek\-native
coding agent, for your terminal.Reasonix talks straight to api.deepseek.com. The loop is append-only, engineered around DeepSeek's byte-stable prefix cache — long sessions hold 90%+ cache hit and input-token cost collapses to \~1/5. Terminal-first, leave it running.
94%Cache Hit
2.5×Cost Down
2837Tests
MITLicense
\~/app · reasonix code
sessionevents+
›npx reasonix code
⏺ reasonix 0.50.0 · model: deepseek-v4-flash · workspace: \~/app
⏺ cache: 94.2% hit · session: 18m23s · cost: $0.043
›fix the case-sensitivity bug in findByEmail
▸ tool<search\_files> → src/users.ts, src/users.test.ts
▸ tool<read\_file> → src/users.ts (412 chars)
▸ thinking … reasoning on · /effort high
src/users.ts
<<<<<<< SEARCH
return users.find(u => u.email === email);
\=======
const needle = email.toLowerCase();
return users.find(u => u.email.toLowerCase() === needle);
\>>>>>>> REPLACE
▸ 1 pending edit · /apply to write · /discard to drop
›/apply
›
§01· Install
Two steps. No global install.
Node ≥ 22 on macOS / Linux / Windows (PowerShell · Git Bash · Windows Terminal). The first launch walks you through pasting a DeepSeek API key.
npx (recommended)npmpnpmfrom source
$ npx reasonix codeCopy
// No global install — runs in your project dir
01 — API Key
Get a DeepSeek API key
Head to the DeepSeek platform and create a key. Pay-as-you-go; cached tokens bill at 1/5 of the regular rate.
$0.07 /Mtok in · $0.014 /Mtok cached
02 — Workspace
Enter your project
$ cd /path/to/my-project
// tools sandboxed to launch dir
03 — Run
Launch the TUI
$ npx reasonix code
// first-launch wizard wires up the key
Or — the desktop, no setup required.
Native Tauri client · bundled Node runtime · shares \~/.reasonix config. Multi-tab sessions, live cost / cache / token meters.
All platforms →Smart mirror download
§02· Three Pillars
Why DeepSeek\-native
Reasonix only targets DeepSeek because the loop's invariants are designed against DeepSeek's cache mechanics. Same model, same API — what changes is the engineering stance of the loop.
Cache-First LoopA byte-stable loop
P1
R1 Thought HarvestReasoning-chain harvest
P2
Tool-Call RepairTool-call repair
P3
Cache-First Loop
A byte-stable loop
DeepSeek's prefix cache fingerprints prompts from byte 0. The Reasonix loop is append-only — no reordering, no marker-based compaction — so the cached prefix survives every tool call.
94%cache hit · long sessions
01append-only— Messages and tool results are appended; history is never mutated
02no marker— No reliance on triggers like cache\_control markers
03stable order— Tool call ordering and timestamps are fully deterministic
04prefix-survive— Even with many tool dispatches, the prefix still hits
§03· Features
Engineering stance around the DeepSeek API.
A dozen-odd tools combine into what looks like a simple CLI — but every layer beneath is working to keep cache hit, cost, and stability where they need to be.
F-01
Terminal-native TUI
Not another IDE plugin. \`git diff\` handles diffs, \`ls\` handles file trees — your terminal is the workspace.
TypeScript + Ink TUI
F-02
V4 two-tier
V4-Flash by default for cheap iteration; \`/pro\` lifts a single turn to V4-Pro; \`/preset max\` makes the whole session run on Pro.
Flash by default · /pro on demand
F-03
MCP first-class
One line — \`--mcp "name=cmd args"\` — and an external server is wired in; its tools merge into the same registry under a prefix.
stdio · SSE · Streamable HTTP
F-04
Sandbox + plan gate
Every built-in tool is sandboxed to the launch dir; \`/plan\` puts the session behind a read-only audit gate — no writes until the plan is approved.
Sandbox + /plan gate
F-05
Composable skills
Drop a Markdown file in \`.reasonix/skills/<name>.md\`; frontmatter supports \`runAs: subagent\` and \`allowed-tools\` for isolated execution.
Markdown skill scripts
F-06
Replay & events
Every event hits disk — replay any past session, run stats on token / cache / cost, audit your loop's behaviour.
reasonix replay / events / stats
§04· Configure
Extensions, memory, config — plain text is enough.
Reasonix collapses extensibility into a handful of well-defined directories and files. No registries, no magic — everything is readable, diffable, git-trackable plain text.
/mcp
Model Context Protocol
External tool servers
/skills
Skills
Reusable Markdown playbooks
/memory
Memory
Project + global memory
/config
Config
Global + project config
/slash
Slash Commands
TUI shortcut commands
Every path and command shown lives in esengine/DeepSeek-Reasonix.
Skills · Reusable Markdown playbooks
A skill is a Markdown file with frontmatter that crystallises "how to do X" into something callable. \`runAs: subagent\` runs it inside an isolated sub-agent; \`allowed-tools\` restricts which tools it can call.
- Project: <project>/.reasonix/skills/<name>.md
- Global: \~/.reasonix/skills/<name>.md
- /skill new <name> scaffolds a template
- \`runAs: subagent\` runs the body in an isolated sub-loop
- Cache-First Loop · byte-stable prefix
- R1 Thought Harvest · scavenge escaped tool calls
- Tool-Call Repair · schema-aware self-heal
- MCP first-class (stdio / SSE / HTTP)
- Skills · Markdown frontmatter scripts
- Native Tauri desktop
- /skill new <name> scaffolder
- setup wizard theme picker + live preview
- "did you mean /…?" fuzzy correction
- install-source-aware \`reasonix update\`
- zh-CN coverage extended to card components
- reasonix init · project scaffolder CLI
- Cross-device context sync
- Plugin system (.claude-plugin/ compatible)
- Repo map · semantic repository index
- TUI light theme
- Multi-agent collaboration · persistent workers
- Cross-provider orchestration (codex + deepseek)
- Composer voice input
- Hosted service mode
- More-language i18n coverage
.reasonix/skills/review-pr.md Copy
--- description: Review the current branch diff against main runAs: subagent allowed-tools: [run_command, read_file, grep_files] --- You are a strict code reviewer. Steps:
1. Run `git diff main..HEAD` to get the change. 2. For each modified file, read_file to load context. 3. Output a structured review: - blockers (must fix) - suggestions (improvements) - nits (style) 4. Do not write files. Do not run tests.
Only focus on the code touched by this diff — don't go off-topic.
invoke Copy
Inside the TUI
› /skill run review-prOr just ask — the model can trigger it on its own
› please review the current branch§06· Community
Community-driven, fully open source.
MIT-licensed, public roadmap, open Discussions. Help push the engineering baseline for reasoning-type agents higher.
Github Stats · live
6,855stars· forks 387 · open issues 174
Star on GitHub Read sourceJoin discussions
Open-source contributors
core · plugin · docs · translation
ESGTCTBEEVT1PAWAFODIKACVWVLIJ3ORYODADOADUKMRZEEZ+more
Want to be next? Read CONTRIBUTING.md and pick up a good first issue.
§07· Roadmap
A public product cadence.
Every milestone lives in the GitHub Discussions wishlist. Issue votes shape priority; PRs decide pace.
§08· FAQ
Frequently asked.
Still stuck? Open a thread in GitHub Discussions.
01Why DeepSeek only? Can I swap to Claude / GPT?
It's a design choice, not a limitation. DeepSeek's prefix cache fingerprints prompts from byte 0; the Reasonix loop is engineered around that invariant — long sessions hold \~94% cache hit. Pointing at an Anthropic-compatible endpoint gets you cheap tokens but breaks the cache\_control markers. Generic backends (Aider / Cline / Continue) compress history, which destroys byte stability. Coupling to one backend is the feature.
02Is it free?
Reasonix itself is MIT-licensed and free. The DeepSeek API key is paid: V4-Flash is $0.07/Mtok uncached and $0.014/Mtok cached. In long sessions the bill typically lands at \~1/3 of comparable generic tooling.
03Will there be an IDE plugin?
No. Reasonix is terminal-first. \`git diff\` does diffs; \`ls\` does file trees. The desktop is a visual companion to the CLI, not a Cursor replacement.
04Can I point it at a self-hosted / private DeepSeek endpoint?
Yes. Since 0.30 we accept non-standard key prefixes for self-hosted DeepSeek endpoints. Just point \`baseUrl\` at your internal address — the loop, cache strategy, and tool protocol are unchanged.
05How does the CLI relate to the desktop?
Same loop, same protocol, same \`\~/.reasonix\` config. The desktop (Tauri) bundles its own Node runtime — no separate npm install. Multi-tab sessions, side panel listing files this session read or wrote, live cost / cache / token meters along the bottom.
06How do I write my own skill?
No remote registry — just write a file. Inside the TUI run \`/skill new my-skill\` to scaffold a project-local skill; add \`--global\` to put it under \`\~/.reasonix/skills\` for reuse across projects. Skills are Markdown with frontmatter (description, runAs, allowed-tools); \`runAs: subagent\` runs the body in an isolated sub-loop.
07Are tool calls safe?
Every built-in tool (\`read\_file\` / \`write\_file\` / \`edit\_file\` / \`run\_command\` …) is sandboxed to the launch directory or whatever you set via \`--dir\`. SEARCH/REPLACE edits queue as pending; nothing hits disk until you \`/apply\`. \`/plan\` mode is a read-only audit gate — no writes allowed until the plan is approved.
08Can I switch working directories mid-session?
No — memory paths would tangle with the stale root. Exit and relaunch with \`reasonix code --dir <path>\`.