Tested during editorial review: Updated 26 August 2026 against the stable llama.cpp 0.3.0 tag, tagged argument parser, official installation, build and server documentation, and matching b10621 binaries. Run the included smoke test before replacing an existing service; performance depends on hardware and build options.
To update llama.cpp to 0.3.0 safely, keep the old build, record the command that works today, check any program-specific -no-cnv use, translate deprecated loading flags to --load-mode, then test the new build on 127.0.0.1 before changing a service or desktop shortcut.
That order matters. Version 0.3.0 adds useful model, multimodal and multi-GPU work, but it also changes the command line. Replacing files in place leaves you with a harder recovery if an old launch script stops at startup.
What changed in llama.cpp 0.3.0?
The stable llama.cpp 0.3.0 release was published on 25 August 2026. Its tag points to commit c1d0e7a and to official matching binary build b10621.
The changes that affect an upgrade are:
-no-cnvhas been removed fromllama-cli, where it was unhandled; it remains valid forllama-completion.--mmap,--no-mmap,--mlock,--direct-ioand--no-direct-ioare deprecated in favour of--load-mode.--defrag-tholdis deprecated and no longer needs to be set.- DeepSeek 4 gains the experimental
-sm tensormulti-GPU split mode and a multi-sequence rollback fix. - GLM-4.5-Air gains multi-token prediction support.
- llama.cpp adds dots3-note model support, including vision and audio handling.
- The multimodal code can decode WebP through FFmpeg and fixes some videos with the
moovatom at the end. - The built-in server UI gains tabbed chat navigation.
- The bundled ggml version moves to 0.22.0 with backend changes and fixes.
You do not need to enable every new feature after updating. First prove that the model and command you already rely on still work.
Before you update: make a rollback path
Do not overwrite your only copy of a known-good portable build. Keep the previous folder and create a separate folder for 0.3.0. A clear pair of names is enough:
llama-cpp-working-old
llama-cpp-0.3.0If you built from source, keep the old build directory and record its commit:
git status --short
git rev-parse HEADStop if git status --short shows changes you do not understand. Switching tags should not discard your work, but a clean or deliberately managed tree makes recovery much easier.
Record these details before changing anything:
- the version and build number reported by the executable;
- the exact executable found first in your shell;
- the complete launch command, environment variables and working directory;
- the original CMake configure flags if you built from source, including the GPU backend;
- the model and optional multimodal projection file;
- the current
/healthand/v1/modelsresults if you run the server; - one short prompt that you can repeat after the update.
Find the active installation on Windows
Current packages may expose the newer multicall llama program, the established llama-server and llama-cli programs, or both. PowerShell can show every matching command:
Get-Command llama, llama-server, llama-cli -All -ErrorAction SilentlyContinueThen record the version using the command your installation provides:
llama --versionor:
llama-server --version
llama-cli --versionFind the active installation on macOS or Linux
type -a llama llama-server llama-cli 2>/dev/null
llama --versionIf llama is not present, check llama-server --version and llama-cli --version. Multiple results explain many apparent failed upgrades: the shell may still be starting an older executable earlier in PATH.
Fix removed and deprecated flags first
Search shortcuts, service files and scripts for the affected options. From the folder that contains your launch scripts, use one of these searches.
PowerShell
Get-ChildItem -Recurse -File |
Select-String -Pattern '-no-cnv|--defrag-thold|--mlock|--no-mmap|--mmap|--direct-io|--no-direct-io'macOS or Linux with ripgrep
rg -n -- '-no-cnv|--defrag-thold|--mlock|--no-mmap|--mmap|--direct-io|--no-direct-io' .Use this migration table rather than guessing at a replacement:
| Old option | 0.3.0 action | Reason |
|---|---|---|
-no-cnv with llama-cli | Remove it from that command. If the job was intended to be a scripted one-shot completion, review llama-completion instead. | The official change removed the unhandled option from llama-cli only. |
-no-cnv with llama-completion | Keep it when you intend to disable conversation mode. | The option remains valid for the tagged completion tool. |
--defrag-thold N or -dt N | Delete it. | The 0.3.0 parser accepts it only to warn that it is deprecated and no longer necessary. |
--mmap | --load-mode mmap | Keeps explicit memory-mapped loading. |
--no-mmap | --load-mode none | Selects no special loading mode. |
--mlock | --load-mode mlock | Requests that the model remain in RAM instead of being swapped or compressed. |
--mmap --mlock, when both behaviours are intentional | --load-mode mmap+mlock | The new option has a documented combined mode. Do not assume two legacy flags were previously combined in the way you intended. |
--direct-io or -dio | --load-mode dio | Requests DirectIO when available. |
--no-direct-io or -ndio | --load-mode none | Turns off the explicit DirectIO loading mode. |
The new default is --load-mode auto. In this mode llama.cpp uses memory mapping unless a device does not support it. If you never set the old loading flags, leave the default alone for the first test.
Do not mix --load-mode with the deprecated memory-loading flags. The 0.3.0 parser warns that only the last one on the command line will take effect.
Update llama.cpp on Windows
Option 1: Winget
The official install guide lists Winget for Windows. Preview the installed package, then upgrade its exact package identifier:
winget list --id ggml.llamacpp --exact
winget upgrade --id ggml.llamacpp --exactClose and reopen PowerShell, then check the version and command path again. Package feeds can lag a new upstream tag, so do not assume that a successful package-manager run installed 0.3.0.
Get-Command llama, llama-server, llama-cli -All -ErrorAction SilentlyContinue
if (Get-Command llama -ErrorAction SilentlyContinue) {
llama --version
} else {
llama-server --version
}If your Winget package exposes only the established program names, use llama-server --version. Winget versions may display the matching build number rather than the semantic tag.
Option 2: versioned official archive
The 0.3.0 release links to matching build b10621. Choose the archive for your processor and backend, extract it to a new llama-cpp-0.3.0 folder and leave the previous folder untouched.
Windows assets are provided for CPU, CUDA 12.4, CUDA 13.3, Vulkan, SYCL, ROCm and OpenVINO. CUDA downloads also have matching runtime-DLL archives. Keep the chosen program files and their matching libraries together; combining DLLs from different build numbers or CUDA packages is a common source of startup errors.
Update llama.cpp on macOS
The official install guide supports Homebrew. Update its package definitions, inspect the pending formula update, then upgrade llama.cpp:
brew update
brew outdated llama.cpp
brew upgrade llama.cpp
llama --versionIf the package still reports an earlier version, wait for the formula to catch up or build the exact tag below. Homebrew normally removes old formula versions during cleanup, so keep a separate known-good portable build if quick rollback matters.
A source build on macOS enables Metal by default. You do not need to add a Metal option for the standard tagged build.
Update llama.cpp on Linux
Conda-forge is one documented package route:
conda update -c conda-forge llama.cpp
llama --versionCheck the reported version because the channel may not publish the new tag immediately. Nix, Homebrew and platform packages have their own update cadence. For an exact, reproducible 0.3.0 build, use the source tag.
Build the exact 0.3.0 tag from source
Use a separate build directory so the previous binary stays available. From an existing llama.cpp checkout:
git status --short
git rev-parse HEAD
git fetch --tags
git switch --detach v0.3.0
cmake -S . -B build-v0.3.0 -DLLAMA_BUILD_IS_DEV=OFF
cmake --build build-v0.3.0 --config Release -j 8Adjust -j 8 for your computer. The tagged build guide documents parallel builds, while -DLLAMA_BUILD_IS_DEV=OFF is the project’s release-build setting. Without it, a source build can report 0.3.0-dev even though you checked out the release tag.
NVIDIA CUDA build
cmake -S . -B build-v0.3.0-cuda -DGGML_CUDA=ON -DLLAMA_BUILD_IS_DEV=OFF
cmake --build build-v0.3.0-cuda --config Release -j 8The CUDA toolkit must already be installed and compatible with your compiler. Do not add a GPU backend merely because it appears in the release notes; build the backend that matches the hardware you will actually use.
Verify 0.3.0 before changing a service
Run the new executable directly from its new folder where possible. First check the version and current help:
llama --version
llama serve --helpFor a package with the established binary names:
llama-server --version
llama-server --helpConfirm that your intended options appear in this help output. That catches a stale executable before a model download or service restart.
Start a small known model on loopback
The tagged llama.cpp quick start uses the project’s Qwen3.5 0.8B GGUF. It is a more practical smoke test than the enormous dots3-note model added in this release:
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF:Q4_0 --host 127.0.0.1 --port 8080Use this equivalent command if your package provides llama-server instead:
llama-server -hf ggml-org/Qwen3.5-0.8B-GGUF:Q4_0 --host 127.0.0.1 --port 8080The first run downloads model files from Hugging Face. If you already have a known-good local GGUF, you can avoid a download by replacing the -hf part with -m "path/to/model.gguf".
Keep --host 127.0.0.1 during testing. An unauthenticated server bound to every network interface is a separate security decision, not an upgrade requirement.
Check the health and model endpoints
In a second PowerShell window:
Invoke-RestMethod http://127.0.0.1:8080/health
Invoke-RestMethod http://127.0.0.1:8080/v1/models | ConvertTo-Json -Depth 6On macOS or Linux:
curl -s http://127.0.0.1:8080/health
curl -s http://127.0.0.1:8080/v1/modelsThe /health endpoint should report a ready state after the model loads, and /v1/models should list the served model. Open http://127.0.0.1:8080/ to check the built-in UI. The 0.3.0 UI should provide tabbed chat navigation.
Send one short API request
PowerShell users can call the OpenAI-compatible chat route with curl.exe:
curl.exe http://127.0.0.1:8080/v1/chat/completions `
-H "Content-Type: application/json" `
-d '{"messages":[{"role":"user","content":"Reply with the word READY."}],"temperature":0,"max_tokens":16}'On macOS or Linux:
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Reply with the word READY."}],"temperature":0,"max_tokens":16}'The important result is a successful JSON response containing assistant content. A small model may add punctuation or extra wording, so this is a service-path test rather than a quality benchmark.
Check the new features only when they fit your setup
DeepSeek 4 tensor splitting
The new split mode is:
-sm tensorThe 0.3.0 help describes it as splitting weights and KV cache across GPUs in parallel, and labels it experimental. It is relevant to DeepSeek 4 on a multi-GPU system. Do not add it to a single-GPU launch command or treat it as a universal speed switch. Capture a baseline and keep the old split mode ready before testing it.
WebP multimodal input
WebP decoding requires a multimodal model and the correct multimodal components. A text-only GGUF does not gain image understanding after this update. Verify the model’s official llama.cpp instructions and test with a copy of a harmless image.
dots3-note support
Do not use dots3-note for the first smoke test on an ordinary desktop. The publisher describes the preview as a mixture-of-experts model with 280 billion total parameters, 16 billion active parameters and text, image, video and audio input. Its official deployment examples use an eight-GPU node. llama.cpp compatibility does not make the model small.
GLM-4.5-Air MTP
Multi-token prediction support is model-specific. Use the official model files and current llama.cpp instructions, then compare output and stability with the feature off and on. The 0.3.0 release does not promise that every model or computer will run faster.
Troubleshooting llama.cpp 0.3.0
unknown argument: -no-cnv in llama-cli
First check which program the command starts. If llama-cli reports the error, remove -no-cnv from that command; the option was unhandled there. It remains valid for llama-completion when conversation mode must be disabled, so do not delete it from a completion-tool script merely because the release note mentions its llama-cli removal. Verify the exact program and its current --help output before migrating a scripted one-shot job.
The version is still old
Your shell is probably finding another installation. Run the command-location checks from the backup section and invoke the new executable by its full path. Restart the terminal after a package-manager update.
The source build says 0.3.0-dev
Reconfigure a clean versioned build directory with:
-DLLAMA_BUILD_IS_DEV=OFFThat is the tagged release-build setting. It changes the version label; it is not a performance option.
The server starts but the old UI appears
Check --version on the exact server process, confirm the path and refresh the browser without its cached files. If /health answers from a different process or folder, stop that process before retesting the new build.
A CUDA build reports a missing DLL
Use the runtime-DLL archive that matches both b10621 and the selected CUDA asset. Extract its files beside the matching programs. Do not copy a convenient DLL from an older build or a different CUDA package.
The model no longer loads after translating flags
Start with the default --load-mode auto. Then add back one intentional loading mode. Check the old command for multiple memory-loading flags; only the last flag may have been taking effect, so a literal combination can reproduce the wrong intent.
WebP or video input still fails
Confirm that the model is multimodal, that its projection/component files are present and that the build includes the required decoder support. Test a simple supported image before a long video. The new decoder cannot give media capabilities to a text-only model.
How to roll back
Portable archive
Stop the new server, change your shortcut or service back to the previous versioned folder and repeat the old health check. Do not mix files between the old and new folders.
Source build
Use the commit you recorded before the update and build it into a separate directory:
git switch --detach YOUR_PREVIOUS_COMMIT
cmake -S . -B build-rollback YOUR_PREVIOUS_CMAKE_FLAGS
cmake --build build-rollback --config Release -j 8Replace YOUR_PREVIOUS_CMAKE_FLAGS with the configure options you recorded before the update, such as -DGGML_CUDA=ON for the previous CUDA build. Reusing those settings prevents a rollback from silently producing a CPU-only executable. This approach avoids a destructive reset and preserves the 0.3.0 build for comparison. If the checkout contains local changes, resolve or preserve them before switching commits.
Package manager
Rollback support varies by package manager and retained package versions. Do not assume a generic downgrade command will work. When uptime matters, keep a verified portable binary folder or previous source build before allowing a package manager to replace the active version.
Frequently asked questions
Is llama.cpp 0.3.0 a stable release?
Yes. The project published the stable v0.3.0 release on 25 August 2026 and links it to matching build b10621. It is different from the project’s frequent numbered nightly builds.
Do I need to download my GGUF models again?
Usually no. Keep your existing models and test them with the new executable. A newly supported architecture or multimodal workflow may need new model or projection files supplied by that model’s publisher.
Will 0.3.0 make every model faster?
No. The release contains backend and model-specific work, but there is no universal speed claim. Measure your own prompt processing, generation speed, memory use and output before changing production settings.
Should I enable -sm tensor?
Only if you are testing the documented DeepSeek 4 multi-GPU path and can tolerate experimental behaviour. It has no purpose on a CPU-only or single-GPU smoke test.
Can I run dots3-note on a normal laptop now?
llama.cpp can understand the architecture, but the official preview is still a 280B-total-parameter model. The publisher’s reference deployments use eight GPUs. Wait for a clearly documented, realistically sized quantisation and check its memory requirement rather than treating compatibility as a laptop recommendation.
Can I keep using llama-server?
Yes, packages and tagged documentation still include the established server program. The project also documents the multicall form llama serve. Use the form provided by your chosen package and confirm its own --help output.
Related local guides
- Set up llama.cpp with MCP
- Run Qwen3.8-27B locally with llama.cpp
- Install NeMo-Speech.cpp for local transcription
- Install LocalAI on Windows with Docker
Official sources
- llama.cpp 0.3.0 release notes
- llama.cpp 0.3.0 command-line argument source
- Official
-no-cnvremoval change forllama-cli - Tagged llama.cpp installation guide
- Tagged llama.cpp build guide
- llama.cpp release and versioning guide
- Tagged llama.cpp server guide
- Official matching b10621 binary build
- Microsoft Winget upgrade documentation
- Homebrew package-update documentation
- Official dots3-note preview model card
Bottom line: treat 0.3.0 as a controlled migration. Preserve the working build, remove the one retired option, move intentional loading settings to --load-mode, test a small known model, then update the service path. That gives you the new release without turning rollback into a rebuild under pressure.