← Back to archive

Repo of the Day

itayinbarr/little-coder: A coding agent optimized to smaller LLMs

Published: Jul 10, 2026

Open repository ↗

A coding agent optimized to smaller LLMs

Summary

little-coder is an Apache-2.0 TypeScript coding agent that wraps the pi agent loop with around 30 extensions, 30 skill markdown files, and a Python benchmark harness, tuned for small local language models. It keeps cold-start context around 7k tokens by launching pi with --no-extensions and wiring in only the bundled set. The README states the scaffold let a 9.7B Qwen beat frontier entries on Aider Polyglot.

What it is useful for

  • Running a coding agent against local open models like Qwen3.6-35B-A3B (MoE) or Ollama's qwen3.5 on a laptop, including the documented trick of keeping MoE experts in RAM via --n-cpu-moe 999 to fit a 22GB model on 8GB VRAM.
  • Splitting plan and implement phases: a separate plan session writes .pi/approved-plan.md, and /implement opens a fresh implementation session seeded with that plan so research does not eat implementation context.
  • Long-running shell work via ShellStart, which declares a wake_on rule (regex match, exit, silence window) and only interrupts the agent on the events you name, instead of polling.
  • Pointing the agent at a remote inference box on your LAN by overriding LLAMACPP_BASE_URL / OLLAMA_BASE_URL / LMSTUDIO_BASE_URL.
  • Running the bundled benchmarks/ harness against Aider Polyglot and Terminal Bench.

How engineers can use it

Install requires Node 22.19+:

curl -fsSL https://raw.githubusercontent.com/itayinbarr/little-coder/main/install.sh | bash
# or: npm install -g little-coder

In any project directory:

little-coder                                    # default from models.json
little-coder --model llamacpp/qwen3.6-35b-a3b   # local
little-coder --model ollama/qwen3.5             # local via Ollama
little-coder --model anthropic/claude-haiku-4-5 # cloud

For the canonical llama.cpp path, the README walks through fetching Qwen3.6-35B-A3B-UD-Q4_K_M.gguf plus the mmproj-F16.gguf vision projector (drop the projector for text-only), then serving with --jinja -c 16384 -ngl 99 --n-cpu-moe 999 --flash-attn on. Local providers need any non-empty key (export LLAMACPP_API_KEY=noop); cloud uses ANTHROPIC_API_KEY / OPENAI_API_KEY.

The shipped models.json is overwritten on npm install -g, so persistent overrides go in ~/.config/little-coder/models.json. A top-level "default": "provider/id" changes the first-run default; provider blocks in the override file fully replace the shipped entries rather than deep-merging. Confirm with little-coder --list-models.

Documented limits: a globally pi install'd package does not load under little-coder because of --no-extensions — opt in with ~/.config/little-coder/extensions/, the LITTLE_CODER_EXTRA_EXTENSIONS env var, or --with-pi-extensions. Sub-coders are read-only by default; set LITTLE_CODER_SUBCODER_ACCESS=write to allow edits, but dispatch is never granted to children. The README also flags that on Qwen3.8-27B at 32k context with -ngl 20, llama.cpp passes /health and then generates no tokens — a started server is not evidence the config works.