A DeepSeek-nativecoding agent,for your terminal.

esengine.github.io · 2026-05-25 · by Long Nguyen ·generic
Open-source AI coding agent for your terminal, engineered around DeepSeek's prefix-cache so token costs stay low across long sessions. MCP first-class · plan mode · cache-first loop · MIT licensed.

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.

Get started →Download desktop

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
  • .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-pr

    Or 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.

  • 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

§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>\`.

esengine.github.io · 41 links

Comments (0)

No comments yet