mrkeyoor.com_
Sat 31 Oct 08:50 UTC
LLM Toolsevaluationupdated 25 Oct 2026

llama.cpp review

llama.cpp is a C/C++ inference project whose main product is a library with a C-style interface. It also provides command-line tools and an HTTP server with a web interface. It runs compatible GGUF models, with documented CPU and GPU build paths.

+544stars / 7d
Verdict

Choose llama.cpp when control over GGUF files, native integration, and backend selection matters enough to justify testing your own deployment. Our October 14, 2026 run at commit 091b6a7 recorded a dependency-resolution error despite a successful install flag, an unidentified successful build step, and a pytest command with 7 reported passes and 2 collection errors. It does not verify CLI installation, native build success, inference performance, or deployment security.

We ran it

Lab card: what happened when we ran llama.cppScreenshot of llama.cpp (llama.app)
Install✓ · 48s56 packages · 947 MB
Build✓ · 13s
Tests✗ · 7s7 passed · 0 failed · 2 errors of 9 (pytest)
Known vulns11(pip-audit)
Repo3758 files~879,865 lines of source · 171 MB · 58 CI workflows · tests dir

Answers from our run

Does llama.cpp build from source?

Dependencies installed in 48 seconds (56 packages), and the build succeeded in 13 seconds. We cloned commit 091b6a7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do llama.cpp's tests pass?

No. The project's own test command finished in 7 seconds and reported 7 passed, 0 failed, 2 collection errors (pytest).

Does llama.cpp have known vulnerabilities in its dependencies?

pip-audit flagged 11 known advisories in the dependency tree at the time of our run.

Who should not use llama.cpp?

Teams expecting arbitrary checkpoints to load directly: llama.cpp requires GGUF, with conversion scripts for other formats.

What are the alternatives to llama.cpp?

Ollama, vLLM. Choose llama.

Setup2/5The October 14, 2026 run at 091b6a7 has a successful install flag alongside a dependency-resolution error. Its unidentified build step and missing-import collection errors leave native setup unverified.
Docs4/5The supplied build, model, server, and v0.6.0 release documentation covers backend requirements, GGUF, API options, and integration changes. The run did not validate those instructions.
Community2/5Release notes show contributions and issue-linked changes, but the supplied evidence does not measure support responsiveness or contributor experience. Popularity is not a substitute for those checks.
Maturity3/5The documented library, backend paths, and server provide several integration routes. v0.6.0 changes APIs and session formats, and no representative native workload was validated in our run.

Discussed on

  1. hnGgml.ai joins Hugging Face to ensure the long-term progress of Local AI839 points
  2. hnVision Now Available in Llama.cpp550 points
  3. hnMistral Integration Improved in Llama.cpp95 points
  4. hnLlama.cpp: Add GPT-OSS35 points
  5. hnLLama.cpp Got Screwd11 points

Who it’s for

Developers embedding inference through a C-style interface.
Builders who want control over GGUF model files and hardware backends.
Operators willing to validate their model, chat template, and API requests on the intended machine.

Who it’s NOT for

Teams expecting arbitrary checkpoints to load directly: llama.cpp requires GGUF, with conversion scripts for other formats.
Embedders expecting upgrades without integration checks: v0.6.0 changes the batch API and session formats.
Readers seeking a verified inference benchmark or installation walkthrough from our sandbox run: the record establishes neither.

Setup reality

In our recorded run on October 14, 2026, at commit 091b6a7fc561b78da90a0ed2d524ec995458c657, the Python-oriented harness marked its install step successful after 48 seconds. However, the retained output reports an unresolved requests dependency conflict. The success flag therefore does not establish a complete dependency installation or an installed llama CLI. The record reports 56 dependencies and 947 MB; those figures do not describe a verified native runtime installation.

The build step returned exit 0 after 13 seconds, but its retained output is empty and the command is not supplied. We cannot identify it as a completed native CMake build. The pytest step exited 1 after about 7 seconds. Its retained summary says 7 passed and 2 collection errors, caused by missing appium and wget imports. The parser records 0 failed and a total of 9, but exhaustive unique test coverage was not reconciled. This is not a seven-of-nine product acceptance result.

Pip-audit recorded 11 advisories across 2 packages in that environment. Package identities, severity, and audit coverage are unknown. These observations do not establish vulnerabilities in the native inference engine or a particular deployment.

For actual setup, choose a compatible GGUF model and follow the documented build path for your hardware, or evaluate a documented prebuilt distribution. Verify the installed binary and run a representative model workload separately.

Decide by integration needs, then verify the runtime

llama.cpp gives developers a C-style library interface, command-line tools, and a server. Choose it when your application needs direct control over model files and execution settings. Our recorded sandbox run leaves native installation and inference behavior unverified, so it cannot settle whether llama.cpp works well on your hardware.

The build guide identifies the library as the main product and documents separate CPU and accelerated build paths. Those paths have different requirements. For example, CUDA needs the CUDA toolkit, while Metal is enabled by default on macOS. A result from one setup cannot certify the others.

What our recorded run establishes

