Problem: The stable orchestrator reported success after approval even though the CLI, npm, and Desktop publication jobs were skipped through a transitive skipped dependency. The existing recovery dispatch also could not use a workflow fix without moving the already-published tags. Root cause: Each reusable publisher joined an orchestrated guard with a deliberately skipped standalone gate. The cache guard used an explicit status condition, but its descendants did not, so GitHub propagated the skipped ancestor through the dependency chain. Recovery also checked out and executed control scripts from the old release candidate. Fix: Add explicit success conditions to every affected publication stage, keep recovery authorization and verification on protected main-v2 while building the immutable historical tag SHA, and reject non-ancestor or mismatched tag sets. Add a stable postflight that verifies required CLI/Desktop release assets and the exact npm latest version so a no-op release cannot stay green. Verification: - bash scripts/release-workflows.test.sh - go run github.com/rhysd/actionlint/cmd/[email protected] -ignore 'label "windows-11-arm" is unknown' on all release workflows - bash -n on all changed release scripts - verify-stable-release-artifacts.sh against public v1.17.14 artifacts - ./scripts/cache-guard.sh - go test ./... - git diff --check
English · 简体中文 · Guide · Spec · Website · Discord
Important
Reasonix 1.0 is a ground-up rewrite in Go — this branch (
main-v2) is the new default and where development happens now. The earlier0.xTypeScript releases are legacy, living on thev1branch (maintenance only). See the migration guide.npm i -g reasonixstays the install command —1.0.0+ delivers the Go binary,0.xis the legacy TS build.
A DeepSeek-native AI coding agent for your terminal.
A config- and plugin-driven harness — a single static Go binary, tuned around DeepSeek's prefix cache so token costs stay low across long sessions.
Important
Community · 加入社区 — bilingual Discord for setup help (
#help/#求助), workflow showcases, and feature ideas. → https://discord.gg/XF78rEME2D
Features
- Config-driven. Providers, the agent, enabled tools, and plugins are all
declared in
reasonix.toml. No hardcoded models. - Multi-model & composable. DeepSeek ships as a preset; any OpenAI-compatible endpoint is a config entry, not new code. Optionally run two models together (executor + planner) in separate, cache-stable sessions.
- Plugin-driven. External tools run as subprocesses over stdio JSON-RPC (MCP-compatible). Built-in tools self-register at compile time.
- Cache-aware context maintenance. Startup injects a small stable environment summary, stale tool output is snipped/pruned before summary compaction, and the built-in tool schema contract is documented for regression review.
- Zero-friction distribution.
CGO_ENABLED=0single binary; cross-compile to six targets with one command. The only dependency is a TOML parser.
Install
npm i -g reasonix # any OS; pulls the prebuilt native binary
brew install esengine/reasonix/reasonix # macOS
Prebuilt archives (darwin|linux|windows × amd64|arm64) and SHA256SUMS are on
every GitHub release.
Code signing
Windows builds are code-signed with a free certificate provided by the SignPath Foundation, with signing through SignPath.io.
Build from source
make build # -> bin/reasonix(.exe)
make cross # -> dist/ (darwin|linux|windows × amd64|arm64)
Quick start
reasonix setup # manage providers in the user config
reasonix setup --local # optional: manage ./reasonix.toml
export DEEPSEEK_API_KEY=sk-... # or let setup save it to Reasonix home .env
reasonix # then run /init to generate AGENTS.md (project memory)
reasonix run "implement the TODOs in main.go"
reasonix run --model deepseek-pro "add unit tests for this function"
echo "explain this code" | reasonix run
Configuration
A minimal reasonix.toml — one provider and a default model — is enough to start:
default_model = "deepseek-flash"
[[providers]]
name = "deepseek-flash"
kind = "openai"
base_url = "https://api.deepseek.com"
model = "deepseek-v4-flash"
api_key_env = "DEEPSEEK_API_KEY"
Resolution order is flag > ./reasonix.toml > the user config file >
built-in defaults; starting with Reasonix v1.8.1, the user file lives at
~/.reasonix/config.toml on macOS/Linux and
%AppData%\reasonix\config.toml on Windows. See
Configuration paths for migration details and the
full config.toml / .env structure. Provider entries name secrets with
api_key_env; the secret values themselves live in Reasonix's global
<Reasonix home>/.env, shared by CLI and desktop. Project .env files are not
provider-key runtime fallbacks, but still feed workspace-scoped, non-provider
${VAR} expansion for MCP/plugin settings without importing Reasonix control
variables. Permissions, the sandbox, plugins (MCP), slash
commands, @ references, and two-model setup are all in the
Guide.
Documentation
- CLI reference — interactive and one-shot commands, structured output, resume, permission modes, and searchable pickers.
- Guide — configuration, permissions & sandbox, plugins
(MCP), slash commands,
@references, two-model collaboration. - Subagent profiles — create, share, preview, run, edit, and safely delete isolated agent profiles from desktop or CLI.
- Capability diagnostics —
reasonix doctor capabilities, desktop Settings → Diagnostics, and the/reasonix-guideskill for skills/hooks/MCP/plugin troubleshooting. - Recovery and Safe Mode — Guard diagnostics, configuration snapshots, native recovery, update rollback, and optional AI-assisted repair plans.
- Bot guide — connect Feishu, Lark, and WeChat bots from the desktop app, then use approvals, YOLO, and commands from IM.
- Spec — engineering contract: architecture, registries, data types, and roadmap.
- Task contracts & pause policy — structure complex requests with context, output boundaries, constraints, and when to ask.
- Tool contract — provider-visible built-in tool names, read-only flags, and schema snapshot guard.
- Migrating from 0.x — moving from the legacy TypeScript releases to the 1.0 Go rewrite.
- Checkpoints & rewind — the snapshot-based edit
safety net (Esc-Esc /
/rewind).
Star History
Support
If Reasonix has been useful and you'd like to say thanks, you can. It stays a coffee, not a contract — donations don't buy feature priority or change how issues get triaged.
- International — PayPal: paypal.me/yuhuahui
- 国内 — 微信支付(扫码)
Acknowledgments
A small list of folks whose work has shaped Reasonix the most — the current top 20 contributors by commit count. The full contributor graph is on GitHub.
| Contributor | Contributor | Contributor | Contributor |
|---|---|---|---|
| SivanCola | esengine | ttmouse | lifu963 |
| reasonix (anonymous) | HUQIANTAO | GTC2080 | light-front-theory |
| merge-order-check (anonymous) | Li-Charles-One | eghrhegpe | wufengfan (anonymous) |
| CVEngineer66 | dependabot[bot] | lanshi17 | SuMuxi66 |
| CnsMaple | cyq1017 | JesonChou | XTLine |
Also a separate thank-you to Bernardxu123 for designing the project logo, and to AIGC Link for promoting the project on XiaoHongShu.
MIT — see LICENSE
Built by the community at esengine/DeepSeek-Reasonix
