llama.cpp vs vLLM

Both are catalogued under Model Serving. The figures come from the GitHub API; the assessments are ours.

At a glance

At a glancellama.cppvLLM
LicenseMITApache-2.0
LanguagesC++, CPython, CUDA
DeploymentRuns locally / Self-hostedSelf-hosted / Runs locally
MaturityEstablishedEstablished
Stars124k89.1k
Star growth over the last 7 days+30 ★+23 ★
Forks21.7k20.7k
Open issues2k6.7k
Last commit15 Aug 202615 Aug 2026
ActivityActiveActive

What each one does

llama.cpp

The quantisation work here is what put usable models on hardware without a datacentre GPU, and much of the local-model ecosystem is built on top of it. Working with it directly means dealing with build flags and hardware specifics that higher-level wrappers hide from you.

Full entry →

vLLM

Paged attention and continuous batching let one GPU serve far more concurrent requests than a naive loop, which matters because agents are unusually chatty. The OpenAI-compatible endpoint means most agent frameworks point at it with a base-URL change. Expect real operational work around GPU memory sizing and model loading times.

Full entry →

What you can do

llama.cpp

  • Run a model in one commandllama cli -hf ggml-org/Qwen3.5-0.8B-GGUF pulls the GGUF straight from Hugging Face and drops you into an interactive session, with no Python environment involved.
  • Serve an OpenAI-compatible endpointllama serve -hf <repo> starts a REST server that existing OpenAI clients can be pointed at, and ships a built-in web UI for trying the model.
  • Fit models larger than VRAMInteger quantisation from 1.5-bit through 8-bit, combined with CPU+GPU hybrid inference, lets you offload only part of a model to the GPU and keep the rest in system RAM.
  • Target the hardware you haveOne source tree covers Metal and ARM NEON on Apple silicon, CUDA on NVIDIA, HIP on AMD, MUSA on Moore Threads, plus Vulkan, SYCL, OpenCL, WebGPU and CANN backends.
  • Constrain output with GBNF grammarsA GBNF grammar file forces generation to match a syntax you define, which is how you get reliably structured output out of a small local model.

vLLM

  • Serve more concurrent agents per GPUPaged attention and continuous batching keep many requests in flight on a single card instead of running them through a naive one-at-a-time loop.
  • Point existing clients at itMost agent frameworks switch over to the OpenAI-compatible API server with a base-URL change and no client rewrite, and the same server also speaks the Anthropic Messages API and gRPC.
  • Run it on the hardware you haveuv pip install vllm installs the server, which runs on NVIDIA, AMD and Intel GPUs and on x86/ARM/PowerPC CPUs, with hardware plugins covering Google TPUs, Intel Gaudi, Huawei Ascend and Apple Silicon.
  • Shrink a model to fit the cardQuantized weights are served directly — FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ/AWQ, GGUF and compressed-tensors are all on the supported list — so the memory a model needs is something you choose rather than a fixed property of the checkpoint.
  • Constrain output and parse tool callsStructured output generation runs through xgrammar or guidance, and the server ships tool-calling and reasoning parsers for the models that emit them.

Other comparisons