Darce
The coding agent you can undo.
Darce works in your terminal with 250+ models. Every change it makes, even what its shell commands did,
rolls back with /undo. Anything risky asks first.
npm install -g darce-cli
darce
The first run lets you try it straight away with 10 free requests, no account needed. When you want more, darce signup creates a free account (25 requests a month, no card) and keeps your history. Needs Node.js 22+.
What makes it different
- Undo anything. Every step is a checkpoint, including files a shell command created, changed or deleted, not just the agent's own edits.
/undo steps back one change; /rewind (or Esc twice) scrubs through the whole session. In a git repo it uses private refs and never touches your branch, index or stash.
- It asks before anything risky. Every command is scored before it runs. Reading runs straight away; deleting, force-pushing, installing or piping the internet into a shell waits for you, with the reason shown.
- Swarms.
/swarm <task> has a lead agent split the work into 2-4 independent parts. Each runs as its own agent in a separate git worktree, at the same time, and the results merge back in one step (/undo reverts the lot).
- Model derby.
/derby <task> races three models on the same task in separate worktrees. Compare their diffs, test results and cost, then keep the one you'd merge.
- 250+ coding models. Claude, GPT, Gemini, Qwen, DeepSeek, Kimi, GLM, Grok and more, live from OpenRouter, filtered to models that can actually drive an agent. Switch mid-task with Shift+↑/↓.
- It tells you why. When a fix hinges on something you can't see in the code (a language quirk, a React rule, async ordering, SQL injection), Darce ends with a short WHY note so you spot it next time. Routine edits get none.
See what it's touching
/brain opens a live view of your project in the browser. The file Darce is working on sits in the middle, with what it imports on the left and what imports it on the right. When Darce changes a file, everything that depends on it lights up, so you can see the reach of each edit as it happens. The activity column lists every step, and the code panel shows the exact diff. It runs on your machine only.
What else it does
- Threads. The agent can hand research to sub-agents with their own context; several run in parallel.
/threads shows what each one did.
- See inside its head.
/brain opens a live map of your codebase in the browser. Files are dots grouped by folder and wired by imports; as Darce works, reads glow, edits pulse orange and ripple out to every file that depends on them, and a timeline replays the whole session with diffs. Local only.
- It can talk. Turn on
/voice and Darce speaks up during long tasks in a natural ElevenLabs voice: "Alright, digging into that flaky checkout test", "Before I push this, can I run the migration? It can't be undone.", "Fixed it, two tests were sharing a database connection." Quick tasks stay quiet, and nothing ever waits on audio.
- Images. Generates icons, illustrations and hero images into your project, with transparent backgrounds when you ask (GPT Image by default; Gemini and Seedream on request).
- Resume.
/resume picks up any past conversation, in this folder or any other.
- Skills and memory. Drop a
SKILL.md into .darce/skills/ to teach it your team's way of doing things; it remembers your preferences across sessions.
- Screenshots. Paste one with Ctrl+V and Darce can see it.
- Second opinion.
/critic on has a model from another vendor review every edit.
- Scripts and CI.
darce -p "task" prints the result and exits.
Commands
/undo | Undo the last change, including what shell commands did (/u) |
/rewind | Scrub through every change and rewind files and conversation (also Esc twice) |
/diff | Every file Darce changed this session |
/swarm <task> | Split a task into parallel agents, each in its own worktree, then merge |
/derby [--models a,b,c] <task> | Race models on a task and apply the best result |
/threads [n] | This session's threads, or one thread's steps and report |
/model [search] | Pick or search models (Ctrl+P) |
/mode auto|ask|plan|full | Approval mode (Shift+Tab cycles) |
/resume | Continue a past conversation |
/why on|off | WHY notes (on by default) |
/brain | Live map of your codebase while Darce works (opens in your browser) |
/voice on|off | Darce talks you through long tasks (voices: erik, joe, zara, callum, charlotte) |
/critic on|off [model] | Second-opinion review of every edit |
/security [changes] | Security review of the project or your uncommitted changes |
/memory [forget <text>] | What Darce remembers about you and this project |
/skills | Available skills |
/suggest on|off | Predict your next prompt (Tab accepts) |
/compact, /clear, /cost | Shrink context, start over, session costs |
/debug | Timing of requests, tools and waits in this session |
/login, /account, /logout | Sign in, plan and usage, switch accounts |
/community | Join the Discord |
Keys: Esc stops Darce without quitting, Shift+Enter adds a line, Up/Down walks history, Ctrl+R searches it, Ctrl+O shows a step's full output.
Safety
auto (default) | run | run | ask | ask |
ask | run | ask | ask | ask |
plan | run | blocked | blocked | blocked |
full | run | run | run | run |
- Commands Darce runs don't see environment variables that look like credentials (
*_KEY, *_TOKEN, *_SECRET, DATABASE_URL…). Allow one with "passEnv": ["GH_TOKEN"] in ~/.darcerc.
- Known secret formats are redacted from tool output before anything reaches a model.
- Scripts the rules would run unasked (
npm run x, node scripts/x.js, make y) get a second look first: Darce reads the real package.json script, and asks a fast classifier (TypeSafe Jev, via api.darce.dev) whether running it changes anything outside your machine, given the command, the script line and the start of the file it runs. It can only make Darce more careful. Turn it off with "riskCheck": false.
- A repository's own
.darcerc, instruction files and skills can't change your approval mode, endpoints or keys, and your own skills take precedence over a repository's.
- Your key, history and sessions are stored readable only by you.
Models
The picker (/model) opens with your recent models, then OpenRouter's live most-popular ranking. It lists models that can drive a coding agent: tool calling, a 64k+ context, current generation. Any other model still works by name:
/model sonnet-5.5 # switch by name
/model kimi # search; switches if there's one match
darce --model openai/gpt-5.6-sol
Pricing
| Price | Free | $15/month | $65/month |
| Requests | 25/month | 500/month | 2,500/month |
| Models | Fast open models (Qwen, DeepSeek, Gemini Flash…) | Most models, including Claude Sonnet | Every model, including Opus |
Every plan gets every feature. Upgrade with /upgrade or at cli.darce.dev; cancel any time.
Config
Everything is optional; darce sets up ~/.darcerc on first run.
{
"mode": "auto",
"router": { "default": "anthropic/claude-haiku-5.5" },
"gears": ["qwen/qwen3-coder-next", "qwen/qwen3-coder", "deepseek/deepseek-v4-pro", "anthropic/claude-sonnet-5.5"],
"derbyModels": ["anthropic/claude-sonnet-5.5", "openai/gpt-5.6-sol", "google/gemini-3.1-pro-preview"],
"critic": false,
"why": true,
"passEnv": ["GH_TOKEN"]
}
Skills
A skill is a folder with a SKILL.md:
---
name: deploy
description: How this team deploys the API. Use when asked to ship or release.
---
1. Run `make test`.
2. ...
Darce looks in ~/.darce/skills/ and ~/.claude/skills/ first, then the project's .darce/skills/ and .claude/skills/, and installed Claude Code plugins.
Darce is built in public by one developer. Questions, ideas, bugs, or something you built with it: join the Discord or type /community inside Darce. See CHANGELOG.md for what's new.
Contributing
git clone https://github.com/AmerSarhan/darce-cli.git
cd darce-cli
npm install
npm run dev
npm test
npm run build
Issues and pull requests are welcome. Good first issues are labelled good first issue.

MIT License · cli.darce.dev