A terminal-native coding agent that writes, edits, debugs and tests real code — the hands-on pair-programmer that lives in your repo, not a linter on the sidelines. It runs your build-and-test loop until it's green, navigates by symbol via LSP, and talks to any model — Claude, GPT, Gemini or a local Ollama box. One static Rust binary.
wget
A text-only agent can only wget a URL — it gets an empty SPA shell and goes blind.
CSK drives a real Chromium on the target, logs in, and sees the rendered page — then snapshots whole VNC / RDP desktops an SSH-only agent can never reach.
| Capability | CSK | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|---|
| Any model — Claude · GPT · Gemini | ✓ native | ✓ via config | ✓ | ✓ |
| Runs local · hybrid · or fully cloud (Ollama · vLLM) | ✓ all three | Local via config | ✗ | ✗ |
| Terminal-native · headless for CI | ✓ | ✓ | ✗ Editor | Partial |
| Single static binary — no Node / Python | ✓ | ✗ Node | ✗ Electron | ✗ Extension |
| LSP symbol navigation | ✓ | Via tools | ✓ | ✓ |
| Build / test / fix agent loop | ✓ | ✓ | ✓ | Agent mode |
| Browser · remote · RDP "eyes" | ✓ | ✗ | ✗ | ✗ |
| Multi-instance mesh / agent team | ✓ | ✗ | ✗ | ✗ |
| Hardware — adb · serial · JTAG/SWD | ✓ | ✗ | ✗ | ✗ |
| Security scan + SBOM built in | ✓ | Via prompt | ✗ | ✗ |
| Price | -NA- | $$ subscription | $20+/mo | $10+/mo |
✓ = supported · ✗ = not supported · partial = limited or requires extra config. Comparison based on public documentation, 2026; capabilities evolve.
CS can route different tasks to the best AI for the job: Claude for code, ChatGPT for documentation, Gemini for analysis and diagrams.
Add [[chat_backends]] entries with skill tags and CS picks the right backend automatically.
OPENAI_API_KEY.GEMINI_API_KEY.claude (Claude Code) once in your browser to create the session at ~/.claude/.credentials.json. CS picks it up automatically.
platform.openai.com/api-keys → Create new secret key → copy it, then: export OPENAI_API_KEY="sk-proj-…"
aistudio.google.com/app/apikey → Get API key → Create API key → copy it, then: export GEMINI_API_KEY="AIza…"
opencode.toml (or coding-sidekick.toml) in your project root# Primary: Claude — auto-detected from ~/.claude/.credentials.json default_provider = "anthropic" default_skills = ["coding", "tools", "chat"] [providers.anthropic] model = "claude-sonnet-4-6" # OpenAI — key from OPENAI_API_KEY environment variable [providers.openai] api_key_env = "OPENAI_API_KEY" model = "gpt-4o" # Gemini — key from GEMINI_API_KEY environment variable [providers.gemini] api_key_env = "GEMINI_API_KEY" model = "gemini-2.0-flash" # Skill routing: GPT-4o handles writing tasks [[chat_backends]] id = "gpt-docs" provider = "openai" model = "gpt-4o" api_key_env = "OPENAI_API_KEY" skills = ["documentation", "writing", "translate", "chat"] cost_tier = 1 # Gemini handles research and analysis [[chat_backends]] id = "gemini-analysis" provider = "gemini" model = "gemini-2.0-flash" api_key_env = "GEMINI_API_KEY" skills = ["analysis", "research", "summarise", "chat"] cost_tier = 1 # Gemini image generation — diagrams, mockups [[imagegen_backends]] kind = "gemini" model = "imagen-3.0-generate-002" api_key_env = "GEMINI_API_KEY" skills = ["drawing", "diagram", "image", "mockup"] cost_tier = 1 # If Claude 429s, fall over to GPT, then Gemini on_rate_limit = "shift_then_wait"
on_rate_limit = "shift_then_wait" means if Claude hits its rate limit, CS automatically falls over to GPT-4o, then Gemini — no interruption. Skills also work across mesh nodes (see cs mesh) so a remote build server can serve --skill mac-build from your laptop.