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.

Platform
Install curl -fsSL https://lo0.ai/install.sh | sh

Downloads the release for your machine, checks it against the published checksum and installs it to ~/.local/bin.

Install irm https://lo0.ai/install.ps1 | iex

In PowerShell. Installs to %LOCALAPPDATA%\Programs\lo0 and adds it to your PATH.

Install go install lo0.ai/lo0/cmd/lo0@latest

Builds from source. Needs Go 1.27 or newer.

Then run lo0. Other ways to install

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.

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.

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.

lo0 in the browser: 65% of your work can run on this machine today, a chart of every session's peak context against Qwen3.6-35B-A3B's 256k window, and the commands to try or keep it.
lo0's page for Qwen3.6-35B-A3B: 65% of sessions fit, 28.9 GiB of 48 GiB memory, a typical reply in 45 seconds against 8, and its speed at 8k, 87.1k and 256k of context.

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.

  1. 01Scan

    Reads your hardware, local runtimes and Claude Code setup, and your Claude Code and Codex history.

    lo0 scanRead-only

  2. 02Match

    Works out which open-weight models fit your memory, your context and your tools, and how fast they run here.

    lo0 matchRead-only

  3. 03Try

    Prepares a model in Ollama and starts Claude Code or OpenCode on it for one session. Their settings stay as they are.

    lo0 tryChanges, once you confirm

  4. 04Keep

    Makes it permanent: a claude-local command beside claude, or OpenCode pointed at the model. Every file it replaces is backed up.

    lo0 migrateChanges, once you confirm

  5. 05Undo

    Puts back everything migrate changed, from the journal it kept as it went.

    lo0 migrate --undoChanges, once you confirm

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
KV cache
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.

Context window

Each bar is a group of sessions, placed by the largest prompt the model saw in that session. Log scale, from the example history.

Share of sessions that would have fitted in each context window
WindowSessions that fit
32kunder 1%
64k1%
128k33%
256k61%
1M100%

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.

Filter by tier

Catalogue of 5 Nov 2026

  • 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 env and headers are reduced to key names.

  • Paths stay local

    Repository paths appear in your own report. --redact and 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.

Platform
Install curl -fsSL https://lo0.ai/install.sh | sh

Downloads the release for your machine, checks it against the published checksum and installs it to ~/.local/bin.

Install irm https://lo0.ai/install.ps1 | iex

In PowerShell. Installs to %LOCALAPPDATA%\Programs\lo0 and adds it to your PATH.

Install go install lo0.ai/lo0/cmd/lo0@latest

Builds 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.txt does what you expect. Add --redact to replace your project paths before sharing.