mi·do·naミ・ド・ナ

Home / Library / Articles / Runner shootouts

Shootout

llama.cpp vs koboldcpp: the engine and its roleplay child

koboldcpp began as a fork of llama.cpp and never really left home: same engine, same GGUF models, same raw speed. What the Kobold side adds is packaging... a launcher, sane defaults, and years of roleplay-community instincts baked in. So which one belongs under YOUR stories?

Topic · Local runnersRead · 6 minUpdated · Jul 2026

The one-line version

llama.cpp is the reference engine: raw, fast-moving, every flag exposed, nothing bundled. koboldcpp wraps that same engine in a single executable with a launcher, friendly defaults, and a heritage in the interactive-fiction community. It's less "which is better" and more "how assembled do you want it."

The boring truth: they both do the job

This is the closest pairing in the whole shootout series. Same engine lineage, same GGUF files, same speed on the same hardware. Both are free. Both expose the full sampler cabinet... min-p, dynamic temperature, the long tail. Both serve an OpenAI-compatible API with permissive CORS on by default, which means both reach mi·do·na from the browser with ZERO extra setup: pick the runner in the connection panel, point it at the /v1 endpoint, done.

You are choosing packaging, not power.

Side by side

llama.cppkoboldcpp
InterfaceCommand lineLauncher + bundled web UI
InstallHomebrew, binary, or buildSingle executable, no install
Getting a modelManual GGUF or -hfBring your own GGUF
Default port80805001
OpenAI-compatible APIYesYes
Browser access (CORS)On by defaultOn by default
Sampler controlEverything, firstEverything, friendly
Long-chat handlingStandardContext shift
Best forMaximum controlAssembled and ready

Day one

koboldcpp is one file. Download the executable, point the launcher at a GGUF, click. GPU layers and context size have sensible defaults you can accept blind. There is nothing to install and nothing to build... for getting a community roleplay finetune running before your tea cools, nothing else in this series beats it.

llama.cpp asks you to assemble it. Homebrew, a release binary, or a build from source, then llama-server with flags you chose on purpose. That's a real cost on day one and a real gift after: you're on the reference implementation, updates land here FIRST, and every experimental feature is yours the day it merges.

What Kobold adds, and whether you need it

The bundled Kobold Lite web UI and its roleplay presets are lovely... and behind mi·do·na, mostly idle. mi·do·na is your interface; the runner just serves tokens.

Context shift is the more interesting piece: when old turns fall off the top, koboldcpp slides its memory forward instead of recomputing the prompt. It works over the API, but only while the start of the prompt stays untouched... and mi·do·na manages long stories by DESIGN, recapping and compacting history with each character's voice reseeded, which rewrites exactly the part context shift needs frozen. Behind mi·do·na, treat it as a nice-to-have, not a tiebreaker.

What's left that DOES matter: koboldcpp's defaults are tuned by people who roleplay, so the out-of-box experience needs fewer decisions. llama.cpp gives you those same decisions as homework, with a wider range of answers.

The verdict

Pick koboldcpp if you want the engine pre-assembled by people who share your hobby. One file, sane defaults, playing tonight.

Pick llama.cpp if you want the source of truth. Newest samplers, newest model support, every flag... and no bundled anything to ignore.

Speed, models, and mi·do·na compatibility are a wash. Ports and defaults reflect each project's documentation as of July 2026. Check the official docs if a release has moved since.

You bring the model. mi·do·na brings the story.

Either runner plugs straight into mi·do·na, right in your browser. Nothing you write ever leaves your machine.