Skip to content

v1.0.0, Hit your limit? Keep going.

Latest

Choose a tag to compare

@nicedreamzapp nicedreamzapp released this 03 Nov 09:05
080bcc7

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 | bash

What's new since launch

One-command install

  • install.sh checks 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 (or CCL_WITH=all on 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 --all removes
    them, and your data stays unless you add --purge.
  • Doctor (v0.7.0): scripts/doctor.sh (macOS and Linux) and scripts/doctor.ps1 (Windows)
    check the core and every add-on you installed. --fix repairs what it can; --report writes a
    privacy-safe summary for a bug report.
  • A version number. VERSION at 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): type exit, then keep 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 StopFailure hook (scripts/limit-handoff.py) opens a new window
    in the same folder when Claude Code stops on a rate_limit error, 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). Plain claude is 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_sequences and is_error are honored (#70). <think> blocks are filtered from the live
    stream (#71).
  • Code mode keeps the Skill tool, 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