Free and open source · macOS, Linux and Windows
Find the local model that fits your machine and your work.
lo0 reads your hardware and your Claude Code and Codex history, shows which open models can do your work, and moves your coding agent onto the one you choose.
curl -fsSL https://lo0.ai/install.sh | shDownloads the release for your machine, checks it against the published checksum and installs it to ~/.local/bin.
irm https://lo0.ai/install.ps1 | iexIn PowerShell. Installs to %LOCALAPPDATA%\Programs\lo0 and adds it to your PATH.
go install lo0.ai/lo0/cmd/lo0@latestBuilds from source. Needs Go 1.27 or newer.
Then run lo0. Other ways to install
lo0 Apple M5 Pro · 48 GiB for models · Ollama running ▌ 1 Home Your local AI setup 2 Models 3 Harnesses 65% of your work can run on this machine today 4 Installed ███████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 5 Your Claude 244 sessions fit in Qwen3.6-35B-A3B's 256k window · 129 would compact A TYPICAL REPLY WHERE YOUR COMMANDS GO Opus 5.5 · Claude Code █████ 8s claude ──▶ Claude Qwen3.6-35B-A3B ██████████████████████████ 45s estimated no local model kept yet BEST NEXT STEP Qwen3.6-35B-A3B is already downloaded and fits 65% of your sessions. › Try it in Claude Code for one session nothing in Claude Code changes Keep it: set it up in Claude Code for good undo any time Compare it with Qwen3-Coder-Next 37 tok/s, needs 43.8 GiB Browse every model that fits, and why THIS MACHINE YOUR CLAUDE 3 models · 30.2 GiB 373 sessions in 6 months Ollama running $2,746 at API prices 246 GiB free for downloads $360 in the last 30 days ↑↓ choose enter go tab next screen ctrl+k commands ? keys
Coding agents
Claude Code · OpenCode
History from
Claude Code · Codex
Runtimes
Ollama · LM Studio · llama.cpp
Hardware
Apple Silicon · NVIDIA · AMD
Benchmarks tell you how a model does on someone else’s tasks. lo0 looks at yours.
- Context
- How much context your sessions reach, and how many would fit in a local model’s window.
- Tools
- Which tools, hooks and MCP servers your work depends on, and which of them work with a local model.
- Hardware
- The largest model your memory can hold with room left for the cache, and how fast it will write.
A tour
Open lo0 and the first screen tells you whether your work can run here.
Run lo0 in any terminal. It scans in under a second, then shows how much of your work runs here today, how long a reply would take compared with the model you use now, and the best next step, one key away.
Models
Every model that fits, and how well
Each model shows the share of your sessions its window would have held, how fast it writes on your chip and the memory it needs, cache included, at the context you use.
What it is good and bad at is taken from its model card and shown apart from what lo0 measured. Press c to compare two to four side by side, or b to benchmark one.
lo0 Apple M5 Pro · 48 GiB for models · Ollama running 1 Home What can you run, and how well? ▌ 2 Models 3 Harnesses ● Fits 28 ○ Installed 3 ○ All 37 sort best for you 4 Installed 5 Your Claude MODEL YOUR SESSIONS SPEED TIER MEMORY ▌ Qwen3.6-35B-A3B ✓ ████████░░░░ 65% 33 t/s very slow A ██████░░░░ 28.9 GiB Qwen3-Coder-Next ████████░░░░ 65% 37 t/s very slow A ██████████ 43.8 GiB Gemma-4-26B-A4B ████████░░░░ 65% 25 t/s very slow B ███████░░░ 32.2 GiB Nemotron-3.5-Lightning-3… ████████░░░░ 65% 43 t/s 3.3× slower B ████████░░ 34.3 GiB Qwen3-Coder-30B-A3B ████████░░░░ 65% 12 t/s very slow A ██████████ 45.7 GiB Nemotron-3-Super-120B-A1… ████████░░░░ 65% 28 t/s very slow A ██████████ 46.8 GiB GLM-4.7-Flash ███████░░░░░ 54% 17 t/s very slow A ███████░░░ 32.4 GiB Qwen3.6-27B ████████░░░░ 65% 8 t/s very slow A ███████░░░ 33.3 GiB Qwen3.8-27B ████████░░░░ 65% 8 t/s very slow A ███████░░░ 33.3 GiB Devstral-Small-2-24B ███████░░░░░ 57% 5 t/s very slow A ██████████ 48 GiB ──────────────────────────────────────────────────────────────────────────────────────────────── Qwen3.6-35B-A3B ✓ installed Qwen · Apache 2.0 · Apr 2026 Multimodal MoE model focused on agentic coding and repo-level reasoning. GOOD AT WATCH OUT FOR + SWE-bench Verified 73.4 with only 3B active – Thinks by default; disable via + Terminal-Bench 2.0 51.5 chat_template_kwargs + Preserve-thinking option for agent loops – Lab advises at least 128k of context + 262K native context, ~1M with YaRN – No /think or /nothink soft switch SCORES SWE-bench Verified 73.4 · Terminal-Bench 2.0 51.5 · SWE-bench Pro 49.5 MCPMark 37.0 · SWE-bench Multilingual 67.2 ON THIS MACHINE Memory █████████████████████████████░░░░░░░░░░░░░░░░░░░ 28.9 GiB of 48 GiB ■ weights 22.3 GiB ■ KV cache 5.1 GiB ■ runtime 1.5 GiB Sessions █▇▆█▆▆▅▄▃▄▄▃▂▂▃▂▂▂▂▂▂▁▂▁▁ ▂▁▁▁▁▁▁▁▁▁▁ ▁ ▁▁ ▅ 65% fit ↑↓ model enter details t try b measure c compare f filter s sort / search ctrl+k commands ? keys
Try
Try it for one session. Keep it if it holds up.
lo0 try shows every download, its size and where it comes from, then prepares the model in Ollama and starts Claude Code on it. The settings live in that session’s environment, so nothing in Claude Code changes.
lo0 migrate makes it permanent after the same review. It adds aclaude-local command that runs Claude Code on the local model, andclaude still goes to Claude. Every change is recorded, and lo0 migrate --undo reverses it.
lo0 Apple M5 Pro · 48 GiB for models · Ollama running ▌ 1 Home Try Qwen3.6-35B-A3B in Claude Code on a local model 2 Models 3 Harnesses Plan 4 Installed Harness Claude Code on a local model 5 Your Claude Model Qwen3.6-35B-A3B · Q4_K_M · 256k window Background Qwen3.5-2B · Q8_0 · 256k window Runtime Ollama · http://127.0.0.1:11434 Served as lo0/qwen3.6-35b-a3b:256k lo0/qwen3.5-2b:256k Steps ✓ Qwen3.6-35B-A3B at Q4_K_M is already in Ollama ✓ Create lo0/qwen3.6-35b-a3b:256k with a 256k context window 1 Download Qwen3.5-2B at Q8_0 2.3 GiB ollama pull hf.co/unsloth/Qwen3.5-2B-GGUF:Q8_0 2.3 GiB from Hugging Face, fetched by Ollama 2 Create lo0/qwen3.5-2b:256k with a 256k context window based on hf.co/unsloth/Qwen3.5-2B-GGUF:Q8_0 num_ctx 262,144 3 Check that Ollama answers as lo0/qwen3.6-35b-a3b:256k POST http://127.0.0.1:11434/v1/messages 4 Check that Ollama answers as lo0/qwen3.5-2b:256k POST http://127.0.0.1:11434/v1/messages Session Start claude once the steps are done ANTHROPIC_BASE_URL=http://127.0.0.1:11434 ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_MODEL=lo0/qwen3.6-35b-a3b:256k ANTHROPIC_DEFAULT_OPUS_MODEL=lo0/qwen3.6-35b-a3b:256k ANTHROPIC_DEFAULT_SONNET_MODEL=lo0/qwen3.6-35b-a3b:256k ANTHROPIC_DEFAULT_HAIKU_MODEL=lo0/qwen3.5-2b:256k enter run it ↑↓ scroll esc back
Web
Or read it in your browser
lo0 web serves the same assessment as web pages: a chart of every session against the model’s window, and a page for each model with its speed at each context length.
It listens on this machine only and needs the token it prints. The pages change nothing: each step is a command you run in the terminal, where you see the plan first.