The run took place on October 14, 2026, at commit 091b6a7fc561b78da90a0ed2d524ec995458c657. Its recorded configuration was 3 CPUs, an 8 GB memory limit, and the ghcr.io/astral-sh/uv:python3.12-bookworm image. The harness selected Python as the primary ecosystem; detection also found C++ and CMake. This was a Python-oriented repository check, with no supplied inference workload.

The install step returned exit 0 after 48 seconds, but its retained output begins with a dependency-resolution error. It says the available requests==2.28.1 did not satisfy requests>=2.32.3,<2.33.dev0 and describes uv's index-selection behavior. The record does not explain how that error and the success flag arose together. We therefore cannot call dependency setup complete. The reported 56 dependencies and 947 MB describe the recorded environment, without proving that a llama CLI was installed.

The build step returned exit 0 after 13 seconds. Its output tail is empty, and the supplied record omits the command. It provides no evidence of which native targets, if any, were compiled. There is no installed-binary check or model-download result to connect that step to a working inference runtime.

The pytest step exited 1 after roughly 7 seconds. Its retained output reports "7 passed, 2 errors in 1.28s"; that pytest summary duration differs from the harness's elapsed step time. Collection failed in scripts/snapdragon/qdc/tests because appium was missing and in tools/server/tests because wget was missing. The parser reports 0 failed and a total of 9. These are recorded summary values, not reconciled exhaustive counts of unique tests. The command did not finish cleanly, but the collection errors do not prove that native inference is broken.

Pip-audit recorded 11 advisories across 2 packages. The supplied evidence does not identify those packages, their severity, or how much of the environment was audited. Dependency count is not audit coverage. These findings cannot establish whether a native server deployment exposes an affected dependency.

The repository scan recorded 3,758 files, approximately 879,865 source lines, 171 MB, 58 CI workflows, and a tests directory. Those inventory measurements describe the checkout, not passing coverage or runtime reliability.

GGUF and backend choice define your evaluation

The model guide requires GGUF files and points to conversion scripts for other formats. Start with a model explicitly compatible with llama.cpp. Our sandbox's 8 GB limit is not a model-size recommendation, and the run contains no measurement of model memory use, latency, output quality, or GPU execution.

For a useful acceptance check, record the runtime commit, model file and quantization, hardware backend, and context settings. Verify the binary, load the model, and exercise representative prompts or API requests. Keep dependency setup, compilation, model download, and inference results separate so a successful preliminary step cannot stand in for the workload you need.

Server features require their own checks

The server documentation describes a web interface and OpenAI-compatible chat completions, Responses, and embeddings routes. It also documents Anthropic-compatible messages, optional API-key authentication, and experimental agent tools. These are documented capabilities, not features exercised in our run.

The documented file and shell tools carry an explicit warning against enabling them in untrusted environments. Evaluate those permissions separately from chat access. API compatibility also needs request-level checks with your chosen model and template; our Python collection errors say nothing about endpoint behavior.

Budget for integration changes

The v0.6.0 release notes describe the llama_batch_ext API and llama_process(), with session formats bumped to LLAMA_SESSION_VERSION 11 and LLAMA_STATE_SEQ_VERSION 4. If you embed the library or preserve session state, review those changes before upgrading. Neither the recorded build flag nor the pytest summary verifies migration compatibility.

When to evaluate Ollama or vLLM

Ollama documents named-model chat commands and a REST API for running and managing models. It is relevant when that operating interface suits your application better than direct library integration. This evidence does not establish that its setup is faster or that it performs better.

vLLM documents continuous batching of incoming requests and parallelism for distributed inference. Evaluate it when those serving requirements drive the choice. No comparative benchmark was run.

How to read the scores

These are editorial evidence ratings, not benchmark results. The scale is 1 for substantial documented obstacles, 2 for limited evidence or unresolved setup, 3 for a documented path with material validation gaps, 4 for detailed evidence across the relevant paths, and 5 for strong evidence plus representative validation. Unknown adoption, support responsiveness, and compatibility do not earn a high score. Setup reflects the conflicting run record; documentation reflects the supplied guides; community reflects the limited evidence of participation; maturity reflects documented integration capabilities and changes. None measures production reliability.

Alternatives

ProjectWhat it isPick it when
Ollama gh↗A model runner with a REST API for running and managing models.Choose Ollama when named-model chat commands and model management through a REST API fit your application better than embedding a C-style library.
vLLM gh↗An inference and serving library that documents continuous batching and distributed inference.Evaluate vLLM when batching incoming requests or distributing inference is central to the deployment. No comparative throughput was measured here.

What people are saying

  1. [hackernews] Faster prompt lookup drafting in llama.cpp
  2. [huggingface] Transformers now runs llama.cpp quants

Sources

  1. llama.cpp repository and README
  2. llama.cpp website
  3. Native build guide
  4. GGUF model requirements
  5. Server API, authentication, and MCP documentation
  6. v0.6.0 release notes
  7. Issue 30564: messages route drops reasoning effort
  8. Ollama repository

More llm tools reviews

ironclaw · infinity · Claude-Code-Game-Studios · OmniRoute · harnessrouter · pi-subagents · the whole board →