Model or dataset
nicedreamzapp/claude-code-local avatar
nicedreamzapp/claude-code-local

claude-code-local: an MLX-native Anthropic API server for running Claude Code on Apple Silicon

Run Claude Code 100% on-device with local AI on Apple Silicon. MLX-native Anthropic-API server. 6 fighters incl. Muse-Glimmer 30B (now multimodal — reads images, abliterated), Gemma 4 31B, Qwen 3.5 122B (65 tok/s), DeepSeek V4 Flash (1M ctx). Private, offline, airgap-ready. Built for NDA / legal / healthcare workflows.

3,309 stars626 forksPythonMIT

At a glance

What is it?
The project removes the translation proxy between Claude Code and a local model by serving the Anthropic API directly from MLX. It is macOS and Apple Silicon only, and the README's speed numbers come from the maintainer's own leaderboard.
Who is it for?
Adopt claude-code-local if you are on Apple Silicon, need Claude Code sessions to stay on the machine, and can accept that the model lineup and the speed numbers are the maintainer's own. Do not adopt it if your team is on Windows or Linux, since the README documents no path there, or if you need a supported vendor with an SLA.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The proxy problem claude-code-local was built to remove

Claude Code speaks the Anthropic API. Local model servers such as Ollama speak the OpenAI API. The usual workaround is a translation proxy sitting between the two, which means three processes and two API translations on every request. The README states the project's central claim plainly: this server speaks Anthropic natively, so the chain collapses to Claude Code talking to one process that loads the model. The README contrasts 133 seconds per task through a proxy with 17.6 seconds per task direct, and attributes the difference to removing the proxy. Those figures come from the project's own README, not from an independent measurement, and the README does not describe the hardware, prompt or task used to produce them. Treat the ratio as the maintainer's claim rather than a number you can expect on your machine.

The audience is narrow and stated: people who hit a Claude usage limit mid-session, and teams under NDA, legal or healthcare constraints who cannot send code to a hosted endpoint. The README frames the second group with an airgap demo in which Wi-Fi is off and lsof is running while a 70B model reads a confidential document. That framing is the product's actual pitch. It is not a general local-inference toolkit.

How the server, the models and the launchers fit together

The repository layout is the clearest description of the architecture. There is a proxy/ directory, but the README's whole argument is that the default path does not use it. The parts that matter are launchers/, which holds the per-model start scripts, agent/, smart-router/, bin/, bench/ and install.sh at the top level. The server process loads an MLX model and exposes an Anthropic-compatible endpoint; Claude Code is pointed at that endpoint instead of the hosted one. Model choice is explicit rather than automatic: the README lists Hermes 4 14B, Gemma 4 31B, Muse-Glimmer 30B, Qwen 3.8 27B bf16, Llama 3.3 70B and Qwen 3.5 122B, plus DeepSeek V4 Flash through a separate ds4 path that the README says reaches a 1M context.

Muse-Glimmer 30B is described as multimodal and abliterated, meaning the refusal behaviour has been removed from the weights. That is a deliberate trade-off, not a neutral feature: an abliterated model will answer prompts a safety-tuned model declines, and it may also produce output a tuned model would have refused for good reason. If your workflow depends on a model declining certain requests, this is the wrong fighter to pick. The README also mentions voice mode, a browser agent and phone control as separate documented modes, each with its own file under docs/.

Installing claude-code-local and running a first task

The README gives a single install command, piped from the repository's install.sh on the main branch. It downloads and runs the script; nothing in the README suggests you need an API key or an account first.

bash
curl -fsSL https://raw.githubusercontent.com/nicedreamzapp/claude-code-local/main/install.sh | bash

Piping a remote script into bash means you are executing whatever that URL returns at that moment. If that matters for your environment, fetch install.sh, read it, and run it from disk instead. The repository also ships setup.sh and uninstall.sh at the top level, and an uninstall path is more than many projects of this kind provide.

After install, the model is selected by a launcher rather than by a config flag. The README points at the launchers/ directory for the per-model start scripts, so the first real step is choosing a fighter that fits your RAM and starting it there. The README states the tool works on a 16 GB MacBook and scales with memory, and it links a section on what runs on your Mac. It does not publish a table of model sizes against RAM in the README excerpt, so check that section before downloading a 122B model. Once the server is up, you start Claude Code as usual in your project directory; the README's claim is that the same terminal and the same project work, with the local model answering. If Claude Code reports an authentication or endpoint error, the server is not the endpoint Claude Code is pointed at, which is the first thing to check.

Apple Silicon only, and what that rules out

