Local AI models

Local AI models: our study and tests.

CodeHero can use an AI model that runs on your own PC. This page says which models we chose, how CodeHero runs them, and what we measured.

These are our measurements on one PC, made on 25 and 26 October 2026. Another computer, driver, llama.cpp version, setting or task gives other numbers. They are not guarantees.

Why a local model

Your own PC

The model runs on a computer you own, connected to CodeHero as a device. CodeHero uses it like any other AI provider, in one of its two local slots.

The text stays in your network

A ticket on a local model sends its text, code and tool output to your own PC, not to an AI company. A ticket on an AI service still sends its text to that service: you choose the provider per project and per ticket.

No charge per use

You pay for the hardware and its electricity, not for each request. Several developers can share one server.

CodeHero 5.7.0 writes its rules so that a strong model and a weaker one read them the same way. The reference reader was Qwen3.6-35B-A3B, a model that runs on your own PC: for each ticket kind it answered 29 of 29 questions about its rules correctly, twice.

The PC we test on

Computer
GMKtec EVO-X2
Processor
AMD Ryzen AI Max+ 395, with Radeon 8060S graphics
Memory
128 GB, shared by the processor and the graphics
System
Windows 11 Pro
Engine
llama.cpp’s server, Vulkan build
Graphics memory
96 GB, set in the BIOS. Windows keeps about 32 GB; llama.cpp sees about 112 GB.
Power mode
Balanced, unless a table says Performance

On Windows, llama.cpp’s ROCm build needs AMD’s HIP SDK (the graphics driver has older HIP files), so the Vulkan build is the way. Which hardware you need for these models: Hardware

How CodeHero runs a local model

  • The PC is a connected device in CodeHero (Devices, purpose «LLM»). One way for every graphics card — AMD, NVIDIA or Intel: a GGUF model file and llama.cpp’s own server.
  • A ticket with the skill local-llm does the setup on the PC. Every install is said first — what, where, how big, how long — and runs only after your yes: llama.cpp into C:\CodeHero\llm, each model into C:\CodeHero\models. Each file is checked by its SHA-256.
  • The server always needs an API key. The key stays on the PC and goes into CodeHero’s settings without being shown.
  • The server starts again at every restart of the PC, before anyone logs in.
  • The ticket’s think mode decides the model’s thinking: «off» = no thinking; the other modes think up to a token budget, and then the model answers. A quarter of the output always stays for the answer.
  • A temperature guard runs next to the server. It reads the graphics card’s temperature every 5 seconds — Windows’ own reading, the one Task Manager shows, with no driver to install. At 90 °C for 10 seconds it stops the server, writes why, and never starts it again by itself.

Who reaches it, and how — you choose

WhoHow
CodeHero, on your own machineThrough the device’s SSH (a tunnel): nothing to open on the PC
CodeHero or your team, on the same networkhttp://<the PC’s IP>:<port>/v1 + the API key
CodeHero or your team, in the CodeHero VPNhttp://<its VPN IP>:<port>/v1 + the API key

Your team gets only the address and the key, never the PC’s SSH login. On Windows the two network ways need the port allowed in Windows’ firewall, for Private networks only: your decision. CodeHero never changes the PC’s firewall.

One developer

The server can use the model’s MTP head or its drafter: it guesses a few tokens ahead, and the model checks them. Faster answers for one user.

A team of 3–5

Several «slots»: each user gets the model’s full context in a shared pool, without MTP. Each user’s speed drops; the total goes up.

The ten models CodeHero knows

CodeHero 5.7.0 has a catalog of ten models: the official files and, for nine of them, unsloth’s files, every size with its SHA-256 from Hugging Face, their vision and MTP files, and their settings for development work. It picks the 8-bit file when it fits the graphics card’s memory, else the 4-bit one.

