Every feature built for developers who ship
CruxCLI is a provider-agnostic terminal AI coding agent with 24 task-specific modes, per-mode token budgets, workspace checkpoints, client/server architecture, LSP integration for 30+ languages, and MCP plugin support. 1,204 tests passing, 13/13 packages typechecking.
Mode → Model Tier Mapping
24 task-specific modes each map to a model tier. When you ask CruxCLI to review code, it picks a strong reasoning model. When you ask it to format imports, it picks a fast cheap model. You control cost without micromanaging model selection.
No other terminal agent does this. OpenCode, Claude Code, Gemini CLI, and Codex CLI all use a single model for every task regardless of complexity.
cruxcli.jsonc
{
"modes": {
"code-review": {
"tier": "strong", // Opus, GPT-5, Gemini Ultra
"budget": 50000
},
"format": {
"tier": "fast", // Haiku, GPT-4o-mini, Flash
"budget": 5000
},
"debug": {
"tier": "strong",
"budget": 80000
}
}
} Token Budget System
Per-mode token budgets replace step-count limits. Every mode has a configurable token budget with a warning threshold at 75% and a hard limit at 90%. When the agent approaches the limit, it wraps up gracefully instead of stopping mid-edit.
Step counts are a blunt instrument: 10 tool calls might use 500 tokens or 50,000. Token budgets measure actual cost.
Token budget in action
> debug failing test in auth module
Mode: debug (tier: strong, budget: 80,000 tokens)
[============================----] 72% (57,600 / 80,000)
⚠ Approaching token limit — wrapping up
Found: race condition in session refresh.
Applied fix, all 47 auth tests pass.
Tokens used: 63,200 / 80,000 Workspace Checkpoints
Before every destructive tool call (edit, write, bash, patch), CruxCLI takes a git-based snapshot. Up to 50 checkpoints per project. Restore to any point with cruxcli checkpoint restore.
Not a full file copy. Built on git tree hashing for minimal storage overhead. Your project stays clean.
Terminal
$ cruxcli checkpoint list
# Time Mode Files Changed
1 14:23:01 refactor src/auth/index.ts, src/auth/session.ts
2 14:22:45 debug src/server/routes.ts
3 14:21:30 code src/cli/cmd/run.ts
$ cruxcli checkpoint restore 2
Restored workspace to checkpoint #2 (14:22:45) Client/Server Architecture
CruxCLI starts a local HTTP server (Hono-based, port 4096). The TUI, web app, desktop app (Tauri/Electron), and VS Code extension all connect as clients. Run the agent on a remote machine and drive it from your phone.
Only CruxCLI and OpenCode have this architecture. Claude Code, Gemini CLI, and Codex CLI are monolithic processes.
Architecture
cruxcli serve → HTTP server on :4096
Clients:
├── TUI (cruxcli — default)
├── Web UI (http://localhost:4096)
├── VS Code (CruxCLI extension)
├── Desktop (Tauri / Electron)
└── Custom (any HTTP client) LSP Integration
Built-in Language Server Protocol client supporting 30+ language servers. The agent gets real diagnostics, symbol lookup, and go-to-definition — not just string matching. Auto-detects the right server per language.
Only CruxCLI and OpenCode have LSP integration. Every other terminal agent relies on regex and string matching for code understanding.
LSP diagnostics in agent context
> fix type errors in session module
LSP: typescript-language-server
3 diagnostics found:
src/session/index.ts:42 — Type 'string' not assignable to 'SessionId'
src/session/llm.ts:108 — Property 'model' missing
src/session/status.ts:23 — Argument of type 'null'
Fixing all 3... Done. 0 diagnostics remaining. Plugins and MCP
Full MCP (Model Context Protocol) client supporting stdio, SSE, and StreamableHTTP transports. Connect external tool servers, databases, APIs. Plugin API lets packages contribute custom tools and hook into the execution lifecycle.
Built-in plugins for Codex auth, Copilot auth, and GitLab auth. Add third-party plugins with cruxcli plugin add.
cruxcli.jsonc — MCP config
{
"mcp": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp-server"],
"transport": "stdio"
},
"postgres": {
"url": "http://localhost:3001/sse",
"transport": "sse"
}
}
} Provider-Agnostic
Works with 75+ LLM providers out of the box. Anthropic, OpenAI, Google, Azure, Bedrock, Vertex, OpenRouter, xAI, Mistral, Groq, DeepInfra, Cerebras, Cohere, TogetherAI, Perplexity, Ollama, and more. Runtime model fetching from models.dev with offline fallback.
Switch providers by changing one environment variable. No code changes, no config rewrites.
Switch providers in seconds
# Use Anthropic
export ANTHROPIC_API_KEY=sk-ant-...
cruxcli
# Use OpenAI instead
export OPENAI_API_KEY=sk-...
cruxcli
# Use a local model via Ollama
export OLLAMA_HOST=http://localhost:11434
cruxcli CruxDev Integration
CruxCLI connects to the CruxDev convergence engine via MCP. CruxDev drives autonomous audit-fix-re-audit loops — the agent doesn't stop when it thinks it's done, it stops when two consecutive independent clean passes confirm it's done.
No other terminal agent has a convergence methodology. They all rely on the user to decide when code is complete.
CruxDev convergence loop
> converge BUILD_PLAN_001
Round 1: 12 issues found, 12 fixed
Round 2: 3 issues found, 3 fixed
Round 3: 0 issues found ✓
Round 4: 0 issues found ✓
Converged — two consecutive clean passes.
All 1,204 tests passing. CruxCLI vs generic agents
Feature comparison based on publicly available documentation as of March 2026.
| Feature | CruxCLI | OpenCode | Claude Code | Gemini CLI | Codex CLI |
|---|---|---|---|---|---|
| Open source | ✓ | ✓ | ✗ | ✓ | ✓ |
| Provider-agnostic | ✓ | ✓ | ✗ | ✗ | ✗ |
| Mode → model tier mapping | ✓ | ✗ | ✗ | ✗ | ✗ |
| Token budget system | ✓ | ✗ | ✗ | ✗ | ✗ |
| Convergence engine | ✓ | ✗ | ✗ | ✗ | ✗ |
| Workspace checkpoints | ✓ | ✗ | Worktree | ✗ | ✗ |
| Client/server architecture | ✓ | ✓ | ✗ | ✗ | ✗ |
| LSP integration | ✓ | ✓ | ✗ | ✗ | ✗ |
| Plugin API | ✓ | ✓ | ✗ | ✗ | ✗ |
| Custom modes | 24 modes | ✓ | ✗ | Plan Mode | ✗ |
| MCP support | ✓ | ✓ | ✓ | ✓ | ✗ |
| VS Code extension | ✓ | ✓ | ✓ | ✗ | ✗ |
Data sourced from official documentation and GitHub repositories. Last verified March 2026. See detailed comparisons →
Try CruxCLI today
One command to install. Bring your own API key. Start building.