little-coder: Lightweight Local Coding Agent

A coding agent tuned for small local models, powered by a 30+ extension harness and benchmark suite, enabling laptops to run capable coding AI offline.

Stars
★ 2.7k
Last updated
1mo ago
License
Apache-2.0
Primary language
TypeScript

At a glance

How it runs
CLI
Works with
Portable with changes
Cost
Free software; you pay for model usage
Setup effort
Medium · a few setup steps
You'll need
Node.js >=22.19Python 3 for benchmarksllama.cpp / Ollama / LM Studio for local modelsShell / CLINetwork accessLocal filesystem
Typical use
Local developers: Use Qwen3.6-35B-A3B for daily coding on a laptop without cloud dependencies, leveraging Plan Mode and automatic context management.
Not a fit if
  • Users who want a zero-config agent without running a local inference server
  • Machines without a GPU or with less than 8GB VRAM
  • Teams unwilling to depend on the pi framework

What does this agent do, and when should you use it?

little-coder is an open-source coding agent built on pi that optimizes small local language models (e.g., Qwen3.6-35B-A3B). It does not fork pi; instead, it treats pi as a dependency and enhances it with over 30 TypeScript extensions under .pi/extensions/, 30 skill markdown files in skills/, and a Python benchmark harness in benchmarks/. Core mechanisms include read/write guards, skill injection, output parsing, quality monitoring, thinking budget, and permission gating, ensuring small models work efficiently and safely. It achieves impressive benchmark scores on Aider Polyglot, Terminal-Bench, and GAIA, all run on consumer laptops with 8GB VRAM. Installation is straightforward, supports multiple model providers, but is optimized for llama.cpp and Ollama local servers.

little-coder runs as a terminal-based interactive agent: it reads project files, uses built-in tools (Read/Write/Edit/Bash) to modify code and run commands, and spawns sub-agents for research and deep research. It includes a Plan Mode, sub-agent dispatch, prompt history, and session management. Benchmark drivers (e.g., benchmarks/aider_polyglot.py) start pi in RPC mode and run tasks. Its permission system uses a whitelist to restrict shell commands, enhancing safety. Extensions inject skills and knowledge per turn, monitor model output quality, and automatically compact context when needed.

  1. Local developers: Use Qwen3.6-35B-A3B for daily coding on a laptop without cloud dependencies, leveraging Plan Mode and automatic context management.
  2. Small teams: Maintain a local knowledge base (e.g., medical, athletic, educational) with many markdown files, using little-coder to read and update them in a token-efficient way.
  3. Benchmark enthusiasts: Researchers can use the built-in harness to evaluate small models on Aider Polyglot, Terminal-Bench 2.0, and GAIA, and submit results to leaderboards.
  4. Privacy-sensitive scenarios: Run fully offline with llama.cpp or Ollama to avoid sending code to the cloud.
  5. Multi-machine setups: Run inference on a GPU server and connect from a laptop over LAN using environment variables like LLAMACPP_BASE_URL.
  6. AI agent researchers: Developers can clone the repo to reproduce the paper results or study scaffold-model fit.

How do you install or deploy this agent?

Requires Node.js 22.19+. One-line install: curl -fsSL https://raw.githubusercontent.com/itayinbarr/little-coder/main/install.sh | bash, or via npm install -g little-coder or bun add -g little-coder. After installation, the little-coder command is available.

How do you use this agent?