The README says Apple Silicon and MLX, and the tooling is macOS-shaped throughout: install.sh, launchers/, a Mac mini used as a home server in one of the demos. There is no Windows or Linux installation path in the README. That matters because the search data behind this project shows people asking how to install it on Windows and on Linux, and the honest answer is that the README does not describe either. MLX is Apple's array framework, so a port is not a packaging exercise; it would mean a different inference backend.

The second limitation is that the quality ceiling is whatever the local model can do. A 14B model driving an agent that edits files will make different mistakes than a hosted frontier model, and the README's answer to that is the Agent-12 leaderboard, which runs each model through agent tasks in a sandbox and judges the filesystem result rather than the model's prose. That is a better methodology than a chat benchmark, and the README describes fixed caps, temperature 0 and a fresh sandbox per task. It is still the project's own leaderboard, judged by the project's own harness. Nothing here is a third-party evaluation.

claude-code-local against the Ollama proxy route

The obvious alternative is what most people already do: run Ollama, put a translation proxy in front of it, and point Claude Code at the proxy. That approach has real advantages. Ollama runs on macOS, Linux and Windows, supports a wide range of quantised models, and the proxy layer is a separate component you can swap or patch. If you are not on a Mac, it is the only route of the two.

The difference in approach is where the translation happens. The proxy route converts Anthropic-shaped requests into OpenAI-shaped ones and back, on every call, in a third process. claude-code-local removes that conversion by implementing the Anthropic API in the server itself. The README's argument is that this is where the latency lives. The counter-argument the README does not make is that a proxy is also an abstraction boundary: it lets you change model backends without touching Claude Code. Removing the proxy means the server is now both the API surface and the inference engine, so a change on either side lands in the same code. For a single-machine setup that is a fair trade. For a team standardising on one backend across mixed hardware, it is not.

Maintenance, releases and what MIT does and does not cover

The repository is not archived, and the last push was on 2026-09-09, days before this writing. The release history is short and specific: v0.1.0 on 2026-05-08 added verified-offline mode and 16 GB Mac support, v0.2.0 on 2026-08-05 addressed prompt cache correctness, and v0.3.0 on 2026-08-22 introduced the leaderboard. Three releases in roughly four months, each with a stated theme. That is a young project with a fast-moving surface, and the README's roadmap section signals more to come, so expect the model lineup and the launchers to change under you.

The licence is MIT, which is permissive and short. It covers the code in this repository. It does not cover the model weights you download, and those carry their own licences from their respective publishers; the README does not enumerate them, and the abliterated Muse-Glimmer build in particular is a modified derivative whose terms you should read at the source. MIT also offers no warranty, which is worth stating plainly for anyone considering this in a legal or healthcare setting: the licence gives you permission to use the software, not any assurance about its behaviour or output.

Editorial conclusion

Adopt claude-code-local if you are on Apple Silicon, need Claude Code sessions to stay on the machine, and can accept that the model lineup and the speed numbers are the maintainer's own. Do not adopt it if your team is on Windows or Linux, since the README documents no path there, or if you need a supported vendor with an SLA. Before committing, run the install script, confirm the server answers on the Anthropic endpoint, and check that your chosen model fits your RAM.

Frequently asked questions

What are the differences between Claude Code local and online?

Online Claude Code sends requests to a hosted model and needs a subscription or API key; claude-code-local serves the Anthropic API from an MLX model on your Mac instead. The README frames the local path around privacy and around continuing work after a usage limit, and the quality ceiling is whatever local model you run.

Is Claude Code free to use locally?

The README states there is no API key and no second subscription, and the project itself is MIT licensed. The models you download have their own licences, which the README does not list, so free here means no per-token billing rather than no obligations.

How do I use Claude Code locally?

Run the install script from the README, start a model through one of the launchers, then open Claude Code in your project as usual so it talks to the local server rather than the hosted endpoint. The README says it works on a 16 GB MacBook and improves with more RAM.

How do I install Claude Code locally on Windows?

The README documents no Windows installation path. The project is built on MLX and Apple Silicon, and the install command is a macOS shell script, so Windows is not covered by the README.

How do I use Claude Code locally with Ollama?

That is the proxy route the README contrasts itself with: Ollama speaks the OpenAI API, so a translation proxy sits between it and Claude Code. claude-code-local avoids that by serving the Anthropic API directly, so the two setups are alternatives rather than steps in the same process.

How do I install Claude Code locally on a Mac?

The README gives one command that pipes install.sh from the main branch into bash, and the repository also ships setup.sh and uninstall.sh. It states the tool works on a 16 GB MacBook and scales with more memory.

Official sources

  1. License: MIT
  2. nicedreamzapp/claude-code-local on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes