Skip to content

Latest commit

 

History

History
294 lines (197 loc) · 27.5 KB

File metadata and controls

294 lines (197 loc) · 27.5 KB
title Battlemap
description How Nanocoder compares to other CLI coding agents, and why it is the right choice for local-first, privacy-respecting, community-led AI coding
sidebar_order 3

Nanocoder Battlemap

A beautiful privacy-first coding agent running in your terminal.

This is an honest comparison of Nanocoder against the most relevant CLI coding agents on the market. Honest meaning: where Nanocoder leads, this doc says so plainly; where parity exists, that is stated too; and where the project is genuinely behind, it is not hidden.

The short version: Nanocoder is the only collectively-owned, zero-telemetry, local-first coding agent in the terminal, and the most provider-diverse of the community-led options. It is not the biggest or the most feature-dense — OpenCode, Pi, and OMP are all larger projects, and this page says where they are ahead. The longer version is below.

What Nanocoder is

A CLI coding agent built by the Nano Collective, a community-led group of developers, designers, and maintainers building open-source AI tools for the people who use them. Not for profit. Not venture-backed. Not gated behind a paid tier. Built so that the power of agentic coding tools belongs to everyone, not just to whoever owns the closest GPU cluster.

The project rests on three purposes, in equal measure:

  • Community-driven. Owned by the Nano Collective, governed in public, contribution model written down. No backroom plan to monetize. No investor return to deliver. No paid tier ever.
  • Privacy-respecting. Zero telemetry. Zero tracking. No analytics product, no install ping, no usage metrics phoned home. What you do in Nanocoder stays in Nanocoder.
  • Local-first. Designed so the whole loop can run on your machine. Seven local server integrations documented as first-class providers, not as power-user escape hatches.

The features below are how those three purposes show up in practice.

Who we compare against

Eight tools, picked to cover the realistic alternatives a developer chooses between when they want a terminal coding agent:

  • Claude Code (Anthropic) - proprietary, the dominant polished CLI
  • OpenAI Codex CLI - OpenAI's official CLI agent
  • Gemini CLI (Google) - Google's official CLI agent
  • Aider - long-running OSS agent, file-edit oriented
  • OpenCode (anomalyco / formerly sst) - the closest OSS peer to Nanocoder
  • Crush (Charmbracelet) - Go TUI, single-binary distribution
  • Pi (pi.dev / earendil-works) - small-core OSS agent with the deepest extension API
  • OMP (oh-my-pi) - a Pi fork that went the opposite way: IDE tooling wired into the agent

Cursor, Cline, Continue, and Copilot Chat are excluded on purpose. They are IDE-native and play a different game.

The dimensions

Twelve axes grouped into four buckets:

  • Positioning / cost: license, pricing model, vendor lock-in
  • Capability: local model support, MCP, custom commands / extensibility, tool-calling approach, subagents / scheduled runs
  • Surface: interface, plain / non-TTY mode for CI
  • Project signals: GitHub stars, contributors, language / runtime, telemetry posture

Comparison matrix

Positioning / cost

Tool License Pricing Multi-provider
Nanocoder MIT Free, BYO key, no paid tier ever Yes (20+ providers: see below)
Claude Code Proprietary Subscription ($20-$200+/mo) or BYO key Any Anthropic-API-compatible endpoint via ANTHROPIC_BASE_URL (Anthropic, Bedrock, Vertex, Z.ai, Kimi, GLM, custom proxies)
Codex CLI Apache-2.0 BYO key or ChatGPT plan OpenAI-first; OpenAI-compatible providers configurable
Gemini CLI Apache-2.0 Free tier with Google sign-in, BYO key, Vertex Google-only
Aider Apache-2.0 Free, BYO key Yes (OpenAI, Anthropic, Google, Bedrock, Vertex, OpenAI-compatible)
OpenCode MIT Free + optional paid Zen / Go tiers Yes (75+ providers)
Crush FSL-1.1-MIT Free, BYO key Yes (many providers)
Pi MIT Free, BYO key or OAuth (Claude / ChatGPT / Copilot) Yes (20+ providers)
OMP MIT Free, BYO key Yes (60+ providers)

