After three and a half years and thousands of builds, llama.cpp has reached v1.0.0. The release, published on 13 November 2026 together with ggml v1.0.0, is more than a version label. From now on, both projects follow semantic versioning, so a breaking change to the public C API requires a new major version. The release also removes deprecated functions, adds FP8 KV caches and a MoE expert cache, and hardens llama-server. This guide explains what the new versioning promise covers (and what it doesn’t), what breaks, how to try the new features, and a safe upgrade plan for apps that run local models.

Why 1.0 matters

The announcement on the Hugging Face blog says many downstream applications now depend on llama.cpp, so a flexible but stable API is essential. The team published these rules for ggml-org projects:

Change type Version bump
Breaking change to the public C API in ./include MAJOR
Backward-compatible feature, backend update, model support or API addition MINOR
Bug fix with no API change PATCH

The blog also says API and ABI incompatibilities will be shown with major-version bumps. The two libraries and their public headers are:

  • libllama: headers in llama.cpp/include/
  • libggml: headers in ggml/include/

What the promise does not cover

Read the rule carefully. It’s about the public C headers. Command-line flags, the llama-server HTTP behaviour, the web UI and the conversion scripts aren’t listed in the versioning table. If your product shells out to llama-cli or talks to llama-server over HTTP, keep pinning an exact version and test upgrades, just as you did before.

What breaks in v1.0.0

According to the v1.0.0 release notes, the release clears out old API surface before the stability promise begins:

  • llama.h removes llama_set_warmup, 35 deprecated functions, defrag_thold and the --defrag-thold flag.
  • The NextN (speculative) API is promoted from llama-ext.h into llama.h, and llama_set_embd_state_src is renamed to llama_set_ctx_state_src.
  • clip.h is removed, and the multimodal model and subcontext code is consolidated into mtmd.

If you call the C API directly, or maintain bindings, compile against the new headers and fix any calls to removed or renamed functions. If you still pass --defrag-thold in a startup script, remove it, or the command will fail.

New features worth trying

FP8 KV cache

The KV cache stores attention keys and values for the context, and on long prompts it can use more memory than the model weights. v1.0.0 adds OCP FP8 KV caches through the cache-type flags, with optional static per-tensor scales:

llama-server -m model.gguf -c 32768 -ctk f8_e4m3 -ctv f8_e4m3

FP8 halves the cache size compared with 16-bit types. Check quality on your own prompts before rolling it out, because the effect varies by model.

MoE expert cache

For mixture-of-experts models, llama_context_params gains moe_cache_size and moe_cache_cpu_share. The release describes a host-memory expert cache with a configurable CPU share for cache misses and new replacement policies. It’s aimed at running large MoE models on machines whose GPU memory can’t hold every expert.

Server security hardening

llama-server gets several security fixes and two explicit opt-ins:

  • --allow-unauthenticated-tools
  • --media-allow-private-urls

The notes also mention fixes for --cors-origins, DNS rebinding, a CORS proxy SSRF issue and child instance access, and restricting HF_TOKEN to huggingface.co hosts. MCP tool calls are now cancelled when a client disconnects or times out.

If your setup relied on unauthenticated tool calls or on fetching media from private network addresses, those now need the opt-in flags. Turn them on only if you understand the risk. Exposing a model server with tools to your local network is a real attack surface.

Speech output endpoint

The server adds an OpenAI-compatible /v1/audio/speech endpoint and a temperature option for /tts, alongside support for the drama-3 TTS model. Here’s a request shaped like the OpenAI speech API:

curl http://localhost:8080/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model": "tts", "input": "Hello from llama.cpp one point oh", "voice": "default"}' \
  --output hello.wav

The exact model name, voices and output format depend on the TTS model you load, so check the server README for your setup.

Models and UI

New text architectures include Kimi-K3.1-Pro, Ripple and xing4_0, plus MageVL-Cowork and Kimi-K3.1 vision support. The bundled web UI has been redesigned with chat groups and a markdown editor. The blog says llama.cpp now supports more than 150 architecture variants.

How to install or upgrade

The announcement lists many distribution channels: pre-built release artifacts for Linux, macOS, Windows, Android and iOS, plus Docker, Debian, Homebrew, conda-forge, MacPorts, Winget and an XCFramework for Apple platforms.

On macOS or Linux with Homebrew:

brew upgrade llama.cpp   # or: brew install llama.cpp
llama-server --version

From source, pin the tag:

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
git checkout v1.0.0
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

Add the backend option you need (for example CUDA, Metal or Vulkan) as described in the project’s build docs.

Using llama.cpp from Python

Most Python developers use llama.cpp through llama-server‘s OpenAI-compatible API, which works with the standard openai client:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8080/v1", api_key="local")

reply = client.chat.completions.create(
    model="local",
    messages=[{"role": "user", "content": "Explain FP8 KV cache in one sentence."}],
)
print(reply.choices[0].message.content)

If you use a third-party binding that compiles llama.cpp itself, wait until that binding announces v1.0.0 support. The removed functions mean an older binding may not build against the new headers.

A safe upgrade plan

  1. Pin the exact version (v1.0.0) in Dockerfiles, build scripts and CI.
  2. Search your code and scripts for removed names: llama_set_warmup, defrag_thold, --defrag-thold, llama_set_embd_state_src and clip.h includes.
  3. Rebuild bindings against the new headers. ABI changes mean old compiled libraries are not drop-in replacements.
  4. Re-test server integrations, especially CORS, tool calls and media URLs, because of the security changes.
  5. Benchmark FP8 KV cache on your own prompts before enabling it in production.
  6. From now on, treat minor versions as safe for the C API and major versions as breaking. Still read release notes for server and CLI changes.

Key takeaways

  • llama.cpp and ggml are now v1.0.0 and use semantic versioning for their public C APIs.
  • v1.0.0 removes 35 deprecated functions, llama_set_warmup and --defrag-thold, and moves the NextN API into llama.h.
  • New features include FP8 KV caches, a MoE expert cache, a /v1/audio/speech endpoint and significant llama-server hardening.
  • The stability promise covers the C headers, so keep pinning versions if you depend on CLI flags or server behaviour.

Sources: llama.cpp v1.0.0: A stronger foundation for the local AI ecosystem and the llama.cpp v1.0.0 release notes.