Recipes

little-coder: a local-model coding agent scaffold tuned for small LLMs

Discovered from README cross-links · yesterday

Research & KnowledgeSoftware & DevOps

A pi-based coding agent with 30 extensions and skills tuned for small local

What they did

They built little-coder, a coding agent scaffold layered on top of pi (a minimal agent substrate with an agent loop, multi-provider API, TUI, session tree, compaction, and extension model). Rather than forking pi, they kept pi as a plain dependency and put everything little-coder-specific under .pi/extensions/, skills/, and benchmarks/ — roughly 30 extensions, 30 skill markdown files, and a Python benchmark harness. The launcher runs pi with --no-extensions and wires in exactly the bundled set, keeping cold-start context near 7k tokens and making behavior predictable: the set that loads is the set that ships. They tuned the scaffold specifically for small local models, with a default of a local llama.cpp server hosting Qwen3.6-35B-A3B, and documented the research story of how a 9.7B Qwen beat frontier entries on Aider Polyglot. They added interactive features like Plan Mode (ctrl+q or --plan-mode), where the agent researches with sub-coders, asks 1-3 clarifying questions, and writes a plan instead of editing; approving saves it to .pi/approved-plan.md, and /implement opens a fresh session seeded with the plan so research and Q&A don't consume implementation context. They also shipped opt-in extension escape hatches: a user extensions directory, an env var pointing at extra extension files, and a --with-pi-extensions flag.

How it went

Ships as a one-line install (curl or npm/bun global) with no clone or workspace npm install, and little-coder lands on PATH working from any directory. The scaffold reportedly let a 9.7B Qwen beat frontier entries on Aider Polyglot, and the design keeps cold-start context around 7k tokens with predictable extension loading. Plan Mode and /implement are polished enough to be documented as first-class workflows, and the project includes a full extensions guide and a Substack writeup.

Worth knowing

Requires Node.js 22.19+ even when installed via bun, since the launcher is a Node script with a node shebang. Because the launcher passes --no-extensions, globally pi install'd packages won't load by default; you must use ~/.config/little-coder/extensions/, LITTLE_CODER_EXTRA_EXTENSIONS, or --with-pi-extensions. The canonical setup assumes a local llama.cpp server hosting Qwen3.6-35B-A3B, which needs separate serving setup. Familiarity with pi's model of --agent-import-path, --mode rpc, and .pi/extensions/ auto-discovery is assumed.

Wiring

Install via curl install.sh | bash, npm install -g little-coder, or bun add -g little-coder; Node 22.19+ must be on PATH. Run `little-coder` from the project directory you want as the working directory — Read/Write/Edit/Bash operate there, not on the install path. Bare invocation uses the default model declared in models.json ("default": "llamacpp/qwen3.6-35b-a3b"), printed at startup; the default only applies on first run, and an in-session model pick sticks. Override with --model (e.g. llamacpp/qwen3.6-35b-a3b, anthropic/claude-haiku-4-5, ollama/qwen3.5, lmstudio/local-model) or set a default key in the user override file. The launcher invokes pi with --no-extensions and wires the bundled set from .pi/extensions/ and skills/. Extension loading can be extended via ~/.config/little-coder/extensions/, the LITTLE_CODER_EXTRA_EXTENSIONS env var, or --with-pi-extensions; /extensions lists what loaded. Plan Mode toggles with ctrl+q or --plan-mode / LITTLE_CODER_PLAN_MODE=1; approving a plan writes .pi/approved-plan.md, and /implement switches to the action model in a fresh session seeded with the plan.

Try it yourself

Install little-coder globally (npm install -g little-coder, Node 22.19+), then from my repo root run `little-coder --list-models` to see available models. Launch it against my project with a local llama.cpp Qwen3.6-35B-A3B if I have one served, otherwise ask me which model to use. Start in Plan Mode: research the codebase with sub-coders, ask me 1-3 clarifying questions with suggested answers, and write a plan in chat without editing files. Save the approved plan to .pi/approved-plan.md, then use /implement to open a fresh session seeded with that plan and begin the work. Show me /extensions output so I can confirm which bundled extensions loaded, and explain how to add my own via ~/.config/little-coder/extensions/ without changing the default set.

Source

Tools in this stack