Screens from lo0 on an Apple M5 Pro with 64 GiB, reading a demo history of 373 Claude Code sessions.
How it works
Two steps read. Three change things, and only after you say yes.
Anything that changes your machine, such as downloading a model or writing a config, is shown as a plan first: every step, every file and every download with its size.
01Scan
Reads your hardware, local runtimes and Claude Code setup, and your Claude Code and Codex history.
02Match
Works out which open-weight models fit your memory, your context and your tools, and how fast they run here.
03Try
Prepares a model in Ollama and starts Claude Code or OpenCode on it for one session. Their settings stay as they are.
04Keep
Makes it permanent: a claude-local command beside claude, or OpenCode pointed at the model. Every file it replaces is backed up.
05Undo
Puts back everything migrate changed, from the journal it kept as it went.
What the scan reads
- Hardware
OSsystem_profilernvidia-smirocm-smiWindows registry- CPU, memory and whether it is unified, GPUs and VRAM, memory bandwidth, free disk.
- Local runtimes
OllamaLM Studiollama.cpp cache- Installed runtimes and models, with size, quantisation, context length and tool-calling support.
- Claude Code setup
~/.claude~/.claude.json.claude/.mcp.json- Instruction files, MCP servers, hooks, commands, subagents, skills, plugins and permission rules.
- Session history
~/.claude/projects~/.codex/sessions- Peak context per session, compactions, tool and MCP calls, reply times, languages and repositories.
A missing GPU tool or a malformed transcript line becomes a warning at the end of the report instead of stopping the scan.
How lo0 decides
Three numbers decide whether a model can do your work.
1Usable by models
How much memory a model can occupy while staying on the GPU. On Apple Silicon that is the share of unified memory macOS lets the GPU wire: about two thirds, or three quarters above 36 GiB. On discrete GPUs it is total VRAM across cards.
Weights and the KV cache both have to fit inside it. Shrink either one, with a smaller quantisation or an 8-bit cache, and the window can grow. Try it.
- Weights
- 30.230.223.323.317.217.2 GiB
- KV cache
- 16.312.823.212.824.012.8 GiB
- Runtime
- 1.5 GiB
- Left over
- 0.03.50.010.45.316.5 GiB
- Window
- 174k256k247k256k256k256k tokens
- Sessions that fit
- 46%61%60%61%61%61%
- Quality kept
- ~100%~99%~99%~98%~97%~96%
Qwen3-Coder-30B-A3B on the example machine. The window is whatever the cache can hold once the weights are in, up to the model’s 256k limit.
2Peak context
The largest prompt the model saw in each session, read from token usage in your transcripts and shown as percentiles across all of them.
3Fits within
The share of your sessions that would have fitted in a 32k, 64k, 128k, 256k and 1M token window. Most local models top out at 128k or 256k.
If a third of your sessions fit in 128k, a 128k model can take a third of them as you work today.
Each bar is a group of sessions, placed by the largest prompt the model saw in that session. Log scale, from the example history.
| Window | Sessions that fit |
|---|---|
| 32k | under 1% |
| 64k | 1% |
| 128k | 33% |
| 256k | 61% |
| 1M | 100% |
Your setup
What carries over, and what stays behind.
Claude Code on a local model keeps your instructions, MCP servers, hooks, skills and permissions as they are. For a move to OpenCode, lo0 maps each part and says which work as they are, which it converts and which have no equivalent.
Tools built into the Claude apps, such as their browser, do not exist outside them, so lo0 counts how often your history relied on them. The chart shows a move to OpenCode.
- Instructions
- 10 as is · 24 converted
- Skills
- 9 as is · 24 converted
- MCP servers
- 6 converted
- Permissions
- 6 converted
- Hooks
- 8 converted · 2 partly · 18 lost
- Plugins
- 3 partly
- Settings
- 2 converted · 1 lost
- App tools
- 20 lost · 10,071 calls in your history
Model catalogue
36 open-weight coding models, ranked for long tool-calling sessions.
Each entry records parameter counts, attention layout and quantised file sizes, enough to work out memory use at any context length. Tiers run from A to D, judged from each model’s published agentic coding scores, and every claim links to its model card.
- Devstral-Small-250723.6B · 128kapache-2.0A
- Devstral-Small-2-24B24B · 256kapache-2.0A
- Qwen3.6-27B27.8B · 256kapache-2.0A
- Qwen3.8-27B27.8B · 256kapache-2.0A
- Qwen3-Coder-30B-A3B30.5B · 3.4B active · 256kapache-2.0A
- GLM-4.7-Flash31.2B · 3B active · 198kmitA
- Qwen3.6-35B-A3B36B · 3B active · 256kapache-2.0A
- Qwen3-Coder-Next79.7B · 3B active · 256kapache-2.0A
- GLM-4.5-Air110B · 12B active · 128kmitA
- gpt-oss-120b117B · 5.1B active · 128kapache-2.0A
- Nemotron-3-Super-120B-A12B124B · 12B active · 256kcustom licenceA
- Qwen3.8-Flash-Next180B · 6B active · 256kcustom licenceA
- MiniMax-M2.7229B · 11B active · 200kcustom licenceA
- DeepSeek-V4-Flash291B · 13B active · 1MmitA
- Qwen3-Coder-480B-A35B480B · 35.5B active · 256kapache-2.0A
- DeepSeek-V3.2685B · 37B active · 128kmitA
- GLM-5.3753B · 51.2B active · 1Mcustom licenceA
- Kimi-K2-Thinking1026B · 32.9B active · 256kcustom licenceA
- Granite-4.2-8B8.8B · 128kapache-2.0B
- gpt-oss-20b20.9B · 3.6B active · 128kapache-2.0B
- Gemma-4-26B-A4B25.8B · 3.8B active · 256kapache-2.0B
- Granite-4.2-30B29.3B · 128kapache-2.0B
- Gemma-4-31B31.3B · 256kapache-2.0B
- Nemotron-3.5-Lightning-30B-A3B31.6B · 3B active · 256kcustom licenceB
- Qwen3-32B32.8B · 32kapache-2.0B
- Qwen3.5-2B2.3B · 256kapache-2.0C
- Granite-4.2-3B3.7B · 128kapache-2.0C
- Ministral-3-3B3.8B · 256kapache-2.0C
- Qwen3.5-4B4.7B · 256kapache-2.0C
- Gemma-4-E2B5.1B · 2.3B active · 128kapache-2.0C
- Gemma-4-E4B8B · 4.5B active · 128kapache-2.0C
- Ministral-3-8B8.9B · 256kapache-2.0C
- Qwen3.5-9B9.7B · 256kapache-2.0C
- Ministral-3-14B13.9B · 256kapache-2.0C
- Nemotron-3-Nano-30B-A3B31.6B · 3.6B active · 256kcustom licenceC
- Qwen2.5-Coder-32B32.8B · 32kapache-2.0C
Privacy
lo0 reads sensitive files, so it is strict about what it keeps.
Nothing about you leaves
lo0 goes online to check for updates and to download what you confirmed in a plan. No request carries your usage, paths, prompts or setup, and none goes to a lo0 server.
Read-only by construction
Every scan stage receives a Go
fs.FS, which has no write methods. Only a confirmed plan writes.Counts and names, not content
No prompt text, model output, file contents, command arguments or secret values. MCP
envandheadersare reduced to key names.Paths stay local
Repository paths appear in your own report.
--redactand the saved report replace them before you share it.
Tests feed secrets, prompts and command arguments through the scanners and fail if any of them reach the output. More on privacy
Questions
Running a coding model on your own machine.
For the whole setup, step by step, read Run Claude Code on a local model.
Can Claude Code run on a local model?
Yes. Claude Code sends its requests to whatever Anthropic-compatible address ANTHROPIC_BASE_URL names, and Ollama serves one. lo0 creates the model in Ollama with the context window your sessions need. lo0 try starts Claude Code on it for one session, and lo0 migrate adds a claude-local command that always does, while claude keeps using Claude. Your instructions, MCP servers, hooks and skills keep working. Tools only the Claude apps provide, such as their built-in browser, do not.
Which local model is best for coding on my machine?
The best one is the strongest model that fits your memory with room left for the context your sessions reach. lo0 knows 36 open-weight models built for agentic coding or tool calling, including Qwen, GLM, Devstral, Gemma, gpt-oss, Nemotron, DeepSeek, Kimi and MiniMax. For each it works out the memory it needs at your context length, the share of your past sessions its window would have held and how fast it writes on your chip, then ranks them.
How much memory do I need to self-host a coding model?
Weights and the KV cache both have to fit in the memory the GPU can use. On Apple Silicon, macOS lets the GPU wire about two thirds of unified memory, or three quarters above 36 GiB; on a PC it is your VRAM. Qwen3.6-35B-A3B at Q4_K_M with a 256k window takes 28.9 GiB: 22.3 GiB of weights, 5.1 GiB of KV cache and 1.5 GiB for the runtime. lo0 shows the same sum for every model on your machine, and how much more the ones that do not fit would need.
Is a local model as fast as Claude or GPT?
Usually not, and lo0 says by how much before you switch. On an Apple M5 Pro, Qwen3.6-35B-A3B writes about 33 tokens a second, so a typical reply that takes 8 seconds with Opus 5.5 takes about 45. lo0 estimates speed from llama.cpp results for your chip, and lo0 benchmark measures a downloaded model on your own machine.
Does lo0 send my code or prompts anywhere?
No. lo0 reads your history on your machine and keeps counts and names, never prompt text, model output, file contents or secret values. It goes online to check for updates and to download what you confirmed in a plan, from the sources the plan shows. No request carries anything about you, and none goes to a lo0 server. --offline skips every lookup that only adds information.
What does lo0 change on my machine?
The assessment only reads. Trying or keeping a model is shown as a plan first, with every download and its size, every file and every command, and runs only when you confirm it. lo0 try changes nothing in your harness. lo0 migrate backs up every file it replaces and records each change, so lo0 migrate --undo puts them back.
Which runtimes and coding agents does lo0 support?
Runtimes: Ollama, set up end to end, plus LM Studio and llama.cpp with guided steps. Harnesses: Claude Code on a local model and OpenCode. History: Claude Code and Codex session logs. It runs on macOS, Linux and Windows, and detects Apple Silicon, NVIDIA and AMD GPUs.
Is lo0 free?
Yes. lo0 is free software under the GNU AGPL v3.0. There is no account, no subscription and no telemetry.
Install
One command, then lo0.
A single binary for macOS, Linux and Windows on amd64 and arm64, with GPU detection for Apple Silicon, NVIDIA and AMD. No account, no runtime to install first.
curl -fsSL https://lo0.ai/install.sh | shDownloads the release for your machine, checks it against the published checksum and installs it to ~/.local/bin.
irm https://lo0.ai/install.ps1 | iexIn PowerShell. Installs to %LOCALAPPDATA%\Programs\lo0 and adds it to your PATH.
go install lo0.ai/lo0/cmd/lo0@latestBuilds from source. Needs Go 1.27 or newer.
Checksums, versions and uninstalling: the install guide.
lo0- The interactive workbench, in any terminal
lo0 web- The same assessment in your browser, served to this machine only
lo0 match- Verdict, models that fit and what carries over, as a report
lo0 try- Start the recommended harness on the best model for one session
lo0 benchmark- Measure a downloaded model’s real speed on this machine
lo0 migrate- Show the plan to keep a model and harness, then ask
lo0 migrate --undo- Show how to reverse everything migrate changed, then ask
--json- The full result as JSON, for match, scan and migrate --dry-run
- Output
- Progress goes to stderr and the report to stdout, so
lo0 match > report.txtdoes what you expect. Add--redactto replace your project paths before sharing.