Error: 500 Internal Server Error: llama-server process has terminated
The message
Error: 500 Internal Server Error: llama-server process has terminatedWhat it means
The separate program Ollama starts to run the model died before the model finished loading. The 500 is just how the Ollama server passes that on to the client.
What to do
Read whatever follows the exit status, then open the server log for the full story. Memory is the usual suspect: try a smaller model or a shorter context, and update Ollama if it's more than a few weeks old.
You run a model and, instead of a prompt, the command line gives you this (the part after the last colon changes from one machine to the next):
Error: 500 Internal Server Error: llama-server process has terminated: exit status 2
Ollama doesn't run models inside its own process. It starts a helper program, llama-server (a lightly modified copy of the one from the llama.cpp project), and waits for it to report that the model's loaded. We read that waiting loop in Ollama 0.34.4. If the helper exits first, Ollama returns this error, the server turns it into an HTTP 500, and the command line prints the status line in front of it. Nothing's wrong with Ollama's own server.
Before 0.30.0 the same failure read llama runner process has terminated, which is the wording in most of the 570 GitHub issues that quote it (as of September 25, 2026). Older clients left out the 500 Internal Server Error part.
Reading the rest of the line
Ollama builds the tail from two things it kept while the helper ran. One is the exit status. On Linux and macOS that's exit status and a number, or signal: killed when the operating system ended it (in #8571, a 671B model on a 64 GB Mac, that was memory). On Windows you'll see a hex code followed by Windows' own description of it.
The other is the last line the helper wrote to its error output that looked like an error: one starting with error:, CUDA error, ROCm error, error loading model, GGML_ASSERT and a few others. When there's text after the exit status, that's the line worth searching for. A bare exit status 2 with nothing after it tells you the helper crashed without saying why, and only the log will help.
What's usually behind it
Running out of memory comes up again and again in the issue threads. Ollama estimates how much of a model fits on your graphics card, but the helper does the real allocating, and a maintainer explained in that same thread that on big models "what was previously a minor overage is magnified to a large overage, killing the runner." Recent versions try to recover by themselves: when the failure looks like memory, 0.34.4 retries once with a smaller context, and once more after unloading any other models.
The rest is a long tail. A model that needs a newer Ollama than you have, a graphics driver the bundled libraries don't support, a bug in llama.cpp that only one model family trips. Some go away with a point release: a maintainer said 0.11.3 fixed the exit status 2 crash in #11721.
How to find the cause
Open the server log. The troubleshooting page gives the location for each system: ~/.ollama/logs/server.log on a Mac, journalctl -u ollama on Linux with systemd, %LOCALAPPDATA%\Ollama\server.log on Windows. Look at the lines just before the crash. "Server logs will aid in debugging" is the first reply on nearly every one of these issues, so attach it if you file one.
While you wait, try the model with less memory pressure. Pick a smaller size tag or a shorter context, quit other programs using the graphics card, and update Ollama. If only one model fails and others load fine, search the issues for that model name plus the text after the exit status, because model-specific crashes tend to be reported within days of a release.
A different message, timed out waiting for llama-server to start, means the helper stayed alive but stopped making progress. Ollama gives up after five minutes without load activity, and OLLAMA_LOAD_TIMEOUT changes that. It's worth raising for a very large model on a slow disk.
Other lines the same feature prints
Match yours against these if the one at the top of the page is not quite it. They come from the same code and mean related things.
llama-server process has terminatedError: 500 Internal Server Error: llama-server process has terminated: exit status 2Error: 500 Internal Server Error: llama-server process has terminated: exit status 1Error: 500 Internal Server Error: llama runner process has terminated: exit status 2Error: llama runner process has terminated: signal: killedllama runner process has terminatedllama runner process has terminated with exit codetimed out waiting for llama-server to start