AIREITER

llama.cpp v1.0 Guide: What Changed and How to Upgrade

Last Updated: 2026-11-13 18:59:14

Released November 13, 2026, llama.cpp v1.0.0 is the first semver-governed stable release: breaking public C API changes now require a major version. GitHub marks the tag Latest. The release notes describe a cleanup and compatibility release with API removals, new caches, and model support.

v1.0 Is a Version Promise, Not a Speed Boost

Per the release notes' API-changes section, the documented compatibility promise covers the public C API in llama.h; treat CLI flags, server routes, and nightly behavior as still evolving. Use the v1.0.0 tag for reproducible builds and per-commit nightlies (the release page lists nightly b12359 alongside v1.0.0) only when you need newer fixes.

"does that mean they're going to stabilize cli parameters instead of changing them every release to the point that no app can actually rely on upstream?" — u/halvacoffee on r/LocalLLaMA

Upgrade First: 4 Checks for Older Scripts and Integrations

These compatibility changes most often affect older setups. Grep first:

grep -rn "llama_set_warmup\|clip\.h\|--mmap\|--no-mmap\|--defrag-thold\|:8080\|localhost:8080" .

Check 1: removed C functions — update bindings

Per the release notes, v1.0 removes 35 deprecated functions from llama.h (including llama_set_warmup) and separately removes the defrag_thold field and --defrag-thold option. It renames one symbol (llama_set_embd_state_src to llama_set_ctx_state_src) and promotes the NextN API into llama.h. The full removal list is in the release changelog linked above.

Check 2: server port 8080 → 9931 — update URLs

llama-server now defaults to http://127.0.0.1:9931; older examples assume 8080, as documented in the Axiomi setup guide. Update health checks and editor base URLs, or pass --port 8080 to keep the old mapping.

Check 3: --mmap rejected — switch to -lm load modes

If your build rejects --mmap with error: invalid argument: --mmap, use the documented -lm, --load-mode replacement (auto, none, mmap, mlock, mmap+mlock, dio). Start with -lm auto, then confirm behavior with llama-cli --help and a representative load test.

Check 4: clip.h gone — migrate vision code to mtmd

Vision integrations on clip.h must move to consolidated mtmd, which shares compute buffers across subcontexts per the release notes. See the release multi-modality section for per-model notes before upgrading vision pipelines.

What's Actually New in llama.cpp v1.0

Five additions are most relevant for local runs, per the release notes.

FeatureWhat it doesWho cares
FP8 KV cache (-ctk/-ctv f8_e4m3)Shrinks KV-cache memory vs f16 for long contextsLong-context chat and RAG on tight VRAM
MoE expert cache (moe_cache_size, moe_cache_cpu_share)Caches experts with configurable CPU participationMoE models spilling beyond VRAM
OpenAI-compatible /v1/audio/speech + /tts temperature, drama-3 TTSAdds server-side speech generationLocal voice apps avoiding cloud TTS
Server hardening (opt-in --allow-unauthenticated-tools, --media-allow-private-urls; CORS, DNS-rebinding, SSRF, MCP-cancel fixes)Addresses several localhost-exposure and tool-execution issuesAnyone binding beyond 127.0.0.1
New model support (Kimi-K3.1-Pro, Ripple-65B-Preview dense 65B, xing4_0, vision additions)Widens GGUF coverageUsers tracking those releases

Install to OpenAI-Compatible Server

This sequence uses the new defaults (port 9931, llama-cli / llama-server, -hf downloads) from the official install docs and the Axiomi setup guide.

1. Install:

curl -LsSf https://llama.app/install.sh | sh

Or use a package manager or a prebuilt ZIP from the releases page. Verify with llama-cli --version. For unsupported hardware, custom patches, or unmerged fixes, build from source instead.

2. Chat in the terminal:

llama-cli -hf ggml-org/Qwen3.5-0.8B-GGUF -c 8192

Per the Axiomi guide, -hf caches from Hugging Face and picks Q4_K_M when no :quant suffix is given, and the default --fit on adjusts unset values to fit device memory.

3. Serve a local API:

llama-server -hf ggml-org/Qwen3.5-0.8B-GGUF -c 8192
# open http://127.0.0.1:9931

Routes include /v1/chat/completions, /v1/responses, /v1/embeddings, /v1/messages, and /v1/audio/speech (Axiomi route list). Smoke test:

curl http://localhost:9931/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Explain GGUF in one sentence."}]}'

The same guide's Python example uses base_url="http://localhost:9931/v1" with api_key="no-key" for local single-model serving. Keep 127.0.0.1 for local use.

v1.0 vs Nightly vs Wrappers vs Hosted API: Which to Pick

OptionPick it whenWatch out
Pin v1.0.0Shipping an app or tutorial, need reproducible buildsMisses fixes merged after Nov 13
Track nightly (b12359+)Need newest model support or backend fixFlags and behavior can still shift
Ollama / LM StudioWant a library or GUI with zero flagsGenerally less direct control over layers, cache, and server flags
Hosted APINeed elastic serving or no local VRAM ceilingAs a rule of thumb: per-token cost; data leaves the machine

FAQ

Is v1.0 stable, and will my existing setup still work?

The public C API carries the stability promise; CLI flags, server routes, and nightlies do not. Search for llama_set_warmup, clip.h, --mmap, --defrag-thold, and hard-coded 8080 before upgrading.

How much memory does an 8B model need?

Tech Insider's size table lists ~4.9 GB for Q4_K_M 8B vs 32.1 GB unquantized, before context and runtime. As a rule of thumb, measure your own box with llama-bench since tiny-model CPU numbers do not transfer.

Pin v1.0 for Anything You Ship

Pin the tag in CI, keep one machine on nightlies, and re-test wrappers against the pinned server before upgrading them.