Nanocoder's provider list is the broadest of any community-led project here:

  • Native cloud: Anthropic, Atlas Cloud, ChatGPT / Codex, Google Gemini, GitHub Copilot, GitHub Models, Kimi Code, MiniMax Coding, Mistral, OpenAI, OpenRouter, Poe, Requesty, Z.ai, Z.ai Coding
  • Local: Ollama, llama.cpp, llama-swap, LM Studio, LocalAI, MLX Server, vLLM
  • Custom: any OpenAI-compatible endpoint

OpenCode and OMP both list more total providers in aggregate. Nanocoder's distinction is narrower and worth stating precisely: seven local servers documented as first-class providers with their own setup pages, rather than as entries in a config schema.

Ownership and governance

This is the metric most other comparisons skip. It matters: who owns the project decides whether it stays free, stays open, stays private, and whose interests it serves five years from now.

Tool Owner Backing Monetization model Long-term incentive
Nanocoder Nano Collective (community) None - not-for-profit None - no paid tier, no upsell, no growth target Serve the community that uses it
Claude Code Anthropic VC-backed (Google, Amazon; multi-billion valuation) Subscription + API revenue Grow Anthropic API usage
Codex CLI OpenAI VC-backed (Microsoft; multi-hundred-billion valuation) Subscription + API revenue Grow OpenAI API usage
Gemini CLI Google / Alphabet Public company API revenue + Google Cloud pull-through Grow Gemini + Vertex usage
Aider Paul Gauthier (solo / independent) None documented None (donations) Maintainer's discretion
OpenCode anomalyco (formerly SST) Venture-backed company Paid Zen / Go tiers Convert free users to paid
Crush Charmbracelet Private company (VC-backed) Free CLI; commercial parent now sells Charm Hyper coding-model subscriptions Strengthen Charm brand and Hyper pipeline
Pi earendil-works (Mario Zechner and collaborators) No disclosed VC None Maintainers' discretion
OMP Can Bölük; copyright Stencil Labs, Inc. No disclosed VC None documented Maintainer's discretion

Nanocoder is the only project in this survey that is collectively owned, non-profit, with no paid tier and no growth metric to feed. There is no backroom plan to monetize, no investor expecting a return, no eventual freemium split, no telemetry product hiding inside the binary. The project exists because the community wants it to.

Capability

Tool Local models MCP Extensibility Tool calling Subagents / scheduled
Nanocoder 7 local servers (Ollama, llama.cpp, llama-swap, LM Studio, LocalAI, MLX, vLLM) Client Slash + custom markdown commands, custom tools, Skills (bundles + flat-file), MCP, LSP, runtime model tuning Native function calling + XML fallback + JSON fallback (both fallbacks with malformed-output repair) Subagents + cron scheduler + event-driven triggers via per-project daemon
Claude Code None (cloud only) Client Slash commands, Skills, Hooks, Agent SDK Native Subagents + Routines (cloud cron)
Codex CLI Via OpenAI-compatible config Client Slash commands, AGENTS.md, Skills, lifecycle hooks Native Subagents; no cron
Gemini CLI Not documented Client Custom commands, Extensions, tools, hooks Native Subagents; no scheduler
Aider Ollama, LM Studio, llama.cpp None Slash commands only Diff / text formats (no native function calling) None
OpenCode Ollama, LM Studio, llama.cpp Client Markdown slash commands, plugins, custom tools Native Subagents; no cron
Crush Ollama, LM Studio via OpenAI-compatible Client (stdio / http / sse) Agent Skills Native None built-in
Pi Ollama, OpenAI-compatible Not documented TypeScript extensions (tools, commands, events, custom UI), Agent Skills, prompt templates, packages Native Subagents not documented; no scheduler
OMP Ollama, LM Studio, llama.cpp, vLLM, OpenAI-compatible Client 31 built-in tools, full LSP + DAP, MCP, skills Native Subagents; no scheduler