ModelTypeFile size: 8-bit · 4-bitVisionFaster for one userLicence and notes
Qwen3.6-35B-A3BMoE, 35B (3B active)36.9 GB · 20–22 GByesMTP (side file)Apache-2.0. Most of our measurements use it.
Qwen3.8-27Bdense, 27B29 GB · 18–19 GByesMTP (a side file; inside unsloth’s file)Apache-2.0. Its template takes the effort low, medium or xhigh; CodeHero’s balanced is medium.
Qwen3.8-Flash-NextMoE, 125B (6B active)— · 102 GByesMTP (side file)Qwen Community License: free for your own development, commercial use too. A separate licence from Qwen only for a company that offers models to others (an API) or makes an AI coding or office product — and even then its internal use is free.
Ornith-1.5-35B-A3BMoE, 35B (3B active), an improved Qwen37.8 GB · 21.7 GByesMTP (inside its file)MIT.
Ornith-1.5-122BMoE, 122B (10B active)132 GB · 76–80 GByesMTP (inside its file)MIT.
Gemma-4-31Bdense, 31B32.6 GB · 18.8 GByesdrafterApache-2.0. A 16-bit KV cache with its drafter.
Gemma-4-26B-A4BMoE, 26B (4B active)26.9 GB · 17 GByesdrafterApache-2.0.
gpt-oss-20bMoE, 21B— · 12.1 GB (MXFP4)noEAGLE-3 — slower on our PCApache-2.0. It cannot stop thinking: «off» = its lowest effort.
gpt-oss-120bMoE, 117B— · 63.4 GB (MXFP4)noEAGLE-3 — slower on our PCApache-2.0. It cannot stop thinking: «off» = its lowest effort.
FlintMoE, 40B (2.5B active)42.3 GB · 23–26 GBno—Apache-2.0. It decides by itself when to think; on «off» it thinks at most 1,024 tokens.

The context is 262,144 tokens; for gpt-oss 131,072. A model that is not in the catalog works too, with generic settings you set on the Providers page.

What we measured

Writing speed for one user, without and with MTP

ModelFileWithoutWith MTP: code / thinkingTokens guessed ahead
Qwen3.6-35B-A3Bofficial, 8-bit5587 / 713
Ornith-1.5-35B-A3Bofficial, 8-bit5575 / 732
Gemma-4-26B-A4Bofficial, 8-bit + drafter46.573.4 / 66.12
Gemma-4-31Bofficial, 8-bit + drafter6.721.1 / 20.94
Qwen3.8-27Bunsloth, 8-bit, MTP head inside7.821.8 / 17.23
gpt-oss-20bofficial, MXFP473.161.8 with EAGLE-33
gpt-oss-120bofficial, MXFP452.544.0 with EAGLE-33
  • Tokens per second, 26 October 2026, one user.
  • Qwen3.6-35B-A3B with 2 tokens guessed ahead: 80 / 69; with 4: 83 / 67. Three gave the highest speed.
  • With greedy decoding, Qwen3.8-27B and Gemma-4-26B-A4B gave the same answer with and without MTP.

Long prompts, the power mode and the heat

A ticket’s first request is long: 40,000 to 90,000 tokens. Qwen3.6-35B-A3B, official 8-bit, a new prompt read with a prompt batch of 1024:

Power modeA 22,000-token promptAn 88,000-token promptThe graphics card
Balanced1,062 tokens/s575 tokens/s, about 2.5 minutesat most 70 °C
Performance1,131 tokens/sstopped by our test: the card reached 89 °C in about 40 seconds89 °C
  • Ornith-1.5-35B-A3B in Balanced: 1,047 and 581 tokens/s.
  • gpt-oss-20b, a first prompt: 20,000 tokens at about 1,600 tokens/s, 61,000 at about 940. gpt-oss-120b: 20,000 at about 870, 60,000 at about 530.

The prompt batch

Prompt batchQwen3.6-35B-A3B: 22K · 88KOrnith-1.5-35B-A3B: 22K · 88K
10241,062 · 5751,047 · 581
2048919 · 542728 · 488
  • Tokens per second, Balanced. 4096 was slower still. llama.cpp’s default, 512, was 4 % slower at 8,000 tokens (Qwen3.6). Gemma and gpt-oss read the same with any batch.

As the conversation grows

Qwen3.6-35B-A3B, 8-bit, one conversation that grows (the server reuses the part it already read):

Context so farReadingWriting
22,000 tokens1,140 tokens/s44 tokens/s
131,000 tokens463 tokens/s30 tokens/s
251,000 tokens227 tokens/s22 tokens/s
  • For comparison, in 5.6.0: a 512-token prompt read at 1,537 tokens/s, an 8,192-token prompt at 1,311, and writing at 55.5 tokens/s.

Thinking budget and quality

Qwen3.6-35B-A3B, 8-bit, one user. Eight engineering tasks with 65 hidden tests; the model does not see the tests.

ThinkingTests passed, of 65Time for the 8 tasks
off55.9about 2 minutes
up to 2,048 tokens58.0about 5 minutes
up to 4,096 tokens60.5about 9.5 minutes
up to 8,192 tokens56.3about 17 minutes
no limit45 — twice it ran out of 32,768 tokens without an answerabout 31 minutes
  • Each figure is the average of several runs: «off» 10 runs (50 to 61), 4,096 tokens 4 runs (59 to 62).
  • gpt-oss-120b on the same tasks: effort low 89 %, medium 98 % of the tests.

