Skip to main content

A free, open-source, customizable CLI coding agent with spec-driven development

Project description

Coderrr

A free, open-source CLI coding agent that plans before it edits.

PyPI License: MIT Python GitHub issues

   ██████╗ ██████╗ ██████╗ ███████╗██████╗ ██████╗ ██████╗
  ██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗
  ██║     ██║   ██║██║  ██║█████╗  ██████╔╝██████╔╝██████╔╝
  ██║     ██║   ██║██║  ██║██╔══╝  ██╔══██╗██╔══██╗██╔══██╗
  ╚██████╗╚██████╔╝██████╔╝███████╗██║  ██║██║  ██║██║  ██║
   ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝

Coderrr writes a spec, shows it to you, and stops. Nothing on disk changes until you approve. Then it implements the plan task by task, running the code in a sandbox to check its own work.

v2 is a Python package on PyPI. Coming from the npm package? See docs/V2-MIGRATION.md.


Install

pipx install coderrr          # or: uv tool install coderrr
coderrr config                # pick a provider and model
coderrr run "add rate limiting to the API"

No provider SDKs required — every provider is reached over plain HTTP.

pipx install 'coderrr[keyring]'   # store API keys in the OS keyring

How it works

your request
     │
  PLANNING ──► reads your code, pulls relevant skills
     │         writes requirements.md · design.md · tasks.md
     │
  ┌──┴───────────────────────────────────┐
  │  the plan is shown to you. it stops. │
  └──┬───────────────────────────────────┘
     │ you approve
  EXECUTION ──► per task: read → edit → run in sandbox → verify → mark done

Write tools do not exist during planning. They are absent from the model's tool list entirely — the agent isn't asked to refrain from editing, it has no tool that edits. Approval is what unlocks them.

Spec files live in .coderrr/specs/NNN-slug/ and are meant to be committed. They're also the agent's memory: a later session reads tasks.md to learn where things stand instead of replaying a chat log. You can edit them before approving to steer the work.


Providers

Provider Key needed Notes
Ollama no Default. Local or Ollama-hosted models.
Anthropic yes Claude
OpenAI yes GPT
Google yes Gemini
OpenRouter yes Many models behind one key

The default is gemma4:31b-cloud via Ollama — tool-capable and usable on a free Ollama account. Two notes on Ollama models:

  • kimi-k3:cloud is stronger (1M context) but returns 403 without a paid Ollama subscription, so it can't be the out-of-the-box default. Switch to it with coderrr config if you have one.
  • Fully local models (qwen2.5-coder:14b, llama3.1:8b) need no account at all, but are noticeably weaker at the multi-turn tool use the agent loop depends on.
coderrr config              # interactive
coderrr config show         # current settings, key masked
coderrr run "..." -m gpt-4o # one-off model override

Keys resolve from environment variables first (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY), then the OS keyring, then ~/.coderrr/config.toml — which is written mode 0600.


The sandbox

Coderrr has no tool that runs commands against your working tree. Commands run in a sandbox, and the agent reads the real exit code and output.

Tier What it is Isolation
scratch (default) Throwaway copy of the project + subprocess Limits blast radius. Not a barrier against deliberately hostile code.
docker (auto when available) Container, --network none, all capabilities dropped Filesystem and network isolated

coderrr doctor reports which tier is active. Dependency directories aren't copied into the scratch tier, so the agent may need to install them first.


Skills

Skills are markdown guidance — how to approach a class of problem — fetched when the agent decides it needs them, and deleted after use. They add no executable capability, so a bad skill can only give bad advice to an agent whose tools are already gated.

Retrieval is automatic: the agent consults the registry while analysing intent and loads only what is relevant. You can browse it yourself too:

coderrr skills search "pdf report"

The registry is Akash-nath29/coderrr-skillsregistry.json indexes each skill's Skills.md. Point [skills].registry at your own index to use a different one.


Commands

Command What it does
coderrr run "<request>" Plan, approve, implement
coderrr run "..." --yes Skip the approval prompt
coderrr spec list / spec show Inspect specs in this project
coderrr config / config show / config clear Credentials and model
coderrr skills search "<query>" Search the skill registry
coderrr doctor Environment check
coderrr version Print the version

Configuration

~/.coderrr/config.toml:

[provider]
name  = "ollama"
model = "gemma4:31b-cloud"

[agent]
max_iter       = 5      # retries per task after a failure
max_tool_turns = 50     # tool calls per attempt before giving up
confirm_writes = false  # true prompts on every individual write

[verify]
mode        = "writes_only"  # always | writes_only | off
model       = ""             # empty reuses the main model; point at a cheap one
temperature = 0.3            # kept above zero so a false reject isn't repeatable

[sandbox]
tier    = "auto"        # auto | scratch | docker
network = false

Development

uv sync --all-extras
uv run pytest -q
uv run ruff check src tests && uv run ruff format --check src tests
uv run mypy

Not using uv? Pinned locks are checked in:

pip install -r requirements-dev.txt && pip install -e .

pyproject.toml is the source of truth; regenerate with uv pip compile pyproject.toml -o requirements.txt.

The test suite runs entirely offline: a scripted fake provider drives the agent loop, and provider adapters are tested against recorded SSE fixtures.


Docs


License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coderrr-2.0.0.tar.gz (200.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coderrr-2.0.0-py3-none-any.whl (83.7 kB view details)

Uploaded Python 3

File details

Details for the file coderrr-2.0.0.tar.gz.

File metadata

  • Download URL: coderrr-2.0.0.tar.gz
  • Upload date:
  • Size: 200.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for coderrr-2.0.0.tar.gz
Algorithm Hash digest
SHA256 4fe62c8a62c59169e2549e1afd5e0b2f1174ae40bbee66fba51bb36958917625
MD5 90a0dd527bd8ef18bbcc61aa38f1447b
BLAKE2b-256 f2b1d07c6f1304aec8d57bace865b8dc97a703338d9638327d2c8e58eec99570

See more details on using hashes here.

File details

Details for the file coderrr-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: coderrr-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 83.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for coderrr-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b833c288eab4f13d7aee1d318308856740fa433850c9a0419c1df6b8ba276c4
MD5 bd5039bc373ec70fb7e017ecb6f5e07d
BLAKE2b-256 cf76ff0790b0c09916b6d34248df3196d62a1ab85278499d73987542c65645be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page