Repository navigation
Watch the 1 minute demo: https://youtu.be/a9vtBSl_j_o
You're in the middle of something and Claude Code says "5-hour limit reached". The reset is hours
away, maybe days if it's the weekly one. That is the moment this project was built for: type exit,
then keep going, and the same conversation carries on with a model running on your own machine.
Since the first release in March it has grown from a Mac server into a one-command install that runs
on Mac, Linux and Windows, fits a 16 GB MacBook, can hand the conversation over by itself when the
limit hits, and loses far fewer tool calls along the way. October shipped five releases (v0.4.0,
v0.4.1, v0.5.0, v0.6.0, v0.7.0) without much said about them. v1.0 puts them under one name.
curl -fsSL https://raw.githubusercontent.com/nicedreamzapp/claude-code-local/main/install.sh | bashWhat's new since launch
One-command install
install.shchecks the machine, picks a model that fits its memory, installs everything and puts
Claude Local on your Desktop (one-line installer since v0.3.0, #49).- The full kit (v0.6.0):
--with all(orCCL_WITH=allon Windows) adds voice, Moonstone, the
browser agent, phone control, remote screen, failover and the Trinidad Head terminal. Each add-on
installs through its own repo's installer and has its own uninstaller;uninstall.sh --allremoves
them, and your data stays unless you add--purge. - Doctor (v0.7.0):
scripts/doctor.sh(macOS and Linux) andscripts/doctor.ps1(Windows)
check the core and every add-on you installed.--fixrepairs what it can;--reportwrites a
privacy-safe summary for a bug report. - A version number.
VERSIONat the repo root says 1.0.0, and the server banner,/health,
both installers and both doctor reports now show it.
Mac, Linux and Windows
- Linux and Windows (v0.5.0). Off a Mac the installer looks at your hardware (NVIDIA, AMD/Vulkan
or CPU), downloads a pinned llama.cpp build, picks the strongest vision model that fits your memory
at the highest precision it can, and launches Claude Code pointed at it. Windows:
irm https://raw.githubusercontent.com/nicedreamzapp/claude-code-local/main/install.ps1 | iex - The Anthropic and tool-call translation is backend agnostic now, so MLX and llama.cpp share one
code path. The llama.cpp build is pinned by version and checksum, and every model file by size
and SHA-256. - On a Mac nothing changes: MLX on Apple Silicon is still the engine.
16 GB Macs (and 8 GB)
setup.sh sees the memory and sets up a model that fits (v0.7.0). Both read images.
| Your Mac | Model | Server memory, peak | Speed (M4 Pro) |
|---|---|---|---|
| 16 GB | Qwen 3.5 4B, bf16, 16K context | 10.6 GB | about 22 tok/s |
| 8 GB | Qwen 3.5 2B, 8-bit, 16K context | 4.2 GB | about 92 tok/s |
Both passed our Claude Code test: read a file, fix a bug with Edit, run a script, describe an image.
On "write a program and run it" the 4B got the right program 5 of 5 times and the 2B 3 of 5.
Keep requests to one clear step at a time. Measured numbers and limits:
docs/SMALL-MACS.md.
If you own one of these Macs, a report in #57 helps everyone else decide.
Limit handoff
keep going(v0.4.0): typeexit, thenkeep going, and your last Claude Code conversation
in that folder carries on with a local model, or a free cloud model if you add an OpenRouter key.
Picking a cloud model sends the conversation to OpenRouter; the local ones don't leave the Mac.- Automatic keep going: one
StopFailurehook (scripts/limit-handoff.py) opens a new window
in the same folder when Claude Code stops on arate_limiterror, and the conversation carries on
with no menu. It fires at most once per folder every 30 minutes.
docs/AUTO-HANDOFF.md - Security fix (v0.4.1, GHSA-xqc9-f3vr-p5pp, high): a folder name with control characters could
run a command when the hook's Terminal fallback opened Terminal. The folder name is no longer typed
into Terminal at all. Thanks to @anelyberdecias-oss for the report. - A usage limit page with the exact
limit messages and three steps to switch to local and back (#88). Plainclaudeis never changed
by the install, so it still uses your Claude plan when the limit resets.
Parser
The server's job is turning each model's own tool-call format into Claude Code tool calls. Most of
the fixes since launch are the same kind of bug: something the model or Claude Code sent got quietly
thrown away.
- Two Read calls in one reply no longer collapse into one (#64).
- Gemma 4 keeps its number and boolean arguments, nested values and dashed keys (#65, #68).
- A JSON array inside
<tool_call>tags is read as a list instead of crashing with a 500 (#66). - An image opened by Read becomes a short marker instead of base64 in the prompt; one screenshot
used to push a 32 GB Mac into swap (#67). - Errors come back in Anthropic's shape, and a bad request body gets a 400 (#69).
stop_sequencesandis_errorare honored (#70).<think>blocks are filtered from the live
stream (#71). - Code mode keeps the
Skilltool, and Hermes 4 14B's fenced JSON arrays parse (#56, @zwolf25). - v0.7.0: Gemma 4 calls that drop their opening marker on long writes are recovered,
<function=Name>calls with<param>arguments parse, and tool names match case-insensitively
with common aliases (Run, Execute, Shell to Bash; WriteFile, Save to Write; ReadFile, Cat to Read). - Since v0.7.0: on chat templates that only render a tool result after structured
tool_calls
(stock Gemma 4), calls now go out structured, so the model sees its tool results. Before, Gemma 4
E4B said it was working blind in 18 of 30 benchmark runs (#89).
The test suite runs without a model: python3 -m pytest passes 477 tests on this release
(5 skipped that need a live model or a tool the test machine doesn't have).
Which model should I run?
Setup picks by memory. The scores below come from the
Agent-12 leaderboard, which runs models through real
agent tasks in its own lean harness, not inside Claude Code, so the same model can score and time
differently here.
| Memory | Setup picks | Agent-12 (M5 Max 128 GB) |
|---|---|---|
| 96 GB and up | Qwen 3.8 27B, 8-bit | 12/12 easy in 122 s, 7/8 hard in 401 s (with the DFlash 2 drafter) |
| 64 to 95 GB | Gemma 4 31B, 4-bit | 11/12 easy in 92 s, 8/8 hard in 348 s |
| 32 to 63 GB | Gemma 4 12B, 4-bit | not on Agent-12 yet |
| 16 GB, 8 GB | Qwen 3.5 4B bf16, Qwen 3.5 2B 8-bit | not on Agent-12 yet |
What it can't do yet
A local model is not Claude Opus. Big models on a 64 or 96 GB Mac handle real multi-step work; on 8
or 16 GB, keep to one clear step at a time, and a task that overflows the 16K context compacts and
often loses the thread. keep going and the automatic handoff are Mac only for now. Phone control
and failover are Mac only. There is no measured number for a base M1, M2 or M3 yet.
Thanks to everyone who filed issues and sent PRs, including @zwolf25, @pratikgx, @tadrianonet,
@KaoCSC and @anelyberdecias-oss.
Full list of changes since v0.3.0: v0.3.0...v1.0.0