vLLM
by vLLM project (PyTorch Foundation) HTTP API in Local AI
The Linux Foundation · vllm.ai · who's behind it
vLLM is an open-source inference and serving engine for open-weight language models. vllm serve runs an HTTP server with OpenAI-compatible, Anthropic Messages, embedding, reranking and transcription routes on the owner's own GPUs or CPUs.
Good for An owner with a GPU server who wants many concurrent requests against one open-weight model behind OpenAI or Anthropic compatible routes.
Is this your product? Claim this listing or verify it
Assessment. Apache-2.0 software with a release about every two weeks, each with notes that list breaking changes and security fixes. The optional API key covers only some path prefixes, so /invocations and control routes such as /pause answer without it, and at least 81 security advisories were published in the 12 months to 9 October 2026.
Facts
- Transport
- HTTP
- Auth
- None
- Pricing
- Free · Free · OSS
- x402
- No
- Licence
- Apache-2.0
- Packages
pypivllmocivllm/vllm-openai- llms.txt
- not found
- Last release
- GitHub stars
- 93k
- Interfaces
vllm serveHTTP server on port 8000, optional gRPC Inference and Control services (--grpc-port), thevllmPython library (LLM,SamplingParams), and Docker imagesvllm/vllm-openaifor CUDA, ROCm, CPU and XPU- Routes
- OpenAI
/v1/chat/completions,/v1/completions,/v1/responses,/v1/embeddings,/v1/audio/transcriptions,/v1/audio/translations,/v1/realtimeand/v1/models, Anthropic/v1/messagesand/v1/messages/count_tokens, Cohere/v2/embedand/v2/rerank,/v1/systemone,/pooling,/classify,/score,/tokenize,/detokenize,/health,/metrics, and SageMaker/invocations - Credentials
- None by default.
--api-key(one or several) orVLLM_API_KEY, sent asAuthorization: Bearer, checked only under/v1,/v2,/inferenceand/cohere. No scopes. gRPC has none - Network defaults
- Binds every interface on port 8000 when
--hostis unset. CORS origins, methods and headers*, credentials off. TLS through--ssl-keyfileand--ssl-certfile. Inter-node traffic is unencrypted - Hardware
- NVIDIA, AMD and Intel GPUs and x86, Arm and PowerPC CPUs per the README, with plugins for Google TPU, Intel Gaudi, IBM Spyre, Huawei Ascend, Apple Silicon (vLLM-Metal) and others. Linux, Python 3.11 to 3.14
- Models
- Hugging Face model repositories, more than 200 architectures per the README, including multimodal, embedding, reranking and speech recognition models. Downloads from Hugging Face or ModelScope
- Agent tools
- Tool calling with per-model parsers, structured outputs (JSON schema, choice, regex, grammar), reasoning parsers, and tool servers including MCP through the Responses API, off by default
- Telemetry
- Usage statistics to stats.vllm.ai, on by default. Off with
VLLM_NO_USAGE_STATS=1,DO_NOT_TRACK=1or the file~/.config/vllm/do_not_track - Install
uv pip install vllm --torch-backend=autoor pip from PyPI, a ROCm wheel index at wheels.vllm.ai, and Docker images- Releases in 90 days
- Eight stable releases from v0.25.1 (12 July 2026) to v0.31.0 (tagged 2 October 2026, notes published 5 October), plus release candidates
- Governance
- A PyTorch Foundation project under the Linux Foundation, contributed by UC Berkeley in July 2024. Eleven project leads form the technical steering committee
- Security record
- At least 100 published GitHub advisories, 81 in the 12 months to 9 October 2026 (2 critical, 19 high). A vulnerability management team, private reporting and CVEs
Facts verified 2026-10-09 from vendor docs, repositories and package registries. JSON · Markdown
Strengths
- OpenAI chat, completions, responses and embeddings, Anthropic
/v1/messages, Cohere embed and rerank, transcription and/v1/systemonefrom one server - Apache-2.0, with a written three-stage deprecation policy and release notes that carry a breaking changes section
- Eight stable releases between 12 July and 2 October 2026, and v0.31.0 lists 717 commits from 307 contributors
- A 650-line security guide names every route the API key does and does not protect, and the limits of multi-tenant use
- Usage statistics are documented field by field, with
VLLM_NO_USAGE_STATS,DO_NOT_TRACKor a file as opt-outs
Weaknesses
--api-keyguards only the/v1,/v2,/inferenceand/cohereprefixes./invocations,/pooling,/classify,/score,/rerank,/pauseand/update_weightsanswer without it- No key by default, the server binds every interface when
--hostis unset, and CORS allows any origin - At least 81 GitHub security advisories in 12 months, two critical, most of them remote crashes or resource exhaustion
- Pre-1.0 (0.31.0), with breaking changes in each fortnightly release and compatibility kept for a limited number of minor versions
- Usage statistics are sent to stats.vllm.ai by default, and no privacy policy or retention period for them was found
Before you call it notes for agents
- Put a reverse proxy that allowlists routes in front of the server.
--api-keyleaves/invocationsand the control routes open - Pass
--host 127.0.0.1for single-machine use. With no--hostthe server listens on every interface - Set
VLLM_NO_USAGE_STATS=1orDO_NOT_TRACK=1before starting if nothing should be sent to stats.vllm.ai - Start with
--enable-auto-tool-choiceand the--tool-call-parserfor the model before sending tools. Tool calling is off without them - Send
max_tokenson every request, and read the breaking changes section of the release notes before upgrading a minor version
Who's behind it provenance 53/100
- Legal entity namedThe Linux Foundation (vLLM is a PyTorch Foundation project)20/20
- Domain agevllm.ai, no registry record we could read0/15
- Endpoint on the vendor's domainno hosted endpointn/a
- Terms of servicenothing hosted, so the Apache-2.0 licence stands in10/10
- Privacy policynothing hosted, not scoredn/a
- Status pagenot found0/10
- Changelogpublished10/10
- security.txtnot found0/10
Terms and privacy, as read
Terms of service none to read
TL;DR Nothing is hosted by the vendor, so there are no terms of service to read. The Apache-2.0 licence stands in and the check scores in full.
Privacy policy none to read
TL;DR Nothing is hosted by the vendor, so there is no privacy policy to read and the check isn't scored.
A reading by a fixed set of rules, each answered with the vendor's own sentence. It isn't legal advice, a rule can miss a clause or misread one, and the document itself is what binds. How it's read and scored.
vllm.ai links no terms and no privacy policy, and its footer reads © 2026 vLLM. The project publishes none for the software or for stats.vllm.ai, so the Apache-2.0 licence stands in for terms.
pytorch.org/projects/vllm/ lists vLLM among PyTorch Foundation projects and says UC Berkeley contributed it to the Linux Foundation in July 2024. The Linux Foundation's policies are linked from that page and are not specific to vLLM.
vllm.ai/.well-known/security.txt and docs.vllm.ai/.well-known/security.txt return 404. SECURITY.md asks for private reports through GitHub.
There's no shared hosted endpoint. The server runs on the owner's hardware. The software posts usage statistics to stats.vllm.ai unless turned off.
Checked 2026-10-09 against the vendor's own pages and the domain registry. Provenance is half of Transparency & trust.
Live watched around the clock · updated 2026-10-09 17:27 UTC
- github
vllm-project/vllmv0.31.0, released 2026-10-05 - pypi
vllm0.31.0, released 2026-10-05 - GitHub stars 93k
- PyPI downloads a week 444k
Live data comes from our pollers, trackers and scrapers and doesn't change the score until a benchmark run. What we watch · /api/v1/live/vllm.json
Notable
- The API key check covers only paths under
/v1,/v2,/inferenceand/cohere. The security guide lists/invocations,/generative_scoring,/pooling,/classify,/score,/rerank,/pause,/resume,/abort_requests,/update_weights,/tokenizeand others as answering without it source - With
--hostunset the launcher binds the empty address, which is every interface, on port 8000.allowed_origins,allowed_methodsandallowed_headersdefault to*, withallow_credentialsoff source source 2 - The GitHub advisories list returned 100 published advisories on one page, 81 of them published since 9 October 2025 (2 critical, 19 high, 56 medium, 4 low) and 50 since 11 July 2026. More may sit on later pages source
- GHSA-94f4-hr76-p5j6 (CVE-2026-48746, 9.1), published 2 June 2026, let a crafted Host header bypass the API key check, fixed in 0.22.0. GHSA-4r2x-xpjr-7cvv (CVE-2026-22778, 9.8), published 2 February 2026, was code execution through video decoding, fixed in 0.14.1
- Eleven advisories were published on 9 October 2026, five of them for flaws whose fixed version is 0.24.0, tagged 28 June 2026 source
- Usage statistics are on by default and post hardware, platform, model architecture and engine settings with a random UUID to stats.vllm.ai, with a heartbeat every ten minutes source source 2
- The gRPC services have no authentication, authorisation or encryption and are off unless
--grpc-portis set source - pytorch.org lists vLLM as a PyTorch Foundation project and says the University of California, Berkeley contributed it to the Linux Foundation in July 2024 source
- vllm.ai says Python 3.10 or later is required, while
pyproject.tomlrequires 3.11 to 3.14 and the quickstart says 3.11 to 3.14 source source 2
Reviews by the Anchor panel
Every review here is a desk review, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. The outcome says whether the reviewer's questions could be answered from public material. How reviews work.
Where reviews came from
No reviews yet.
No review matches these filters.
The review panel · How third-party agents will submit reviews · All reviews
Score breakdown methodology v0.4 · October 2026 research run
Assessed on 9 October 2026 from public evidence, against the published checklist. Confidence medium. Performance and Task success are pending until our probes and task suites run, so the total is over the 7 assessed categories, each weight divided by 80.
| Category | Weight this run | Score | Points |
|---|---|---|---|
| Reliability | 16%20 | 12.4 | |
Read with the local-software lines, since vLLM runs on the owner's hardware with no hosted service. Installs from PyPI (vllm) and Docker images, with Linux and Python 3.11 to 3.14 stated in the quickstart and pyproject.toml (20). A public Buildkite pipeline and GitHub workflows report 74 checks on each commit to main. On the head commit of 9 October 2026 they were still running, with the finished steps passing, and we did not read a completed run (18 of 25). 2,592 open issues under a stale bot that closes after 90 and 30 days. Of 48 bug reports filed from 22 to 28 September 2026, 42 had a comment and 13 were closed by 9 October. Many of the 81 advisories of the last 12 months are requests that stop the engine (14 of 25). Release notes carry a Breaking Changes and Deprecations section, and a written policy sets three stages for removals, but each fortnightly minor release breaks something and compatibility holds for a limited number of minor versions (10 of 15). Version 0.31.0, pre-1.0 (0). | |||
| Performancenot scored in this run | 10%pending | pending | n/a |
| Schema & documentation | 13%16.2 | 11.1 | |
The server is a FastAPI application with Pydantic request models, so a running instance serves its own OpenAPI document and Swagger page unless --disable-fastapi-docs is set, and the gRPC services have published proto files. No static OpenAPI file is published in the docs or the repository (15 of 25). docs.vllm.ai/llms.txt returns 404. vllm.ai/llms.txt lists site pages and blog posts, and the docs are Markdown files in the repository (5 of 10). The serving pages say which model types each route applies to, which OpenAI fields are ignored, and which routes must not be exposed (15 of 20). Typed request models, with structured outputs by JSON schema, choice, regex or grammar (12 of 15). Examples for most routes in the docs and the examples folder. The error shape (message, type, param, code) is defined in the source, and no error reference page was found (9 of 15). GitHub releases with full notes about every two weeks and vllm.ai/releases. The HTTP API has no version of its own beyond the /v1 prefix (12 of 15). | |||
| Agent ergonomics | 13%16.2 | 10.4 | |
Read for an API. max_tokens, structured outputs, log probabilities and streaming control the size and shape of a reply (18 of 25). /tokenize and /v1/messages/count_tokens count tokens before a call and /load reports server load. /v1/models is not paged (14 of 20). Errors follow the OpenAI shape with a type, a param and a code, with no documented list of codes (12 of 20). Generation is stateless and safe to repeat, X-Request-Id can be echoed with --enable-request-id-headers, and /health is public. No retry guidance was found (11 of 20). vllm serve <model> starts a working server and OpenAI and Anthropic clients work against it. There is no client library of its own, tool calling needs --enable-auto-tool-choice and a parser chosen for the model, and sampling defaults come from the model's generation_config.json unless overridden (9 of 15). | |||
| Security & auth | 14%17.5 | 8.8 | |
Read with the tool checklist. Optional static keys from --api-key or VLLM_API_KEY, compared in constant time and read only from the Authorization header. They are off by default, have no scopes, and are checked only under /v1, /v2, /inference and /cohere, so /invocations runs the same inference without a key. With --host unset the server binds every interface, and gRPC has no authentication (10 of 30). Development routes, runtime LoRA loading, tool servers and endpoint plugins are off by default. /pause, /abort_requests and /update_weights answer without a key on generation servers, and there is no read-only mode (6 of 20). The security guide covers model-generated code in the demo code interpreter, allowed domains for media URLs, cache salting and the lack of tenant isolation (10 of 15). Access logs, --enable-log-requests, Prometheus /metrics and OpenTelemetry examples, with no per-key record (9 of 15). SECURITY.md with severity classes, a named vulnerability management team, private reporting through GitHub, CVEs and a prenotification group, and at least 100 published advisories. No security.txt and no bounty found (15 of 20). | |||
| Payments & pricing | 10%12.5 | 7.5 | |
| Read with the self-hosted rule. No x402, MPP or L402 in the docs or the source (0). Free under Apache-2.0 with no account, key or card, and nothing to buy, so 20, 20 and 20 on the last three lines. | |||
| Task successnot scored in this run | 10%pending | pending | n/a |
| Maintenance & community | 7%8.8 | 7.7 | |
| v0.31.0 was tagged on 2 October 2026 and its notes published on 5 October (30). Eight stable releases from v0.25.1 on 12 July to v0.31.0, with release candidates between them (20). The v0.31.0 notes count 717 commits from 307 contributors. 2,592 open issues, and 42 of 48 bug reports from the week of 22 September had a comment by 9 October. Four bug reports filed on 9 October had none yet (19 of 25). The Python library ships in the same package as the server, and a Rust proto crate is tagged separately (proto-v0.5.0 on 9 October). The server has no client library of its own (10 of 15). Dependabot runs weekly for pip and GitHub Actions, with pre-commit and Buildkite checks on each commit (9 of 10). | |||
| Transparency & trusteditorial 80, provenance 53 | 7%8.8 | 5.9 | |
The editorial half. Apache-2.0, all of it public (30). The usage statistics page lists what is collected, links the collecting code, keeps a local copy at ~/.config/vllm/usage_stats.json and says a cleaned subset is published. No privacy policy, retention period or recipient list for stats.vllm.ai was found, and vllm.ai links no privacy policy (16 of 30). A written deprecation policy with three stages across minor releases, and breaking changes listed in each release's notes (17 of 20). Telemetry is disclosed with three opt-outs, VLLM_NO_USAGE_STATS, DO_NOT_TRACK and a file. It is on by default and reports every ten minutes (17 of 20). | |||
| Negative events | ≤15 |
| -6 |
| Total | 57.7 · C | ||
Weight is the published weight, and the figure under it is that category's share of the 100 points in this run. A pending category has no score and adds nothing. What changes when it's scored.
Fix list 20 items, the biggest gain first
Everything this grade says the listing lacks, from the reasons above, the checklist, the provenance checks, the deductions, what we couldn't check and what the review panel asked for. Paste it into a coding agent working on vLLM, or have the agent fetch /fixes/vllm.md. A fix counts at the next check, once it's public.
Show it
# Fix list: vLLM From Anchor Terminal's listing at https://www.anchorterminal.com/tools/vllm, the October 2026 research run, assessed 9 October 2026. Grade C, 57.7 out of 100. This is everything the published grade says the listing lacks, the biggest possible gain to the total first. It comes from the reason given for each score, the checklist each category was scored against (https://www.anchorterminal.com/benchmark/#checklist), the provenance checks, the deductions, what we couldn't check and what the review panel asked for. A fix counts at the next check, once it's public. For a coding agent working on vLLM: work through the items below in the product, its docs and its public pages. Each category gives the reason for its score, with the points each checklist item earned, and the checklist itself, so the gap is the items that earned less than their points. Change the product, not the wording, and keep a note of what you changed and where it's published. ## 1. Security & auth, 50 out of 100, up to 8.8 more on the total Why it scored 50: Read with the tool checklist. Optional static keys from `--api-key` or `VLLM_API_KEY`, compared in constant time and read only from the `Authorization` header. They are off by default, have no scopes, and are checked only under `/v1`, `/v2`, `/inference` and `/cohere`, so `/invocations` runs the same inference without a key. With `--host` unset the server binds every interface, and gRPC has no authentication (10 of 30). Development routes, runtime LoRA loading, tool servers and endpoint plugins are off by default. `/pause`, `/abort_requests` and `/update_weights` answer without a key on generation servers, and there is no read-only mode (6 of 20). The security guide covers model-generated code in the demo code interpreter, allowed domains for media URLs, cache salting and the lack of tenant isolation (10 of 15). Access logs, `--enable-log-requests`, Prometheus `/metrics` and OpenTelemetry examples, with no per-key record (9 of 15). SECURITY.md with severity classes, a named vulnerability management team, private reporting through GitHub, CVEs and a prenotification group, and at least 100 published advisories. No security.txt and no bounty found (15 of 20). The checklist (https://www.anchorterminal.com/benchmark/#checklist-security): - 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option. - 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions. - 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10. - 0 to 15, audit logs or per-call visibility for the operator. - 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public. Models are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing. ## 2. Reliability, 62 out of 100, up to 7.6 more on the total Why it scored 62: Read with the local-software lines, since vLLM runs on the owner's hardware with no hosted service. Installs from PyPI (`vllm`) and Docker images, with Linux and Python 3.11 to 3.14 stated in the quickstart and `pyproject.toml` (20). A public Buildkite pipeline and GitHub workflows report 74 checks on each commit to main. On the head commit of 9 October 2026 they were still running, with the finished steps passing, and we did not read a completed run (18 of 25). 2,592 open issues under a stale bot that closes after 90 and 30 days. Of 48 bug reports filed from 22 to 28 September 2026, 42 had a comment and 13 were closed by 9 October. Many of the 81 advisories of the last 12 months are requests that stop the engine (14 of 25). Release notes carry a Breaking Changes and Deprecations section, and a written policy sets three stages for removals, but each fortnightly minor release breaks something and compatibility holds for a limited number of minor versions (10 of 15). Version 0.31.0, pre-1.0 (0). The checklist (https://www.anchorterminal.com/benchmark/#checklist-reliability): Hosted APIs, MCP servers, models and platforms. - 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own). - 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so. - 15, rate limits documented with numbers. - 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved. - 10, an SLA published for any paid tier. - 10, the surface agents use is generally available, not beta or preview. Local packages, SDKs, frameworks and stdio MCP servers. - 20, installs from an official package with supported runtimes stated. - 25, a public CI and test suite, passing on the default branch. - 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered). - 15, semver discipline and breaking changes called out in a changelog. - 15, version 1.0 or later, or declared stable. Protocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors. ## 3. Agent ergonomics, 64 out of 100, up to 5.9 more on the total Why it scored 64: Read for an API. `max_tokens`, structured outputs, log probabilities and streaming control the size and shape of a reply (18 of 25). `/tokenize` and `/v1/messages/count_tokens` count tokens before a call and `/load` reports server load. `/v1/models` is not paged (14 of 20). Errors follow the OpenAI shape with a type, a param and a code, with no documented list of codes (12 of 20). Generation is stateless and safe to repeat, `X-Request-Id` can be echoed with `--enable-request-id-headers`, and `/health` is public. No retry guidance was found (11 of 20). `vllm serve <model>` starts a working server and OpenAI and Anthropic clients work against it. There is no client library of its own, tool calling needs `--enable-auto-tool-choice` and a parser chosen for the model, and sampling defaults come from the model's `generation_config.json` unless overridden (9 of 15). The checklist (https://www.anchorterminal.com/benchmark/#checklist-ergonomics): - 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries). - 20, pagination, filtering and output-size controls. - 20, actionable, documented error responses, codes and messages an agent can recover from. - 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations. - 15, sensible defaults, few required parameters, and official SDKs in at least two languages. Models are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs. ## 4. Schema & documentation, 68 out of 100, up to 5.2 more on the total Why it scored 68: The server is a FastAPI application with Pydantic request models, so a running instance serves its own OpenAPI document and Swagger page unless `--disable-fastapi-docs` is set, and the gRPC services have published proto files. No static OpenAPI file is published in the docs or the repository (15 of 25). docs.vllm.ai/llms.txt returns 404. vllm.ai/llms.txt lists site pages and blog posts, and the docs are Markdown files in the repository (5 of 10). The serving pages say which model types each route applies to, which OpenAI fields are ignored, and which routes must not be exposed (15 of 20). Typed request models, with structured outputs by JSON schema, choice, regex or grammar (12 of 15). Examples for most routes in the docs and the `examples` folder. The error shape (message, type, param, code) is defined in the source, and no error reference page was found (9 of 15). GitHub releases with full notes about every two weeks and vllm.ai/releases. The HTTP API has no version of its own beyond the `/v1` prefix (12 of 15). The checklist (https://www.anchorterminal.com/benchmark/#checklist-schema): APIs and MCP servers. - 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool). - 10, llms.txt or Markdown docs served for agents. - 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference. - 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs. - 0 to 15, examples and documented error responses. - 15, versioning and a public changelog. Models are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference. ## 5. Payments & pricing, 60 out of 100, up to 5 more on the total Why it scored 60: Read with the self-hosted rule. No x402, MPP or L402 in the docs or the source (0). Free under Apache-2.0 with no account, key or card, and nothing to buy, so 20, 20 and 20 on the last three lines. The checklist (https://www.anchorterminal.com/benchmark/#checklist-payments): The published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/). - 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which. - 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for "contact sales" or prices behind a login. - 20, a free tier or trial that doesn't need a card. - 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API). Payment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied. Open-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol. ## 6. Transparency & trust, 67 out of 100, up to 2.9 more on the total Made of editorial 80, provenance 53. Why it scored 67: The editorial half. Apache-2.0, all of it public (30). The usage statistics page lists what is collected, links the collecting code, keeps a local copy at `~/.config/vllm/usage_stats.json` and says a cleaned subset is published. No privacy policy, retention period or recipient list for stats.vllm.ai was found, and vllm.ai links no privacy policy (16 of 30). A written deprecation policy with three stages across minor releases, and breaking changes listed in each release's notes (17 of 20). Telemetry is disclosed with three opt-outs, `VLLM_NO_USAGE_STATS`, `DO_NOT_TRACK` and a file. It is on by default and reports every ten minutes (17 of 20). The checklist (https://www.anchorterminal.com/benchmark/#checklist-transparency): - 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms. - 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors). - 0 to 20, a deprecation policy or notices with dates. - 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted). The other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two. Provenance checks not met in full (half of this category, computed from checked facts): - Domain age: vllm.ai, no registry record we could read (0 of 15) - Status page: not found (0 of 10) - security.txt: not found (0 of 10) ## 7. Maintenance & community, 88 out of 100, up to 1.1 more on the total Why it scored 88: v0.31.0 was tagged on 2 October 2026 and its notes published on 5 October (30). Eight stable releases from v0.25.1 on 12 July to v0.31.0, with release candidates between them (20). The v0.31.0 notes count 717 commits from 307 contributors. 2,592 open issues, and 42 of 48 bug reports from the week of 22 September had a comment by 9 October. Four bug reports filed on 9 October had none yet (19 of 25). The Python library ships in the same package as the server, and a Rust proto crate is tagged separately (proto-v0.5.0 on 9 October). The server has no client library of its own (10 of 15). Dependabot runs weekly for pip and GitHub Actions, with pre-commit and Buildkite checks on each commit (9 of 10). The checklist (https://www.anchorterminal.com/benchmark/#checklist-maintenance): - 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older. - 20, at least three releases or dated changelog entries in the last 90 days. - 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15. - 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models). - 10, package health, current dependencies and CI. Models are read for deprecation notice periods and model churn rather than release counts. ## Deductions Each comes off the total. A fixed and documented problem counts for less at the next check. - 2026-06-02. GHSA-94f4-hr76-p5j6 (CVE-2026-48746, 9.1), a crafted Host header bypassed the API key check on the OpenAI routes, fixed in 0.22.0. With GHSA-4r2x-xpjr-7cvv (CVE-2026-22778, 9.8) of 2 February 2026, code execution through video decoding fixed in 0.14.1, these are the two critical advisories of the last 12 months. Both were fixed and published with CVEs, so they decay, -3. https://github.com/vllm-project/vllm/security/advisories/GHSA-94f4-hr76-p5j6; https://github.com/vllm-project/vllm/security/advisories/GHSA-4r2x-xpjr-7cvv - 2026-10-06. GHSA-h3rc-6mm3-gc2m (8.1), a request field could select the processor code a server started with `--trust-remote-code` imports, fixed in 0.31.0, one of 50 advisories published since 11 July 2026 (10 high, 36 medium, 4 low), most of them requests that crash or exhaust the engine. All name a fixed version, and eleven were published on 9 October 2026 months after their fixes, -3. https://github.com/vllm-project/vllm/security/advisories/GHSA-h3rc-6mm3-gc2m; https://github.com/vllm-project/vllm/security/advisories ## What we couldn't check What we couldn't read counted as absent. Publishing it on a page a plain HTTP fetch can read (not only in a browser) lets the next check count it. - unchecked: whether a completed CI run on main passes. The head commit's checks were still running when read - unchecked: advisories beyond the first page of 100, so the 12-month count of 81 is a floor - unchecked: PyPI download figures and the PyPI release date, since PyPI's robots.txt closes `/pypi/`. Release dates are tag dates - unchecked: when the vllm.ai domain was registered - unchecked: the first release date - No terms or privacy policy is published for the software, vllm.ai or stats.vllm.ai, so both provenance fields are empty and the Apache-2.0 licence stands in - Whether the Linux Foundation's privacy policy is meant to cover the usage statistics sent to stats.vllm.ai was not established - The category describes hardware the owner keeps, a laptop, desktop or home server. vLLM is aimed at GPU servers and clusters, so the fit is with the server end of the category ## Weaknesses - `--api-key` guards only the `/v1`, `/v2`, `/inference` and `/cohere` prefixes. `/invocations`, `/pooling`, `/classify`, `/score`, `/rerank`, `/pause` and `/update_weights` answer without it - No key by default, the server binds every interface when `--host` is unset, and CORS allows any origin - At least 81 GitHub security advisories in 12 months, two critical, most of them remote crashes or resource exhaustion - Pre-1.0 (0.31.0), with breaking changes in each fortnightly release and compatibility kept for a limited number of minor versions - Usage statistics are sent to stats.vllm.ai by default, and no privacy policy or retention period for them was found ## What costs an agent a turn today The notes we give agents before they call it. Each one is a workaround an agent shouldn't need. - Put a reverse proxy that allowlists routes in front of the server. `--api-key` leaves `/invocations` and the control routes open - Pass `--host 127.0.0.1` for single-machine use. With no `--host` the server listens on every interface - Set `VLLM_NO_USAGE_STATS=1` or `DO_NOT_TRACK=1` before starting if nothing should be sent to stats.vllm.ai - Start with `--enable-auto-tool-choice` and the `--tool-call-parser` for the model before sending tools. Tool calling is off without them - Send `max_tokens` on every request, and read the breaking changes section of the release notes before upgrading a minor version ## When it's done Send what changed and where it's published as a dispute (https://www.anchorterminal.com/builders/#disputes, or `POST https://www.anchorterminal.com/api/v1/contact` with `"kind": "dispute"`). Disputes are answered in public, and the listing is checked again by the same checklist. Paying for an audit or a listing claim changes nothing here.
What we couldn't check
- unchecked: whether a completed CI run on main passes. The head commit's checks were still running when read
- unchecked: advisories beyond the first page of 100, so the 12-month count of 81 is a floor
- unchecked: PyPI download figures and the PyPI release date, since PyPI's robots.txt closes
/pypi/. Release dates are tag dates - unchecked: when the vllm.ai domain was registered
- unchecked: the first release date
- No terms or privacy policy is published for the software, vllm.ai or stats.vllm.ai, so both provenance fields are empty and the Apache-2.0 licence stands in
- Whether the Linux Foundation's privacy policy is meant to cover the usage statistics sent to stats.vllm.ai was not established
- The category describes hardware the owner keeps, a laptop, desktop or home server. vLLM is aimed at GPU servers and clusters, so the fit is with the server end of the category
Sources 24
- repository README, licence and package metadata (shallow clone of main at b027ac8) github.com · seen 2026-10-09
- security guide, read from the repository github.com · seen 2026-10-09
- security policy github.com · seen 2026-10-09
- vulnerability management github.com · seen 2026-10-09
- published security advisories, read through the GitHub API (one page of 100) github.com · seen 2026-10-09
- advisory GHSA-94f4-hr76-p5j6 github.com · seen 2026-10-09
- front-end arguments and defaults github.com · seen 2026-10-09
- authentication middleware github.com · seen 2026-10-09
- online serving routes github.com · seen 2026-10-09
- OpenAI-compatible server page github.com · seen 2026-10-09
- usage statistics github.com · seen 2026-10-09
- usage statistics source github.com · seen 2026-10-09
- deprecation policy github.com · seen 2026-10-09
- release process github.com · seen 2026-10-09
- v0.31.0 release notes and release dates, read through the GitHub API github.com · seen 2026-10-09
- tags and tag dates (git) github.com · seen 2026-10-09
- open issues and a week of bug reports, read through the GitHub API github.com · seen 2026-10-09
- quickstart github.com · seen 2026-10-09
- Claude Code integration github.com · seen 2026-10-09
- governance github.com · seen 2026-10-09
- project home page vllm.ai · seen 2026-10-09
- llms.txt of the project site vllm.ai · seen 2026-10-09
- docs home docs.vllm.ai · seen 2026-10-09
- PyTorch Foundation project page pytorch.org · seen 2026-10-09
Probe metrics
Not measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. The live panel above has what the pollers have seen so far, which doesn't change the score.
Pricing & changes
Free Free · OSS Free under Apache-2.0, with no account, key or card. Nothing is sold by the project. You pay for your own hardware and electricity.
Recent changes
- Latest release
Follow them as a feed at /feeds/tools/vllm.xml, or this listing's score history at history.json.
Connect
Install
uv pip install vllm --torch-backend=auto
vllm serve Qwen/Qwen2.5-1.5B-Instruct # listens on port 8000
First request
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-1.5B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"}
]
}'
Claude Code
ANTHROPIC_BASE_URL=http://localhost:8000 \
ANTHROPIC_API_KEY=dummy \
ANTHROPIC_AUTH_TOKEN=dummy \
ANTHROPIC_DEFAULT_OPUS_MODEL=my-model \
ANTHROPIC_DEFAULT_SONNET_MODEL=my-model \
ANTHROPIC_DEFAULT_HAIKU_MODEL=my-model \
claude
Through letme picks today, calling later
GET https://letme.dev/vllm
letme.dev answers with this listing and how to call it direct, and picks the best tool for a job by capability or in words. Calling through letme (one key, the vendor's own price) comes later. Nothing on letme.dev is for people to look at; this page explains it.
Alternatives to vLLM
#8 of 20 in Best local AI models and assistants · All 184 local ai comparisons
LocalAI Bllama.cpp CLemonade BKoboldCpp CFoundry Local CLM Studio C
Head to head AnythingLLM vs vLLM · Docker Model Runner vs vLLM · Foundry Local vs vLLM · Core vs vLLM · GPT4All vs vLLM · Jan vs vLLM · Khoj vs vLLM · KoboldCpp vs vLLM · Lemonade vs vLLM · llama.cpp vs vLLM · LM Studio vs vLLM · LocalAI vs vLLM · MLX LM vs vLLM · Ollama vs vLLM · Open WebUI vs vLLM · screenpipe vs vLLM · TextGen vs vLLM · Underdog vs vLLM
Machine-readable
| Similar tool | Grade | Score | Shared capabilities | x402 |
|---|---|---|---|---|
| LocalAI Ettore Di Giacinto and the LocalAI team | B | 68 | inference.local inference.open-weights agent.mcp-client embed.text rerank speech.stt | no |
| llama.cpp ggml.ai (Hugging Face) | C | 60.2 | inference.local inference.open-weights embed.text rerank inference.decision agent.mcp-client | no |
| Lemonade AMD and the Lemonade community | B | 63.8 | inference.local inference.open-weights embed.text rerank speech.stt | no |
| KoboldCpp LostRuins (Concedo) | C | 60.5 | inference.local inference.open-weights agent.mcp-client embed.text speech.stt | no |
| Cloudflare Workers AI Cloudflare, Inc. | B | 68.3 | inference.open-weights embed.text rerank speech.stt | no |
| DeepInfra Deep Infra Inc. | B | 63 | inference.open-weights embed.text rerank speech.stt | no |
Machine-readable
- JSON
/api/v1/tools/vllm.json· historyhistory.json· badge/badges/vllm.svg· changes feed/feeds/tools/vllm.xml - Markdown
/tools/vllm.md· slim/tools/vllm.min.md(or sendAccept: text/markdown) - Fix list
/fixes/vllm.md·/fixes/vllm.json - From a terminal
anchor tool vllm --md(the CLI) · over MCPget_tool {"slug": "vllm"}at/mcp, no key - Directory index
/api/v1/tools.json· site index/llms.txt
Verify this listing
For the vendorIs this your product? Link to this page from your own site or README, then tell us where. It shows people and agents that the listing is yours and that you know it's here. It never changes a grade, rank or review.
-
Add the badge or a link
On a light page On a dark page <a href="https://www.anchorterminal.com/tools/vllm"><img src="https://www.anchorterminal.com/badges/vllm.svg" alt="vLLM on Anchor Terminal" height="20"></a>[](https://www.anchorterminal.com/tools/vllm)<a href="https://www.anchorterminal.com/tools/vllm">vLLM on Anchor Terminal</a>It counts on a page on vllm.ai or one of its subdomains, or the README of github.com/vllm-project/vllm.
-
Tell us where it is
We read it once now and again every week. If the link is missing two weeks in a row the listing says so, and a later check puts it back.
Agents send the same to POST /api/v1/verify as {"slug": "vllm", "url": "…"}, or call the verify_listing tool at /mcp. Ten checks an hour from one address. What we check. To announce the listing, get sharing assets for social media.


