|
| 1 | +<!doctype html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | +<meta charset="utf-8" /> |
| 5 | +<meta name="viewport" content="width=device-width,initial-scale=1" /> |
| 6 | +<title>little-coder · a coding agent tuned for small local models</title> |
| 7 | +<meta name="description" content="little-coder is an offline, pi-based coding agent tuned for small local models. A 9.7B model scored 45.56% on Aider Polyglot — past gpt-4.5-preview — with the wifi off." /> |
| 8 | +<link rel="preconnect" href="https://fonts.googleapis.com" /> |
| 9 | +<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> |
| 10 | +<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600;700&display=swap" /> |
| 11 | + |
| 12 | +<link rel="stylesheet" href="site.css" /> |
| 13 | +</head> |
| 14 | +<body> |
| 15 | + |
| 16 | +<!-- ============================== nav ============================== --> |
| 17 | +<header class="nav" data-screen-label="nav"> |
| 18 | + <a class="brand" href="#top" aria-label="little-coder home"> |
| 19 | + <span class="mono mark">lc<span class="cursor"></span></span> |
| 20 | + <span class="brand-name">little-coder</span> |
| 21 | + </a> |
| 22 | + <nav class="nav-links"> |
| 23 | + <a href="#why">why</a> |
| 24 | + <a href="#install">install</a> |
| 25 | + <a href="#session">how it works</a> |
| 26 | + <a href="#community">community</a> |
| 27 | + </nav> |
| 28 | + <a class="nav-cta" href="https://github.com/itayinbarr/little-coder" target="_blank" rel="noopener"> |
| 29 | + <span>github.com/itayinbarr/little-coder</span> |
| 30 | + <span class="arrow">↗</span> |
| 31 | + </a> |
| 32 | +</header> |
| 33 | + |
| 34 | +<!-- ============================== hero ============================== --> |
| 35 | +<section id="top" class="hero" data-screen-label="hero"> |
| 36 | + <div class="hero-grid"> |
| 37 | + <span class="hero-tag reveal"><span class="dot"></span> v<span data-version>1.5.1</span></span> |
| 38 | + <h1 class="hero-mark mono"><span class="ch" style="--d:0">l</span><span class="ch" style="--d:1">c</span><span class="cursor big"></span></h1> |
| 39 | + <p class="hero-lead reveal" style="--d:0.4s"> |
| 40 | + a coding agent built for small models |
| 41 | + </p> |
| 42 | + <div class="hero-cta reveal" style="--d:0.6s"> |
| 43 | + <a class="btn primary" href="#install"><span class="prompt mono">></span> quick start</a> |
| 44 | + <a class="btn ghost" href="https://github.com/itayinbarr/little-coder" target="_blank" rel="noopener">github repo</a> |
| 45 | + </div> |
| 46 | + </div> |
| 47 | +</section> |
| 48 | + |
| 49 | +<!-- ============================== why / benchmark ============================== --> |
| 50 | +<section id="why" class="bench" data-screen-label="benchmark"> |
| 51 | + <div class="section-head"> |
| 52 | + <div class="eyebrow">// a 9.7B model walked into the aider polyglot benchmark.</div> |
| 53 | + <h2 class="section-title">and walked out with a higher<br/>score than gpt-4.5-preview.</h2> |
| 54 | + <p class="section-lead">this is the laptop next to you, with the wifi off.</p> |
| 55 | + </div> |
| 56 | + |
| 57 | + <div class="bench-stage" data-anim="bench"> |
| 58 | + <!-- challenger --> |
| 59 | + <div class="bench-row challenger"> |
| 60 | + <div class="bench-meta"> |
| 61 | + <div class="role">// challenger</div> |
| 62 | + <div class="who">qwen3.5 + little-coder</div> |
| 63 | + <div class="specs">9.7B params · 6.6 GB · runs offline · no API</div> |
| 64 | + </div> |
| 65 | + <div class="bench-bar-wrap"> |
| 66 | + <div class="bench-bar honey" style="--target: 45.56"> |
| 67 | + <span class="bench-fill"></span> |
| 68 | + <span class="bench-tick">0</span> |
| 69 | + <span class="bench-tick" style="left:25%">12.5</span> |
| 70 | + <span class="bench-tick" style="left:50%">25</span> |
| 71 | + <span class="bench-tick" style="left:75%">37.5</span> |
| 72 | + <span class="bench-tick right">50</span> |
| 73 | + </div> |
| 74 | + <div class="bench-num"><span class="count" data-to="45.56">0.00</span><small>%</small></div> |
| 75 | + </div> |
| 76 | + </div> |
| 77 | + |
| 78 | + <div class="vs-bar"><span class="mono">vs</span></div> |
| 79 | + |
| 80 | + <!-- champ --> |
| 81 | + <div class="bench-row champ"> |
| 82 | + <div class="bench-meta"> |
| 83 | + <div class="role">// reigning champ</div> |
| 84 | + <div class="who">gpt-4.5-preview</div> |
| 85 | + <div class="specs">frontier-scale · cloud-served · undisclosed params · API metered</div> |
| 86 | + </div> |
| 87 | + <div class="bench-bar-wrap"> |
| 88 | + <div class="bench-bar ink" style="--target: 44.90"> |
| 89 | + <span class="bench-fill"></span> |
| 90 | + </div> |
| 91 | + <div class="bench-num"><span class="count" data-to="44.90">0.00</span><small>%</small></div> |
| 92 | + </div> |
| 93 | + </div> |
| 94 | + |
| 95 | + <div class="bench-foot"> |
| 96 | + <span>fig. 1 — aider polyglot · 225 exercises · two-run mean · april 2026</span> |
| 97 | + <span class="lead-by">led by <b>+0.66</b> points</span> |
| 98 | + </div> |
| 99 | + </div> |
| 100 | +</section> |
| 101 | + |
| 102 | +<!-- ============================== install ============================== --> |
| 103 | +<section id="install" class="install" data-screen-label="install"> |
| 104 | + <div class="section-head"> |
| 105 | + <div class="eyebrow">// one command, one local model</div> |
| 106 | + <h2 class="section-title">install.</h2> |
| 107 | + </div> |
| 108 | + |
| 109 | + <div class="install-grid"> |
| 110 | + <div class="install-terminal" data-anim="install"> |
| 111 | + <div class="t-bar"> |
| 112 | + <span class="t-dot"></span><span class="t-dot"></span><span class="t-dot honey"></span> |
| 113 | + <span class="t-name mono">~/projects · zsh</span> |
| 114 | + </div> |
| 115 | + <div class="t-body mono"> |
| 116 | + <div class="t-line"><span class="p">$</span> <span class="cmd" data-type="npm install -g little-coder"></span><span class="caret"></span></div> |
| 117 | + <div class="t-out" data-step="1"> |
| 118 | + <div class="dim">resolving dependencies...</div> |
| 119 | + <div class="dim">fetching @earendil-works/pi-coding-agent</div> |
| 120 | + <div class="bar-line"><span class="bar-track"><span class="bar-fill"></span></span><span class="pct mono">100%</span></div> |
| 121 | + <div class="ok"><span class="check">✓</span> installed little-coder <span data-version>1.5.1</span> · node 22.19+</div> |
| 122 | + </div> |
| 123 | + <div class="t-line" data-step="2"><span class="p">$</span> <span class="cmd" data-type="llama-server -hf unsloth/Qwen3.6-35B-A3B-GGUF"></span><span class="caret hide"></span></div> |
| 124 | + <div class="t-out" data-step="3"> |
| 125 | + <div class="dim">fetching Qwen3.6-35B-A3B · UD-Q4_K_M · 22.1 GB</div> |
| 126 | + <div class="dim">experts → RAM, attention → GPU · 3.8 GB vram</div> |
| 127 | + <div class="ok"><span class="check">✓</span> llama.cpp listening on 127.0.0.1:8888</div> |
| 128 | + </div> |
| 129 | + <div class="t-line" data-step="4"><span class="p">$</span> <span class="cmd" data-type="little-coder --model llamacpp/qwen3.6-35b-a3b"></span><span class="caret hide"></span></div> |
| 130 | + <div class="t-out" data-step="5"> |
| 131 | + <div class="lc-boot"> |
| 132 | + <div class="lc-boot-head"><span class="mono mark sm">lc</span> <span class="paper">little-coder</span> <span class="dim">v<span data-version>1.5.1</span> · offline</span></div> |
| 133 | + <div class="tf-status"><span class="dim">Context:</span> 0.4K/32K (1%) <span class="dim">·</span> <span class="dim">model:</span> <span class="tf-model">llamacpp/qwen3.6-35b-a3b</span></div> |
| 134 | + <div class="dim">/help for commands · ctrl-c to quit</div> |
| 135 | + <div class="lc-prompt"><span class="p honey">></span> <span class="caret blink"></span></div> |
| 136 | + </div> |
| 137 | + </div> |
| 138 | + </div> |
| 139 | + </div> |
| 140 | + |
| 141 | + <aside class="install-side"> |
| 142 | + <div class="step"> |
| 143 | + <div class="step-k mono">01</div> |
| 144 | + <div class="step-v"> |
| 145 | + <h4>install the agent.</h4> |
| 146 | + <p>one command: <code>npm install -g little-coder</code> (or the curl one-liner, or <code>bun add -g</code>). needs node 22.19+.</p> |
| 147 | + </div> |
| 148 | + </div> |
| 149 | + <div class="step"> |
| 150 | + <div class="step-k mono">02</div> |
| 151 | + <div class="step-v"> |
| 152 | + <h4>bring a local model.</h4> |
| 153 | + <p>serve one with llama.cpp — the tuned path, running the 35B-A3B MoE on 8 GB of vram via the <code>--n-cpu-moe</code> trick. ollama, lm studio, and cloud models work too; point the agent at it with <code>--model</code>.</p> |
| 154 | + </div> |
| 155 | + </div> |
| 156 | + <div class="step"> |
| 157 | + <div class="step-k mono">03</div> |
| 158 | + <div class="step-v"> |
| 159 | + <h4>start coding.</h4> |
| 160 | + <p><code>little-coder</code> in your repo drops you into a repl. ask in plain english; it reads, edits, and runs against your working tree.</p> |
| 161 | + </div> |
| 162 | + </div> |
| 163 | + </aside> |
| 164 | + </div> |
| 165 | +</section> |
| 166 | + |
| 167 | +<!-- ============================== sample session ============================== --> |
| 168 | +<section id="session" class="session" data-screen-label="how it works"> |
| 169 | + <div class="section-head"> |
| 170 | + <div class="eyebrow">// a sample session</div> |
| 171 | + <h2 class="section-title">how it feels.</h2> |
| 172 | + <p class="section-lead">you write english. it reads, edits, and runs<br/>against your working tree — all done locally.</p> |
| 173 | + </div> |
| 174 | + |
| 175 | + <div class="session-terminal" data-anim="session"> |
| 176 | + <div class="t-bar"> |
| 177 | + <span class="t-dot"></span><span class="t-dot"></span><span class="t-dot honey"></span> |
| 178 | + <span class="t-name mono">~/fizzbuzz · little-coder</span> |
| 179 | + </div> |
| 180 | + <div class="t-body mono tf"> |
| 181 | + <div class="s-line"><span class="p honey">></span> <span class="user" data-type="implement the fizzbuzz exercise"></span><span class="caret"></span></div> |
| 182 | + <div class="s-out" data-step="1"> |
| 183 | + <div class="dim">running · llamacpp/qwen3.6-35b-a3b · 3.8 GB vram</div> |
| 184 | + </div> |
| 185 | + <div class="s-out tf-flow" data-step="2"> |
| 186 | + <div class="tf-line"><span class="tf-arrow">→</span> <span class="tf-tool">Glob</span> <span class="tf-arg">**/*</span></div> |
| 187 | + <div class="tf-line tf-res"><span class="ck">✓</span> → 3 lines (50 chars)</div> |
| 188 | + <div class="tf-line"><span class="tf-arrow">→</span> <span class="tf-tool">Read</span> <span class="tf-arg">.docs/instructions.md</span></div> |
| 189 | + <div class="tf-line tf-res"><span class="ck">✓</span> → 3 lines (183 chars)</div> |
| 190 | + <div class="tf-line"><span class="tf-arrow">→</span> <span class="tf-tool">Read</span> <span class="tf-arg">fizzbuzz.py</span></div> |
| 191 | + <div class="tf-line tf-res"><span class="ck">✓</span> → 2 lines (37 chars)</div> |
| 192 | + <div class="tf-line"><span class="tf-arrow">→</span> <span class="tf-tool">Edit</span> <span class="tf-arg">fizzbuzz.py</span></div> |
| 193 | + <div class="tf-line tf-res"><span class="ck">✓</span> → 11 lines (255 chars)</div> |
| 194 | + <div class="tf-line"><span class="tf-arrow">→</span> <span class="tf-tool">Bash</span> <span class="tf-arg">python -m pytest fizzbuzz_test.py -v</span></div> |
| 195 | + <div class="tf-line tf-res"><span class="ck">✓</span> → 6 lines (313 chars)</div> |
| 196 | + </div> |
| 197 | + <div class="s-out" data-step="3"> |
| 198 | + <div class="tf-pass">All tests pass.</div> |
| 199 | + <div class="tf-status"><span class="dim">Context:</span> 4.2K/32K (13%) <span class="dim">· ~48 msgs until recommended new session ·</span> <span class="dim">model:</span> <span class="tf-model">llamacpp/qwen3.6-35b-a3b</span></div> |
| 200 | + </div> |
| 201 | + </div> |
| 202 | + </div> |
| 203 | +</section> |
| 204 | + |
| 205 | +<!-- ============================== community ============================== --> |
| 206 | +<section id="community" class="community" data-screen-label="community"> |
| 207 | + <div class="comm-grid"> |
| 208 | + <div class="comm-copy"> |
| 209 | + <div class="eyebrow">// community</div> |
| 210 | + <h2 class="section-title">talk to us<br/>where the code lives.</h2> |
| 211 | + <p class="section-lead">no discord, no slack, no forum subscription — just the github issues tab. file a bug, ask how to serve a model on your hardware, and you'll usually get a worked-through answer.</p> |
| 212 | + <div class="comm-cta"> |
| 213 | + <a class="btn primary" href="https://github.com/itayinbarr/little-coder/issues" target="_blank" rel="noopener"> |
| 214 | + <span class="prompt mono">></span> browse issues |
| 215 | + <span class="arrow">↗</span> |
| 216 | + </a> |
| 217 | + <a class="btn ghost" href="https://github.com/itayinbarr/little-coder/issues/new" target="_blank" rel="noopener">open an issue</a> |
| 218 | + </div> |
| 219 | + <div class="comm-stats"> |
| 220 | + <div class="cs"><div class="cs-n mono"><span class="count" data-stat="stars" data-to="1294">0</span></div><div class="cs-l">stars on github</div></div> |
| 221 | + <div class="cs"><div class="cs-n mono"><span class="count" data-stat="issues" data-to="25">0</span></div><div class="cs-l">issues opened</div></div> |
| 222 | + <div class="cs"><div class="cs-n mono"><span class="count" data-stat="resolved" data-to="23">0</span></div><div class="cs-l">issues resolved</div></div> |
| 223 | + </div> |
| 224 | + </div> |
| 225 | + |
| 226 | + <div class="comm-board"> |
| 227 | + <div class="comm-tabs"> |
| 228 | + <span class="ct">discussions</span> |
| 229 | + <span class="ct active">issues</span> |
| 230 | + <span class="ct">pulls</span> |
| 231 | + </div> |
| 232 | + <div class="comm-thread"> |
| 233 | + <div class="th-cat mono honey">[closed]</div> |
| 234 | + <div class="th-title">does it work with lm studio?</div> |
| 235 | + <div class="th-meta">#6 · opened by AtaaEddin · 4 replies · resolved</div> |
| 236 | + </div> |
| 237 | + <div class="comm-thread"> |
| 238 | + <div class="th-cat mono">[closed]</div> |
| 239 | + <div class="th-title">exceeding the thinking budget causes the agent to stop running</div> |
| 240 | + <div class="th-meta">#8 · opened by diagonalfish · 3 replies · resolved</div> |
| 241 | + </div> |
| 242 | + <div class="comm-thread"> |
| 243 | + <div class="th-cat mono">[closed]</div> |
| 244 | + <div class="th-title">not starting on windows</div> |
| 245 | + <div class="th-meta">#23 · opened by Kaiohshin · 2 replies · resolved</div> |
| 246 | + </div> |
| 247 | + <div class="comm-thread"> |
| 248 | + <div class="th-cat mono">[closed]</div> |
| 249 | + <div class="th-title">how are subagents spawned?</div> |
| 250 | + <div class="th-meta">#19 · opened by rahimnathwani · 2 replies · resolved</div> |
| 251 | + </div> |
| 252 | + <div class="comm-thread last"> |
| 253 | + <div class="th-cat mono">[closed]</div> |
| 254 | + <div class="th-title">context handling with llama-server</div> |
| 255 | + <div class="th-meta">#3 · opened by cmhamiche · 2 replies · resolved</div> |
| 256 | + </div> |
| 257 | + </div> |
| 258 | + </div> |
| 259 | +</section> |
| 260 | + |
| 261 | +<!-- ============================== footer ============================== --> |
| 262 | +<footer class="foot" data-screen-label="footer"> |
| 263 | + <div class="foot-top"> |
| 264 | + <span class="mono mark big"><span class="ch">l</span><span class="ch">c</span><span class="cursor"></span></span> |
| 265 | + <div class="foot-msg"> |
| 266 | + <div class="eyebrow">// small things, done thoughtfully.</div> |
| 267 | + <div class="foot-tag">an offline coding agent.<br/>kept small on purpose.</div> |
| 268 | + </div> |
| 269 | + </div> |
| 270 | + <div class="foot-bottom"> |
| 271 | + <div class="foot-cols"> |
| 272 | + <div class="fc"> |
| 273 | + <div class="fc-k mono">// project</div> |
| 274 | + <a href="https://github.com/itayinbarr/little-coder" target="_blank" rel="noopener">source</a> |
| 275 | + <a href="https://github.com/itayinbarr/little-coder/releases" target="_blank" rel="noopener">releases</a> |
| 276 | + <a href="https://github.com/itayinbarr/little-coder/blob/main/LICENSE" target="_blank" rel="noopener">license · apache-2.0</a> |
| 277 | + </div> |
| 278 | + <div class="fc"> |
| 279 | + <div class="fc-k mono">// community</div> |
| 280 | + <a href="https://github.com/itayinbarr/little-coder/issues" target="_blank" rel="noopener">issues</a> |
| 281 | + <a href="https://github.com/itayinbarr/little-coder/discussions" target="_blank" rel="noopener">discussions</a> |
| 282 | + <a href="https://github.com/itayinbarr/little-coder/blob/main/CHANGELOG.md" target="_blank" rel="noopener">changelog</a> |
| 283 | + </div> |
| 284 | + <div class="fc"> |
| 285 | + <div class="fc-k mono">// reading</div> |
| 286 | + <a href="#why">benchmarks</a> |
| 287 | + <a href="#install">install</a> |
| 288 | + <a href="https://open.substack.com/pub/itayinbarr/p/honey-i-shrunk-the-coding-agent" target="_blank" rel="noopener">the paper</a> |
| 289 | + </div> |
| 290 | + </div> |
| 291 | + <div class="foot-line"> |
| 292 | + <span>© 2026 itay inbar · apache-2.0</span> |
| 293 | + </div> |
| 294 | + </div> |
| 295 | +</footer> |
| 296 | + |
| 297 | +<script src="site.js"></script> |
| 298 | + |
| 299 | +</body> |
| 300 | +</html> |
0 commit comments