KoboldCpp and llama.cpp: same engine, different jobs

KoboldCpp is a fork of llama.cpp that regularly merges upstream changes and wraps the engine in one file with a launcher, the KoboldAI Lite interface, image and voice generation and several API styles. On our CPU, with the same two model files and 4 threads set on both, KoboldCpp generated 3 to 4% slower than llama-server after a long prompt but read that prompt 39 to 54% slower, and started in 3.5 to 5 s against 0.5 to 1 s. Use llama.cpp directly for the newest model support first, the lightest server, or backends KoboldCpp does not ship, such as SYCL for Intel Arc.

Checked against KoboldCpp 1.124.2 · updated 13 Nov 2026
  • lab-lnx: Linux test VM · 4 vCPU · 15 GB · no GPU
How we test
On this page
  1. How they are related
  2. KoboldCpp vs llama.cpp: measured on one PC
  3. What KoboldCpp adds
  4. What llama.cpp does first or better
  5. Switching flags between them
  6. When to choose llama.cpp
  7. When to choose KoboldCpp
  8. Which should you use?

How they are related

KoboldCpp’s history begins with llama.cpp’s first commits in March 2023; its first release was named llamacpp-for-kobold and was renamed in 1.0.8beta (upstream). It merges llama.cpp changes regularly. The licences differ: llama.cpp is MIT, KoboldCpp is AGPL-3.0 with MIT-licensed parts. KoboldCpp puts the engine in one file with stable-diffusion.cpp, whisper.cpp and text-to-speech backends around it (what it is).

KoboldCpp vs llama.cpp: measured on one PC

We ran the same two model files on one CPU-only Ubuntu machine with 4 vCPUs F107, and timed every tool the same way: through its OpenAI-style streaming endpoint, with the time to the first token giving prompt speed and the rest of the stream giving generation speed. The prompts changed every run so none could reuse a cache. On this machine KoboldCpp, llama-server and TextGen all started with 2 threads by default, so we ran each again with 4 set explicitly; the 4-thread columns are the matched comparison. The llama.cpp column is its own llama-server, build b12377.

One Ubuntu 24.04 machine, 4 vCPUs, 4096 context, 128 tokens, median of 3, streaming measurement
CriterionKoboldCpp --threads 4KoboldCpp, default threadsllama-server -t 4llama-server, default threads
Qwen2.5-0.5B: generation after a short prompt (tokens/s)78.5 F10773.0 F10771.9 F10774.0 F107
Qwen2.5-0.5B: generation after a 1,652-token prompt (tokens/s)51.8 F10748.5 F10754.1 F10752.8 F107
Qwen2.5-0.5B: prompt processing, 1,652 tokens (tokens/s)206.8 F107189.7 F107338.6 F107315.1 F107
Qwen2.5-1.5B: generation after a short prompt (tokens/s)38.8 F10736.2 F10740.4 F10739.2 F107
Qwen2.5-1.5B: generation after a 1,652-token prompt (tokens/s)31.0 F10730.7 F10731.8 F10731.1 F107
Qwen2.5-1.5B: prompt processing, 1,652 tokens (tokens/s)87.9 F10781.1 F107192.8 F107165.3 F107
Start-up, 0.5B / 1.5B (Ollama: model load, service already running)3.5 / 5.01 s F1074.02 / 6.03 s F1070.5 / 1.0 s F1070.5 / 1.51 s F107
Memory after the runs, 1.5B (resident memory of the runner)1,407 MB F1071,407 MB F1072,030 MB F1072,028 MB F107
What you installOne file, 103 MB F107One file, 103 MB F107A 57 MB folder F107A 57 MB folder F107

With threads set to 4 for both, generation after the long prompt was 4% (0.5B) and 3% (1.5B) lower in KoboldCpp; after a short prompt it was 9% faster on the 0.5B and 4% slower on the 1.5B. Prompt processing was the clear gap: KoboldCpp read the long prompt 39% (0.5B) and 54% (1.5B) slower. llama-server was ready in 0.5 to 1 s against 3.5 to 5 s, and used more memory on the 1.5B model (probably its default of several slots). At default settings both used 2 threads and the generation speeds were close. This is a CPU test with a 0.5B and a 1.5B model on one machine type. GPU speed, bigger models and other CPUs can differ; absolute numbers moved by up to 2 times between GitHub machines in earlier runs F44, so compare only rows from the same table. A second, cruder check through llama-cpp-python is in the findings F92.

What KoboldCpp adds

  • One file per operating system, no installer (download).
  • A launcher with 11 tabs (launcher) and KoboldAI Lite (Lite).
  • KoboldAI, OpenAI, Ollama and A1111-style routes on one port F23.
  • Image, voice and vision, which we ran on a CPU: images, voice, vision.
  • ContextShift and FastForward, .kcpps config files (config files), a Horde worker and a tunnel, autofit, and old GGML formats (upstream).

What llama.cpp does first or better

New model architectures land in llama.cpp first and reach KoboldCpp in a later release; an unknown architecture stops KoboldCpp with a clear message (model won’t load). We could not measure the lag: the llama.cpp repository was not reachable from our lab, so we publish no number. llama.cpp also offers backends KoboldCpp does not ship, such as SYCL for Intel Arc (users report; we have no Intel card), a lighter set of files, and the MIT licence.

Switching flags between them

KoboldCpp accepts llama.cpp-style short flags since 1.99: -m, -c, -ngl, -ts, -b, -fa, -ot and --n-cpu-moe (upstream). Differences that bite: KoboldCpp adds 256 cells to the context it allocates (a 4096 context showed 4352 in the log F96, F06), flash attention is on by default F09, and GPU layers default to automatic. Check a command in the command builder.

When to choose llama.cpp

You need a model released this week, the lightest possible server, SYCL for Intel Arc, or you embed an engine in your own program under the MIT licence. See llama.cpp’s own documentation for installing it.

When to choose KoboldCpp

You want one file with a launcher and a chat and story page, images, voice and vision in one program, several API styles on one port, and .kcpps files.

Which should you use?

  • Intel Arc user: llama.cpp’s SYCL builds are reported; KoboldCpp reaches Intel through Vulkan.
  • Developer embedding a server: llama.cpp.
  • Beginner on Windows: KoboldCpp.
  • Roleplay or story user: KoboldCpp, with Lite.
  • You need a model released this week: llama.cpp first, KoboldCpp’s rolling build second.

Frequently asked questions

Is KoboldCpp the same as llama.cpp?

No. KoboldCpp is a fork: it contains llama.cpp's engine and adds a launcher, a web interface, image, voice and vision features and several API styles in one file.

Is KoboldCpp slower than llama.cpp?

On our CPU test with 4 threads set on both, generation after a long prompt was 3 to 4% lower and long-prompt processing 39 to 54% lower in KoboldCpp. At default settings both used 2 threads and generation was close. We have no GPU result; test both on your PC.

Why doesn't KoboldCpp support a model that llama.cpp already supports?

New model types land in llama.cpp first and reach KoboldCpp in a later release. If you see an unknown-architecture error, update; the rolling pre-release has untested newer builds.

Can I use llama.cpp flags in KoboldCpp?

Many short ones, since 1.99: -m, -c, -ngl, -ts, -b, -fa, -ot and --n-cpu-moe. Check a command in the builder.