mi·do·naミ・ド・ナ

Home / Library / Articles / Runner shootouts

Shootout

Ollama vs koboldcpp: which local runner fits your story?

Both load a model on your machine and serve it over a local API. Both plug straight into mi·do·na. One is built for developers who want a clean workflow. The other was built by and for people who roleplay. Here's what actually differs, and what honestly doesn't.

Topic · Local runnersRead · 7 minUpdated · Jul 2026

The one-line version

Ollama is the tidiest way to run models from a terminal... one command pulls a model, the server is already running, and everything stays out of your way. koboldcpp is a single executable that grew up inside the interactive-fiction community, and it shows: more sampler knobs, and browser access that just works out of the box.

If you're not sure which crowd you're in: people who reach for koboldcpp tend to know why. Everyone else is usually happier starting with Ollama.

The boring truth: they both do the job

Before the tiebreakers, the part most comparisons bury: these two are far more alike than different. Both are free. Both run the same GGUF models on the same hardware at roughly the same speed, because both sit on the same inference lineage (llama.cpp underneath). Both serve an OpenAI-compatible API on localhost. Both connect to mi·do·na the same way: pick the runner in the connection panel, point it at the /v1 endpoint, done.

Whichever you install tonight, you'll be playing tonight. Everything below is about FIT, not capability. You cannot pick wrong.

Side by side

Ollamakoboldcpp
InterfaceCommand lineLauncher + bundled web UI
InstallInstaller / one-linerSingle executable, no install
Getting a modelCLI pull from the Ollama libraryBring your own GGUF
Default port114345001
OpenAI-compatible APIYesYes
Browser access (CORS)OLLAMA_ORIGINSOn by default
Sampler controlThe basicsThe full cabinet
GPU accelerationYesYes
Best forFast, scriptable workflowRoleplay tinkerers

Both connect to mi·do·na the same way: pick the runner in the connection panel and point it at its /v1 endpoint. Only the port changes... plus, for Ollama, one environment variable.

Getting a model loaded

Ollama wins the first five minutes. ollama run pulls a model from its library, quantized and configured, and the server is already listening on 11434. You never touch a GGUF file or think about quantization formats unless you want to. For someone who just wants a good 8B model talking tonight, this is the shortest path that involves a terminal.

koboldcpp makes you find your own model... once. You download a GGUF from Hugging Face, point the launcher at it, and go. That's a real extra step on day one, but it cuts both ways: the roleplay scene lives on community finetunes, models tuned specifically for character consistency and prose, and most of those ship as GGUF files rather than entries in Ollama's library. (Ollama can load outside GGUFs too, via a Modelfile... it's just no longer the two-word version.) With koboldcpp, the model everyone on your favorite subreddit is raving about is a download and a click away.

The knobs: sampler control

This is the widest gap between the two, and the one storytellers feel most.

Samplers decide how a model picks its next word... the difference between prose that surprises you and prose that repeats the same three sentence rhythms until you close the tab. Ollama exposes the essentials: temperature, top-p, top-k, repeat penalty. Fine for Q&A, and honestly fine for a lot of stories.

koboldcpp exposes nearly everything the underlying engine supports: min-p, dynamic temperature, a longer tail of exotic samplers, plus control over the order they apply in. The roleplay community discovered years ago that a well-tuned min-p setup keeps long-form prose coherent and interesting in a way the classic settings struggle to match, and koboldcpp is where much of that tinkering happens first.

If you'd rather not learn what any of that means, mi·do·na's tuning panel speaks one dial, Imagination, to either runner. But the ceiling on what you can reach is higher with koboldcpp.

The long game: 200 turns in

Here's the thing about a good story: it gets long. Eventually it outgrows the model's context window, and SOMETHING has to decide what the model forgets.

koboldcpp's answer is context shift: when old turns fall off the top, it slides its memory forward instead of recomputing the whole prompt, so turn 201 responds about as fast as turn 20. It works over the API, not just in Kobold's own UI... but only while the start of the prompt stays untouched. Edit anything early, and it recomputes anyway.

Here's the honest part: with mi·do·na, that mostly doesn't matter. Context shift is a fix for front ends that handle long chats by silently dropping the oldest turns... which is also how stories forget who they are. mi·do·na doesn't play it that way. When a story runs long, it recaps and compacts the history ON PURPOSE, reseeding each character's voice so turn 201 still sounds like them. That deliberate rewrite is exactly the case context shift can't accelerate, and it's a trade we'd make every time: a brief pause at the recap beat, in exchange for a story that remembers itself.

So on this front, call it a wash. The long-game memory work happens in mi·do·na, whichever runner sits underneath.

Setup friction, honestly

Ollama's one gotcha is CORS. A browser app like mi·do·na can't reach it until you set OLLAMA_ORIGINS. It's one environment variable and our connection panel walks you through it, but it IS the step people miss.

koboldcpp's gotcha is choice. The launcher offers GPU layer counts, context sizes, and a screenful of options before your first token. The defaults are sane... you can click straight through... but it looks more intimidating than it is. Once running, browser access works with no extra configuration.

The verdict

Pick Ollama if you live in a terminal and want the fastest path from zero to a working model. It's clean, scriptable, and boring in the best way.

Pick koboldcpp if you want the knobs. Community finetunes and deep sampler control make it the tinkerer's pick, shaped by exactly the kind of character-driven play you're here for.

And if you're still torn... flip a coin. Either way, mi·do·na does the story work on top.

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.