Nanocoder is the only tool in this survey that combines all four of: deep local-model support, MCP, subagents, and a local scheduler. That claim now rests mostly on the last one. OMP matches the first three and goes further on IDE integration (full LSP plus DAP against Nanocoder's LSP client). Claude Code has a scheduler, but it is cloud-only, tied to a paid subscription, and it has no local model story at all. Codex CLI, Gemini CLI, OpenCode, and OMP all ship subagents with no scheduler.

Where Nanocoder is genuinely alone is the trigger side: a per-project daemon (nanocoder daemon start) owns file-watch and cron sources, so Skills can subscribe to file.changed or schedule.cron events and run headless without the TUI being open. No other tool surveyed has an event-driven local trigger story.

Workflow features

Beyond the headline capability axes, Nanocoder ships the kind of day-to-day workflow features usually only seen in paid proprietary tools:

Feature Nanocoder Claude Code Codex CLI Gemini CLI Aider OpenCode Crush Pi OMP
Checkpointing (snapshot / restore) Yes Yes Partial Yes Via git Partial No No Yes
Context compression Yes Yes Yes Yes Partial Yes Yes Yes Yes
Session autosave + resume Yes Yes Yes Yes Yes Yes Yes Yes Yes
Task management (built-in) Yes Yes Partial Partial No Partial No No Not documented
File explorer (interactive) Yes No No No No Partial No No Not documented
Desktop notifications Yes Yes Partial Yes Yes Partial Yes No Not documented
Runtime model tuning Yes No Partial No No No No No No
Live diff preview (VS Code) Yes Yes Yes Yes Third-party Partial No No Not documented
Plan mode (preview without execution) Yes Yes Yes Yes No Yes No No Yes

Runtime model tuning at this scope (changing tool profiles, compaction strategy, native-tool-calling toggle, and model parameters at runtime) is unique to Nanocoder among the tools surveyed. Codex CLI is the only other tool that exposes any runtime parameter controls, and only for reasoning effort and verbosity.

Surface

Tool Interface Plain / non-TTY
Nanocoder TUI (Ink), VS Code extension with live diffs, ACP agent for editor integration, --plain shell Yes (--plain, run subcommand)
Claude Code TUI, VS Code, Cursor, JetBrains, Desktop, Web, iOS, Slack Yes (claude -p)
Codex CLI Rust TUI, IDE extensions, Desktop, Web Yes (codex exec)
Gemini CLI TUI, VS Code companion, ACP IDE integration Yes (-p with JSON output)
Aider TUI, experimental browser, voice Yes (--message, Python API)
OpenCode TUI, web UI, desktop, IDE plugins Yes (opencode run)
Crush TUI only Yes (crush run)
Pi TUI with print / JSON / RPC / SDK modes Yes (-p, --mode json, stdin, --offline)
OMP TUI, local observability dashboard Yes

Project signals

Star and contributor counts are resolved from the GitHub API by the docs site when this page is built and cached for one hour. They reflect the state of each repo at the last docs deploy.

Tool Stars Contributors Language Telemetry
Nanocoder 2.4k 51 TypeScript / Node None - zero telemetry, zero tracking
Claude Code 143k 52 Closed core; public repo is tooling and issues Opt-out (Anthropic default)
Codex CLI 120k 451 Rust Opt-in OpenTelemetry (off by default)
Gemini CLI 107k 675 TypeScript / Node Opt-in (disabled by default)
Aider 49k 181 Python Opt-in; excludes code, chat, keys
OpenCode 203k 917 TypeScript (Bun) Under-documented; treat as opt-out
Crush 28k 118 Go Opt-out; honors DO_NOT_TRACK
Pi 99k 212 TypeScript / Node Opt-out version check + install ping
OMP 28k 100 TypeScript + Rust (Bun) No stated posture; ships a local stats dashboard

Why Nanocoder

The matrix tells the structural story. This section tells the human one. The first three points are the project's three purposes, in equal weight. Everything after that is how those purposes show up as capability.

1. Community-driven by design

The Nano Collective owns Nanocoder. There are no investors waiting for a return, no eventual freemium split, no paid tier on the roadmap. Governance and the Economics Charter are published, so the contribution model is written down before you decide to invest your time. Every other tool in this survey is either a private company's product (Claude Code, Codex, Gemini, OpenCode, Crush) or driven by one maintainer or a small core (Aider, Pi, OMP). Nanocoder is the only collectively-owned, non-profit option.

What this means in practice: the project's incentives are aligned with the people who use it, not with a growth metric or an eventual liquidity event. Decisions get made in public. There is no roadmap item to convert you to a paid plan, because there is no paid plan.

2. Privacy-respecting by design

Zero telemetry. Zero tracking. No analytics product, no install ping, no usage metrics phoned home. The binary does not call out to anything you did not ask it to call out to. Compare that to the rest of the field: Anthropic and OpenAI's default postures are not transparent in their public repos; OpenCode's telemetry posture is under-documented and OMP states none at all; even Crush and Pi ship opt-out version checks and install pings.

If you are running Nanocoder against a local model, the entire loop can run with zero outbound network traffic. What you do in Nanocoder stays in Nanocoder.

3. Local-first by design

Aider, OpenCode, and Crush will run against a local model. Nanocoder is built around the assumption that you might want to. Seven local server integrations (Ollama, llama.cpp, llama-swap, LM Studio, LocalAI, MLX Server, vLLM) are documented as first-class providers, not power-user hacks buried in a config schema. The Nano Collective also publishes Nanotune, an interactive fine-tuning CLI for Apple Silicon, which is the supply side of the same philosophy: smaller local models that are actually good at coding.

If your laptop has the silicon, you can run the entire loop without sending a token anywhere.

4. The broadest provider matrix in any OSS terminal agent

20+ providers, native integrations for the ones that matter (Anthropic, Google, OpenAI, OpenRouter, Copilot, Kimi, Mistral, MiniMax, Z.ai, GitHub Models, Poe, ChatGPT / Codex), and a custom OpenAI-compatible escape hatch for everything else. You are not locked into one vendor's pricing, one vendor's model quality cycle, or one vendor's outage.

OpenCode lists more raw providers, but Nanocoder is the broadest project that is not venture-backed and has no paid tier in the loop.

5. Works with models of all shapes and sizes

Nanocoder ships three tool-calling paths: native function calling for modern models, an XML fallback, and a JSON fallback, with malformed-output repair on both fallback paths. The conversation loop detects what the model supports and routes accordingly; if the model emits broken XML or JSON, the parser repairs it instead of failing the turn. The practical result: small local models, older models, fine-tuned models, and models that simply do not implement function calling reliably all still work end to end.

Aider achieves something analogous with its diff formats. No other tool in this survey ships all three paths plus repair.

6. Local scheduler, subagents, and event-driven Skills

A cron-driven scheduler (powered by croner) runs agent sessions on a schedule. Subagents delegate focused tasks to isolated contexts. Skills unify both of the above with file-based extensions: a Skill is either a single .md file in .nanocoder/commands|agents|tools/ or a bundle under .nanocoder/skills/<name>/ that ships a command, subagent, and scoped tools together. Skills can declare a subscribe: block in frontmatter to fire on file.changed or schedule.cron events.

These triggers are owned by a per-project daemon (nanocoder daemon start, with launchd plist and systemd user-unit installers shipped in-tree), which runs Skills in a non-interactive headless mode independent of the TUI. Among the tools surveyed, only Claude Code ships a comparable scheduler — and it is cloud-only, tied to a paid subscription, and has no event-driven file-watch story.

7. Workflow features usually gated behind paid tools

Checkpointing (snapshot and restore conversation state), context compression (manage token usage in long sessions), session autosave + resume, task management, an interactive file explorer, desktop notifications, plan mode, and runtime model tuning. Runtime model tuning, in particular, is unique to Nanocoder: you can change tool profiles, the compaction strategy, native-tool-calling, and model parameters live during a session.

8. VS Code extension with live diffs

The companion VS Code extension shows live diff previews of agent edits in the editor while the conversation runs in the terminal. Among OSS peers, Gemini CLI's VS Code companion ships a comparable native diff viewer; OpenCode's official extension does not (only a third-party extension does).

9. Editor interoperability via ACP

Nanocoder runs as an Agent Client Protocol agent (nanocoder --acp), exposing its conversation, tool-calling, and permission flows over the protocol so any ACP-compatible editor (Zed and others) can drive it directly. This is the same standard Gemini CLI uses for its IDE integration, so Nanocoder plugs into that ecosystem rather than needing a bespoke extension per editor. Among the tools surveyed, Nanocoder and Gemini CLI are the two that speak ACP.

Per-tool notes

Claude Code

The polished proprietary benchmark. Strongest surface area of any tool here (TUI, VS Code, Cursor, JetBrains, Desktop, Web, iOS, Slack). Cloud-only, closed source. Multi-provider in practice: ANTHROPIC_BASE_URL lets you point it at any Anthropic-API-compatible endpoint (Bedrock, Vertex, Z.ai, Kimi, GLM, custom proxies), so it is not strictly locked to Anthropic the company. The constraint is the API shape, not the vendor. Routines (cloud cron) is a real feature Nanocoder's local scheduler echoes. Picks itself if you are happy inside the Anthropic API surface and want zero friction.

OpenAI Codex CLI

Rust rewrite of the original TypeScript Codex. OpenAI-first but technically multi-provider via model_providers config. Good CI story with codex exec. Local model support exists but is power-user config, not a headline. Picks itself if you live in the OpenAI ecosystem and want OSS.

Gemini CLI

Free tier on a personal Google account is genuinely useful. Google-only. Best documented telemetry posture of the big three (opt-in, off by default). No local model support. Picks itself if you are happy on Gemini and want a generous free tier.

Aider

The veteran. Multi-provider, real local model support, mature workflow around git and edit formats. No MCP, no subagents, no plugin system, no native function calling. The diff edit format works on weaker models that cannot tool-call. Worth noting that development has slowed markedly — the repo has seen no pushes for several months at the time of writing, so check its activity before adopting. Picks itself if you want a stable, opinionated, edit-focused tool and are comfortable with a quiet upstream.

OpenCode

The closest direct competitor on every feature axis: OSS, multi-provider, local models, MCP, plugins, subagents, native tool calling, TUI plus web plus desktop. By far the largest community in this survey (203k stars). Has a paid vendor tier (Zen / Go). Owned by a venture-backed company; community involvement is structured around that. Picks itself if you want the most feature-complete OSS option and do not mind the governance model.

Crush

Go single-binary, polished Charm aesthetic, multi-provider, MCP client with three transports. Ships a non-interactive crush run mode and desktop notifications, but no subagents, no scheduler, and few of the deeper workflow features (no checkpointing, no task list, no plan mode). Picks itself if you value a single-binary install and TUI polish over breadth.

Pi

Built around a deliberately small core and a large extension surface. TypeScript modules for tools, commands, events, and custom UI; Agent Skills, prompt templates, themes, and shareable packages on top. Session branching, compaction, project trust and sandboxing, and an SDK plus RPC plus JSON streaming mode for programmatic use. No scheduler. MCP support is not documented in its current docs, so treat it as absent until confirmed rather than as a stated non-goal.

Pi has grown fast — 99k stars, roughly double where it sat when this page was first written — and it is now the second-largest project in this survey. The old framing of Pi as a niche minimalist option is out of date. Picks itself if you want a small, hackable core and enjoy assembling your own workflows.

OMP

A fork of Pi by Can Bölük (copyright Stencil Labs, Inc.) that went in the opposite direction: instead of a minimal core, it wires IDE machinery straight into the agent. Roughly 80k lines of Rust under a TypeScript surface, on Bun. 60+ providers, 31 built-in tools, full LSP and DAP support, MCP client, subagents with parallel fan-out, plan mode, checkpoint / rewind, session memory across runs, and web search across many backends. Local models via Ollama, LM Studio, llama.cpp, and vLLM. Ships prebuilt binaries through a shell script, Homebrew, Bun, Nix, and PowerShell.

At 28k stars it has already passed Crush. It has no scheduler and no stated telemetry posture. This is the tool that most directly contests Nanocoder's capability claims: it matches local models plus MCP plus subagents, and its LSP and DAP integration is deeper than ours. Picks itself if you want the agent to know everything your IDE knows and you do not need scheduled or event-driven runs.

Where Nanocoder is honestly behind

This is real and worth being clear about.

  • Community size. Every other tool here sits above Nanocoder (2.4k stars): OpenCode 203k, Claude Code 143k, Codex 120k, Gemini CLI 107k, Pi 99k, Aider 49k, OMP 28k, Crush 28k. Growth and contribution velocity matter more than absolute count, but the gap is large and it is not closing on its own.
  • Surface breadth. Claude Code, Codex, and OpenCode ship desktop and / or web surfaces. Nanocoder is TUI plus VS Code plus ACP plus --plain. Enough for most CLI users, not all.
  • Extension depth. Pi's TypeScript extension API is still deeper and more programmable than Nanocoder's file-based Skills + MCP + custom-tools combination. Claude Code's Hooks system (process-level event hooks) also has no direct Nanocoder equivalent; Nanocoder's event story runs through Skill subscribe: blocks via the daemon, not arbitrary user-defined shell hooks on the agent lifecycle.
  • IDE-level code intelligence. OMP wires full LSP and DAP into the agent's tool surface. Nanocoder has an LSP client but nothing at that depth, and no debugger integration at all.
  • Distribution polish. Crush's single Go binary and OMP's prebuilt binaries are both smoother than Node + pnpm. Nanocoder mitigates with Homebrew and Nix Flakes.

Everywhere else, Nanocoder is at parity or ahead.

Where Nanocoder is at parity

  • Multi-provider support. Matched by Aider, OpenCode, Crush, Pi, OMP.
  • MCP client support. Matched by Claude Code, Codex, Gemini, OpenCode, Crush, OMP.
  • OSS license. Matched by Codex, Gemini, Aider, OpenCode, Crush, Pi, OMP.
  • Plain / non-TTY mode for CI. Matched by every tool in this survey.
  • Native tool calling. Matched by every tool except Aider.
  • Subagents. Matched by Claude Code, Codex, Gemini, OpenCode, OMP.

Who Nanocoder is for

  • Developers who want their tools owned by the community that uses them, not by a private company with investors to answer to.
  • Developers who want zero telemetry and zero tracking, not opt-out toggles to remember to flip.
  • Developers who want to run agentic coding against local models without giving up modern capabilities (MCP, subagents, scheduling, checkpointing).
  • Developers who refuse vendor lock-in and want a single tool that talks to 20+ providers, including small local and fine-tuned models that other tools quietly drop.
  • Developers willing to trade some surface-area polish (no desktop or web app yet) for breadth, control, privacy, and community.

If that is you, Nanocoder is the right pick. If you want the most polished proprietary experience and are happy paying for it, Claude Code is honest about being that. If you want the most feature-complete OSS tool and do not mind venture-backed governance, OpenCode is honest about being that. We think Nanocoder is the honest answer for everyone else.

Maintenance

Star counts, contributor counts, feature lists, and pricing change. Re-verify before quoting externally. Sources used for the initial draft:

  • Claude Code: anthropic.com/claude-code, claude.ai/code, official pricing pages
  • Codex CLI: github.com/openai/codex, developers.openai.com/codex/cli
  • Gemini CLI: github.com/google-gemini/gemini-cli (telemetry, model, headless docs)
  • Aider: aider.chat/docs
  • OpenCode: opencode.ai/docs, github.com/anomalyco/opencode
  • Crush: github.com/charmbracelet/crush
  • Pi: pi.dev/docs, github.com/earendil-works/pi
  • OMP: github.com/can1357/oh-my-pi
  • Nanocoder: docs.nanocollective.org/nanocoder

Star and contributor counts anywhere on this page (tables and prose alike) use <!--stars:owner/repo--> markers, which the docs build resolves from the GitHub API. Do not hardcode a count in new prose — it will go stale and this page's credibility rests on it not doing that.