Several users at once

UsersEach oneTogether
155 tokens/s55 tokens/s
4about 23–27 tokens/sabout 100 tokens/s
  • Qwen3.6-35B-A3B, 8-bit. With a 262,144-token context shared by 4 slots, the server was ready in 15 seconds.

The temperature guard

  • The graphics card at rest: 39–40 °C. A short answer: about 54 °C. Four users at once: 55 °C.
  • We tested the guard with a limit of 50 °C: it stopped the server in 12 seconds.
  • The guard stops at 90 °C for 10 seconds. CodeHero never raises that limit by itself.

Community models we tried (not in the catalog)

ModelFileWriting: without · with MTPTests passed, of 65
Tiel-Coder-35B-A3B, built on Ornith-1.5-35B-A3BUD-Q8_K_XL48 · 56–65 tokens/s (its own MTP head)thinking off: 46
Dirk-Qwen3.8-27B, a Qwen3.8-27B fine-tuneUD-Q8_K_XL10.5 · 14.2 tokens/sthinking off: 85 %; up to 4,096 tokens: 98 %

What we learned

  • About 4,000 tokens of thinking passed the most tests on our tasks: 60.5 of 65 tests, against 55.9 with no thinking. More thinking took longer and was not better; with no limit the model sometimes never answered. CodeHero gives Qwen3.6-35B-A3B these budgets: balanced 4,000 tokens, pro 8,000.
  • MTP is for one user. It made Qwen3.6-35B-A3B about 1.6 times faster at writing code, and the two dense models about three times faster. For gpt-oss, EAGLE-3 was slower: CodeHero starts them without it. A server for several users runs without MTP.
  • Balanced for long prompts. On an 88,000-token prompt the card stayed at 70 °C in Balanced and reached 89 °C in Performance. Balanced was 6 % slower on short prompts. If the guard stops the server during long prompts, choose Balanced or a stronger fan curve in the BIOS: your decision.
  • A 16-bit KV cache. CodeHero starts the server with a 16-bit KV cache; an 8-bit cache is only for testing its accuracy. With Gemma’s drafter, an early bug gave 0 % accepted guesses with an 8-bit cache.
  • A prompt batch of 1024 read prompts faster than 2048 for Qwen3.6 and Ornith, and faster than 512 for Qwen3.6. CodeHero starts them with it.
  • Official or unsloth: at 8 bits the weights are the same, tensor by tensor (we checked Qwen3.6-35B-A3B, Qwen3.8-27B and Gemma-4-31B); only the chat template differs. At 4 bits they are different files: measure before you choose.
  • The first answer after a start is slower: the card warms up. Measure from the second one.
  • Memory on Windows: Windows counts the model in its own limit (memory + page file). Leave the page file «System managed». A big model and Android emulators together can run out: stop an emulator first.

Next tests

  • Discrete graphics cards (1 to 3 NVIDIA, AMD or Intel cards in one PC): CodeHero’s guide says what fits, by llama.cpp’s own rules. We have no such PC yet, so these are not tested.
  • The two large models at 4 bits on the same PC — Ornith-1.5-122B and Qwen3.8-Flash-Next: their speed and reliability with a short context.
  • Devices with Linux: CodeHero sets up a local model by itself only on a Windows device today. Windows came first.

These are our measurements on one PC, made on 25 and 26 October 2026. Another computer, driver, llama.cpp version, setting or task gives other numbers. They are not guarantees.

Read more

Questions people ask

All the articles
What hardware do I need for a local model?

For the local models we tested and recommend for this work, at least 96 GB of memory for the model. Our tests ran on a PC with an AMD Ryzen AI Max+ 395 and 128 GB, with Windows 11.

Does my code leave my network with a local model?

Not for the tickets that use it: the model runs on your own PC, so their text stays in your network. A ticket on an AI company’s service sends its text to that service.

Can small local AI models do real work?

Inside the factory, yes — more than on their own. Small, clear tickets, a checklist for finishing, tool help and a stronger model that checks the result let small models on your own hardware do much of the building. Read the article

Do my passwords and keys reach the AI company?

Not the ones you store as secrets (eight characters or longer): your application uses them, but their values are not sent to the AI service. A password typed into a chat message or shown in a screenshot cannot be recognised — store every password as a secret. Read the article

Am I tied to one AI company?

No. CodeHero works with many AI companies at once and with models on your own hardware. You can change company or model at any time — the project, its rules and its history stay. Read the article