Blog Network

ggml-org · 2026-09-14 · major

llama.cpp v0.4.1 — Maple 20B-A1B and Tencent Hy 4 now run locally

llama.cpp v0.4.1 adds architecture support for Maple 20B-A1B, Tencent Hy 4 and Spark2.5. The release moves ggml to v0.24.0 and removes the --mmap, --mlock and --direct-io flags in favour of a single --load-mode flag.

llama.cpp v0.4.1 release page on GitHub

Three new model architectures land in the local inference engine, and three old loading flags are taken out.

Key specs

GitHub stars128,223

Quick facts

Projectllama.cpp (ggml-org)
Versionv0.4.1
Released14 September 2026
LicenseMIT
New model supportMaple 20B-A1B, Tencent Hy 4, Spark2.5
ggml versionv0.24.0
Removed flags--mmap, --mlock, --direct-io (use --load-mode)

What is it?

Maple 20B-A1B, Tencent Hy 4 and Spark2.5 are the three architectures llama.cpp v0.4.1 can now load. Maple is a ternary mixture-of-experts model and its support landed as a CPU implementation; Hy 4 arrives as a preview architecture named hy_v4 internally. The release also adds structured JSONL logging through a new --log-jsonl flag and the LOG_JSON environment variable.

How does it work?

Underneath, v0.4.1 moves ggml from 0.23.0 to 0.24.0, the layer that does the actual tensor maths. JSON schema handling was rebuilt around one internal representation called common_schema, and the specialised chat parsers moved into common/parsers. The server watches its router child processes from a single thread through new server_subproc and waiter helpers, and cpp-httplib moves to 0.56.0.

Why does it matter?

The removed flags are the part of this release to plan for: any script that still passes --mmap, --mlock or --direct-io stops working and has to use --load-mode instead. Anything that embeds libllama gets a second break, because llama_sampler_chain_n() now returns int32_t rather than int. In exchange, three more model families become loadable, including a ternary-weight mixture of experts that runs on a CPU.

Who is it for?

local LLM users, inference engineers

Frequently asked questions

Does llama.cpp v0.4.1 break existing setups?
Two changes in llama.cpp v0.4.1 can break things. The deprecated --mmap, --mlock and --direct-io command-line arguments are gone, and the --load-mode flag replaces all three, so any wrapper script passing the old names needs editing. On the API side, llama_sampler_chain_n() now returns int32_t instead of int, which matters to projects embedding libllama.
How is v0.4.1 different from v0.4.0?
llama.cpp v0.4.0 landed on 4 September 2026 with Qwen3.8-Flash-Next support and lazy tensor reading. v0.4.1, published ten days later on 14 September, is the release that adds Maple 20B-A1B, Tencent Hy 4 and Spark2.5, upgrades ggml from 0.23.0 to 0.24.0, and drops the three deprecated loading flags.
Can Maple 20B-A1B run without a GPU?
Maple 20B-A1B support arrived in llama.cpp as a CPU implementation of its ternary mixture-of-experts architecture, so the model loads and runs on a processor alone. The release notes list it that way rather than as a GPU-backend addition, so anyone expecting CUDA, Metal or Vulkan acceleration for this specific architecture should check later builds.
Can llama.cpp be used in a commercial product?
llama.cpp ships under the MIT license, which allows commercial use, modification and redistribution as long as the copyright notice stays in place. The project sits at roughly 128,000 GitHub stars under the ggml-org organisation, and v0.4.1 is marked as a normal release rather than a pre-release, so it is the build the project currently points people at.

Try it

git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp && git checkout v0.4.1

Sources

Tags

  • llama-cpp
  • inference
  • local-llm
  • ggml
  • cpu-inference
  • moe
  • ternary-weights
  • open-source
  • quantization

← All releases