Goal mode / 01
Goal mode
Give Dirac a /goal and walk away, it will continue working on it for hours or days without drift. The goal can run autonomously and pause only when it needs your input.
OPEN-SOURCE CODING AGENT
Goal mode / 01
Give Dirac a /goal and walk away, it will continue working on it for hours or days without drift. The goal can run autonomously and pause only when it needs your input.
Dirac can extend itself / 02
Build new tools tailored to your workflow on the fly. Use /new-tool with tool description you want, Dirac will build the tool and make it available right away, within the same conversation.
Low-verbosity response setting / 03
Models speak less.
Steer it as it works / 04
Something occurred to you after the task started? Send Dirac a message anytime, it will pass on the message to the model with the next tool response without disturbing the task.
Utility model / 05
Use a separate cheaper utility model to take expensive tasks such as context compactions or new task creations off of the main model's plate.
No more approval fatigue / 06
The utility model can be configured to act as a first pass for all permission requests that would otherwise come to you. It will follow the exact permission policy you give it, and approve the request when safe, escalate to you when unsafe. Auto-approvals will leave an entry in transcript along with approval reason.
Anchored file editing / 07
Dirac uses a custom hash-anchoring protocol that makes code editing extremely efficient. Instead of using search-replace, it uses stable line anchors so model can say 'replace the text between anchor X and anchor Y with this new text'.
Cider§async load(userId: string) {
Quartz§ const user = await this.store.get(userId)
Harbor§ return this.hydrate(user)
AST code inspection / 08
Dirac leverages the underlying syntax trees to perform precise code inspection. For example, model can use inspect_ast('outline', 'utils/db.py') to get all classes and methods defined in a list of files, inspect_ast('implementation', 'utils/db.py', 'DBManager::init_db()') to extract a single method.
AST code manipulation / 09
Dirac can replace a function like edit_ast('replace, 'utils/db.py', 'replacement', '{code}') or rename 100s of symbol like edit_ast('rename', 'src/', 'old_name', 'new_name') in one call.
Parallel code edits / 10
Dirac tooling protocol enables and encourages models to perform multiple file edits together.
Concurrent subagents / 11
Subagents are a first class citizens that can do (almost) everything the main task can do. Dirac's infra detects any file staleness at edit time. The subagents can have their own tools, prompts, timeouts and can inherit the context from parent.
Ask Dirac questions about itself / 12
Every Dirac build ships with source, so you can simply use '/askDirac' to ask questions about the version of Dirac you are using.
Opportunistic first request enrichment / 13
Dirac detects filenames, symbols, function names, directory paths etc from the first prompt you send, and before it reaches the agent, Dirac enriches the model's context to save on tool calls.
Multi-file change review / 13
Instead of reviewing multiple separate changes (when auto-approve is disabled), Dirac renders all changes in a single diff view.
Get started / 14
Install Dirac, connect your preferred model provider, and give it a real task.
Install your interface. Use Dirac in VS Code or from the terminal.
Connect a model. Choose a provider, add its API key, and select a model.
Start with the outcome. Describe the change you want, or begin with /goal for autonomous work.
Choose how you work
The extension and CLI share the same agent core. Pick the interface that fits your workflow.
Both guides cover provider credentials, model selection, and your first task.
0114
Published evidence / complete comparison
Public-repository refactoring suite
Scroll horizontally to inspect every agent →
| Task (repository) | Files | Cline | Kilo | Ohmypi | Opencode | Pimono | Roo | Dirac |
|---|---|---|---|---|---|---|---|---|
| DynamicCache transformers | 8 | Correct$0.37 | No resultN/A | Incorrect$0.24 | Correct$0.20 | Correct$0.34 | Correct$0.49 | Correct$0.13 |
| IOverlayWidget vscode | 21 | Correct$0.67 | Incorrect$0.78 | Correct$0.63 | Correct$0.40 | Correct$0.48 | Incorrect$0.58 | Correct$0.23 |
| addLogging vscode | 12 | Incorrect$0.42 | Correct$0.70 | Correct$0.64 | Correct$0.32 | Correct$0.25 | Incorrect$0.45 | Correct$0.16 |
| datadict django | 14 | Correct$0.36 | Correct$0.42 | Incorrect$0.32 | Correct$0.24 | Incorrect$0.24 | Correct$0.17 | Correct$0.08 |
| extensionswb_service vscode | 3 | No resultN/A | Correct$0.71 | Correct$0.43 | Correct$0.53 | Correct$0.50 | Correct$0.36 | Correct$0.17 |
| latency transformers | 25 | Correct$0.87 | Incorrect$1.51 | Correct$0.94 | Correct$0.90 | Correct$0.52 | Correct$1.44 | Correct$0.34 |
| sendRequest vscode | 13 | Incorrect$0.51 | Correct$0.77 | Correct$0.74 | Correct$0.67 | Incorrect$0.45 | Correct$1.05 | Correct$0.25 |
| stoppingcriteria transformers | 3 | Correct$0.25 | Correct$0.19 | Correct$0.17 | Correct$0.26 | Correct$0.23 | Correct$0.29 | Correct$0.12 |
| Total correct | — | 5/8 | 5/8 | 6/8 | 8/8 | 6/8 | 6/8 | 8/8 |
| Average cost | — | $0.49 | $0.73 | $0.51 | $0.44 | $0.38 | $0.60 | $0.18 |
Public GitHub repositories, a clean slate for every run, zero intervention, a standardized model and configuration, plus local lint and syntax verification.
The $0.53 comparison baseline is the arithmetic mean of the six other agents’ published average costs. Dirac’s $0.18 average is 64.8% lower.
A Cline cache-read accounting bug slightly underreports the Dirac and Cline cost figures.
The Terminal-Bench-2 score used gemini-3-flash-preview; tooling beyond the agent itself also
contributes to that result.