Think. Review. Code. Safely.
A terminal-based AI coding agent with a built-in dialectic review pipeline. Every change goes through planning, critique, and synthesis before it reaches your codebase.
Dial Coder is an AI-powered CLI for developers. Instead of blindly applying AI-generated changes, Dial Coder runs them through a structured review pipeline that catches bugs, security issues, and missed edge cases before they land in your code.
The terminal interface gives you full control: ask questions, request edits, review diffs, and approve or reject every change.
- Dialectic Review Pipeline — Planner → Critic → Synthesizer → Reflector. Every non-trivial change gets reviewed by multiple agent perspectives.
- Four Execution Modes —
ask,quick,review,safe. Automatically selected based on task risk, or override manually. - Multi-Provider Support — Ollama (default), OpenAI, Anthropic, Gemini, Google GenAI, Ollama Cloud, and any OpenAI-compatible endpoint.
- 25+ Built-in Tools — File operations, shell execution, web search, semantic code search, memory, and MCP integration.
- Vision Support — Auto-detects images and switches to vision-capable models.
- Safety Classifier — Blocks dangerous operations (
rm -rf, destructive SQL, credential exposure) before execution. - Message Compaction — Four-tier progressive compaction (snip → micro → collapse → auto) keeps long sessions within token budgets.
- Sandboxed Execution — Optional Docker/Podman sandbox for untrusted commands.
npm install -g @dial-coder/clinpx @dial-coder/clidocker run --rm -it ghcr.io/dipankar/dial-coder:latestgit clone https://github.com/dipankar/dial-coder.git
cd dial-coder
npm install
npm run build
npm link packages/cliOllama (default, local, free):
# Start Ollama locally first
ollama pull llama3.3
# Then run
dialOpenAI:
export OPENAI_API_KEY="sk-..."
dial --auth=openaiAnthropic:
export ANTHROPIC_API_KEY="sk-ant-..."
dial --auth=anthropicOllama Cloud:
export OLLAMA_CLOUD_API_KEY="..."
dial --auth=ollama-cloudRecommended models: kimi-k2.6:cloud, glm-5.1:cloud
# Interactive mode
dial
# One-shot mode
dial -p "Refactor the error handling in src/utils/errors.ts"
# Review mode (full dialectic pipeline)
dial --mode=safe -p "Add input validation to the signup form"Dial Coder uses a dialectic pipeline for code changes. Instead of a single agent generating and applying edits, the pipeline splits work across specialized agents:
User Request
│
▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Proposer │───→│ Critic │───→│ Synthesizer │
│ (Thesis) │ │ (Antithesis)│ │ (Synthesis) │
└─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ Reflector │
│ (Learn) │
└─────────────┘
- Proposer — Generates a plan and proposed patches.
- Critic — Reviews the plan for bugs, security issues, missed edge cases, and style violations.
- Synthesizer — Reconciles the thesis and antithesis into a final, reviewed patch set.
- Reflector — Updates project memory (decisions, invariants, patterns) so future rounds are smarter.
| Mode | Pipeline | Use For |
|---|---|---|
Ask (?) |
None | Read-only questions, explanations, code review |
Quick (⚡) |
Proposer only | Fast, low-risk edits (typos, renaming) |
Review (◎) |
Proposer + Critic + Synthesizer | Medium-risk changes (refactoring, feature adds) |
Safe (🛡) |
Full pipeline + verification | High-risk changes (auth, payments, schema changes) |
Modes are automatically selected based on the task description, or you can force a mode with --mode=<mode>.
| Provider | Setup | Default Model | Free? |
|---|---|---|---|
| Ollama | ollama run llama3.3 |
llama3.3 |
Yes (local) |
| Ollama Cloud | OLLAMA_CLOUD_API_KEY |
kimi-k2.6:cloud |
Yes (with key) |
| OpenAI | OPENAI_API_KEY |
gpt-4.1 |
Pay-as-you-go |
| Anthropic | ANTHROPIC_API_KEY |
claude-sonnet-4-6 |
Pay-as-you-go |
| Gemini | GOOGLE_API_KEY |
gemini-2.5-pro |
Free tier |
| Google GenAI | OAuth or GOOGLE_API_KEY |
gemini-2.5-pro |
Free tier |
Ollama is the default. No API keys required.
Inside the interactive terminal:
| Command | Description |
|---|---|
/help |
Show all commands |
/clear |
Clear conversation history |
/compress |
Compact conversation to save tokens |
/stats |
Show token usage and cost |
/memory |
View project memory (decisions, invariants) |
/diff |
Show pending diffs |
/approve |
Approve and apply pending changes |
/reject |
Reject pending changes |
/exit |
Exit session |
Dial Coder exposes a rich tool set to the AI agent:
File & Search
view,edit,write,patch— File operationsglob,grep,ripgrep— Code searchls,pwd— Directory navigation
Execution
bash— Shell commands (sandboxed by default)fetch— Web requests
Integration
mcp— Model Context Protocol serversmemory_search— Semantic search over project memory
Configuration lives in ~/.dial/settings.json:
{
"model": {
"name": "llama3.3",
"provider": "ollama"
},
"security": {
"approvalMode": "suggest",
"sandbox": "docker"
}
}Set DIAL_API_KEY, OPENAI_API_KEY, or ANTHROPIC_API_KEY as environment variables for cloud providers.
npm install
npm run build
npm run test:ci # Run all tests
npm run preflight # Full CI check (lint, typecheck, build, test)See CONTRIBUTING.md for guidelines.
Dial Coder is a monorepo with three main packages:
@dial-coder/core— LLM adapters, tools, memory system, dialectic orchestrator@dial-coder/cli— Terminal UI, command handlers, configurationdial-coder-vscode— VS Code extension for IDE companion mode
Built with ❤️ by Dipankar and contributors.