In a project directory, run little-coder to launch with the default model (requires a local llama.cpp server at http://127.0.0.1:8888/v1), or specify a model with --model, e.g., little-coder --model anthropic/claude-haiku-4-5. Before using, set API key env vars (e.g., LLAMACPP_API_KEY=noop) for local providers. Interactive features: ctrl+q toggles Plan Mode, f2 triggers deep research, /resume lists sessions. Model configuration can be overridden via ~/.config/little-coder/models.json.

What are this agent's strengths and limitations?

Pros
  • Optimized for small models, runs on 8GB VRAM laptops and outperforms larger cloud models on Aider Polyglot (45.56% vs baseline 19.11%).
  • Modular architecture: extensions and skills are independent and easily customizable.
  • Four-benchmark baseline (Aider Polyglot, Terminal-Bench, GAIA) with reproducible results.
  • Security: shell whitelist, write protection, and context management prevent accidental mistakes.
  • Supports multiple local servers (llama.cpp, Ollama, LM Studio) and cloud models, offering flexibility.
Limitations
  • Dependency on pi framework; extending requires learning pi's API.
  • Requires Node.js 22.19+ and Python for benchmarks; some technical overhead.
  • Default configuration targets Qwen3.6-35B-A3B; switching models may require tuning.
  • Local inference performance depends on hardware; slower without a good GPU.
  • Community-recommended models update frequently, but the official models.json does not track them.

How does this agent compare with similar options?

When compared to other coding agents like Aider, little-coder performs better on small models, but its architecture based on pi may appeal more to users familiar with pi.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
little-coder: Lightweight Local Coding Agent This agent 58 · Major gaps CLIFree + model costs ★ 2.7k 1mo ago TypeScript —
hax 62 · Some gaps CLIFree + model costs ★ 924 1d ago C OpenAI API · Claude API
Forge: Reliability Layer for Self-Hosted LLM Tool Calling 49 · Major gaps CLIFree + model costs ★ 2.3k 4d ago Python OpenAI API · Claude API
Thunderbolt 49 · Major gaps Desktop appFree + model costs ★ 4.8k 1d ago TypeScript OpenAI API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
58/ 100 5-point scale 2.9 / 5
This review covers the source as of Aug 09, 2026. The project has shipped 6 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 14/29
Reliability 8/14
Adaptability 12/18
Convention 11/18
Effectiveness 9/13
Verifiability 4/8
Why each dimension lost points
Trust14 / 29 · 2.4/5

Evidence shows: permission control has built-in whitelist and write protection, but default allows bash execution, and user confirmation flow relies on pi. Data flow transparency is limited, no detailed explanation of how data is processed. Sensitive data handling is not explicit. Dependency security has overrides but not audited. External effects are clearly described. Rollback mechanism is not explicit. Source attribution has author and repository info. Deductions: insufficient data flow transparency, unclear sensitive data handling, un-audited dependency security.

Reliability8 / 14 · 2.9/5

Evidence shows: README and package.json are consistent, dependencies are clearly declared, but failure messages are not detailed. Deduction: insufficient failure messages.

Adaptability12 / 18 · 3.3/5

Evidence shows: clear target audience for small local models, clear capability boundaries, clear trigger methods, detailed environment adaptation. Deduction: no major deductions.

Convention11 / 18 · 3.1/5

Evidence shows: clear information architecture, detailed installation instructions, stable naming, examples and FAQ present, known limitations partially mentioned, clear license, versioning and changelog present, clear maintenance responsibility. Deduction: incomplete known limitations.

Effectiveness9 / 13 · 3.5/5

Evidence shows: output usability described, marginal value has benchmark data, cost-benefit analysis present. Deduction: no major deductions.

Verifiability4 / 8 · 2.5/5

Evidence shows: claims have links, but cross-source verification is limited, facts and inferences are separated. Deduction: insufficient cross-source verification.

Risks and how to mitigate them
  • Bash execution is allowed by default; configure permission mode carefully.
  • Data flow transparency is limited; review data handling practices.
  • Dependency security is not audited; check for vulnerabilities.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision 0b7234031aab New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v1.20.0
    Release notes excerpt
    Fixed - A multi-line edit no longer deadlocks the run ([#127](https://github.com/itayinbarr/little-coder/issues/127) by [@brlucasdx](https://github.com/brlucasdx)). pi already recovers an edits argument sent as a JSON *string* instead of an array, and that recovery is a bare JSON.parse in a try. It fails on the single most common way a small local model writes one: raw newlines inside oldText/newText, which is what multi-line code *is*. JSON.parse throws Bad control character in string literal, the empty catch swallows it, edits stays a string, and schema validation …
    View on GitHub ↗
  2. v1.19.0
    Release notes excerpt
    Fixed - little-coder -p survives a compaction instead of losing the run ([#115](https://github.com/itayinbarr/little-coder/issues/115) by [@Or1j1n](https://github.com/Or1j1n)). v1.18.0 stopped the crash in #108 but not the thing it was a symptom of: under -p, a long task that the TUI completes exited Request aborted with code 1 and empty stdout. pi's compact() is the manual path and its first act is await this.abort(), and print-mode reads the run's verdict straight off the last message (if (stopReason === "error" || stopReason === "aborted")), so aborting the run discards …
    View on GitHub ↗
  3. v1.18.0
    Release notes excerpt
    Fixed - A compaction that settles after the session is gone no longer takes the process down ([#108](https://github.com/itayinbarr/little-coder/issues/108) by [@heinrichI](https://github.com/heinrichI)). The context watchdog reported its result through the ctx captured at the turn that fired the compaction, and pi invalidates the whole extension runtime on dispose(), so ctx.ui and pi.sendUserMessage() throw This extension ctx is stale after session replacement or reload from that point on. pi invokes the compaction callbacks from a floating void (async () => …)(), which tur …
    View on GitHub ↗

FAQ

Does little-coder require internet?
Not necessarily. It can run fully offline with local models (llama.cpp, Ollama), but network is needed for installation and updates.
Which models are supported?
Any OpenAI-compatible API, including local models (llama.cpp, Ollama, LM Studio) and cloud models (Anthropic, OpenAI). The default is Qwen3.6-35B-A3B, but you can specify with --model.
How do I add a new local model?
Edit ~/.config/little-coder/models.json to add a provider configuration, then select it with --model.
How does permission control work?
The default 'auto' mode allows only whitelisted commands (e.g., ls, cat, git status); others can be added via LITTLE_CODER_BASH_ALLOW. 'accept-all' mode is used for benchmarks and skips the whitelist.
What if I run into context overflow?
little-coder automatically compacts context when usage exceeds 80%, and you can adjust the threshold with LITTLE_CODER_COMPACT_AT_PERCENT. If compaction occurs often, consider using a model with a larger context window.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents