comparison architecture

VoidLLM vs OpenRouter: Self-Hosted Proxy vs Hosted Aggregator

· 6 min read

VoidLLM and OpenRouter both show up when you search for “LLM gateway,” but they solve different problems. OpenRouter is a hosted aggregator - one API key gives you access to hundreds of models on their infrastructure. VoidLLM is a self-hosted proxy you run in your own environment with your own provider keys. Before comparing features, it helps to know which side of that line you are on.

Not direct competitors

If you want zero setup and a single bill for hundreds of models, OpenRouter is a strong choice. If you want to keep data, keys, and compliance inside your own infrastructure, that is where VoidLLM fits. This post is about the trade-offs, not about declaring a winner.

What VoidLLM brings to the table

Your infrastructure, your data path. VoidLLM runs as a single Go binary (around 25MB) in your Docker, Kubernetes, or bare-metal environment. Requests go from your application to VoidLLM to the upstream provider, and nothing routes through a third party. For teams with GDPR, EU AI Act, or data residency requirements, that architecture is often the whole reason they pick a self-hosted proxy in the first place.

Zero-knowledge by design. VoidLLM never stores, logs, or persists prompt or response content. It is not a toggle - the code to log content does not exist. Usage records contain only metadata: who, what model, how many tokens, how long. Read more in Zero-Knowledge by Architecture.

BYOK everywhere, no markup. You bring your own keys for every provider. VoidLLM proxies to OpenAI, Anthropic, Azure, Ollama, vLLM, and custom OpenAI-compatible endpoints using credentials you control. Your provider invoices come directly from the providers. VoidLLM itself is a flat license fee: Community $0, Pro $49/mo, Enterprise $149/mo - not a percentage of your token spend.

Performance. Under 500 microseconds of proxy overhead at 2000 RPS. Go plus Fiber keeps memory low and startup near-instant.

Org, team, user, and key hierarchy. Four-level RBAC with model allowlists, rate limits, and token budgets at every level. Most-restrictive-wins inheritance, so a team cap can never be loosened by a looser org default.

Load balancing and failover. Multi-deployment models with round-robin, least-latency, weighted, and priority routing, plus per-deployment circuit breakers.

MCP gateway built in. VoidLLM doubles as an MCP gateway with per-org and per-team scoping, and Code Mode for multi-tool orchestration in a WASM sandbox. This is unusual in the LLM proxy space.

Source-available. BSL 1.1 license - you can read, audit, and self-host the code. It converts to Apache 2.0 four years after each release.

Where OpenRouter is ahead

Model breadth. OpenRouter’s own docs advertise access to 300+ models through a single API, with model fallback chains so you can specify a priority list and fall back automatically if the primary is rate-limited, down, or refuses the request (source). VoidLLM supports 6 providers directly. If your goal is “try a dozen frontier and open-source models from one account,” OpenRouter covers far more ground.

Zero setup. You sign up, get an API key, and start calling models. There is no proxy to deploy, no Postgres to run, no container to monitor. For prototypes, side projects, and small teams that do not want to run infrastructure, that is a real advantage.

Credit-based billing across all providers. One invoice, one balance, dozens of providers. OpenRouter’s pay-as-you-go plan has a 5.5% platform fee on top of provider rates and explicitly states they do not mark up the underlying token prices (source). For low-volume and experimental workloads that flexibility is genuinely useful.

Access to models that are harder to get direct. Some providers are easier to reach through OpenRouter than to sign up for individually, especially open-weight and regional models hosted on partner infrastructure.

Automatic provider-level routing. OpenRouter’s default strategy prioritizes providers with no recent outages and weights by inverse-square of price for stable providers (source). You get this routing logic for free without configuring anything.

Organizations and shared billing. OpenRouter added organization support with Admin and Member roles, shared credit pools, and activity tracking across members (source). If you are already running on OpenRouter and need basic team features, they are there.

At a glance

VoidLLMOpenRouter
DeploymentSelf-hosted (Docker, K8s, bare metal)Hosted SaaS
Data pathYour infra, direct to providersThrough OpenRouter
Pricing modelFlat license feePay-as-you-go, 5.5% platform fee
BYOKDefault for every providerSupported, 5% fee after 1M free requests/month
Model reach6 providers (direct)300+ models (aggregated)
FallbackPer-deployment, circuit breakersModel and provider fallback chains
RBACOrg / team / user / key, 4 rolesOrganization with Admin / Member roles
Content loggingNever (by design)Configurable, provider-dependent
MCP gatewayBuilt in, with Code ModeNot in scope
Proxy overheadUnder 500us P50Network round-trip to OpenRouter
LicenseBSL 1.1, source-availableProprietary SaaS
Pricing$0 / $49 / $149 per monthFree tier + 5.5% on pay-as-you-go

Sources for the OpenRouter rows: pricing page, BYOK docs, provider routing, organization management.

How to think about it

The decision usually comes down to two questions.

Do you want to run infrastructure? If the answer is no - you want to ship a product and not think about proxies, upgrades, or provider signups - OpenRouter removes almost all of that friction. You pay a small platform fee and get a single pane of glass across hundreds of models.

Where does your data need to live? If your answer involves words like “our VPC,” “on-prem,” “EU region only,” “customer contract requires it,” or “our auditor will ask” - then a hosted aggregator is going to be a hard sell regardless of features. A self-hosted proxy keeps the data path inside your boundary and makes the compliance conversation much shorter. That is where VoidLLM is designed to fit.

Cost can also flip the decision for high-volume teams. A 5.5% platform fee is fair for experimentation and moderate usage. At the top of the volume curve, a flat $149/month license against direct provider billing can be meaningfully cheaper - but only once you factor in the cost of actually running the proxy yourself. For many teams, that trade-off is obvious in one direction or the other.

💡Both are OpenAI-compatible

Both VoidLLM and OpenRouter expose an OpenAI-compatible API. Pointing your application at one or the other is a base URL and API key change. If you are not sure which fits, it is cheap to try both.

They are not the same product and they are not trying to be. OpenRouter is the easiest way to reach a lot of models without running anything. VoidLLM is the easiest way to run a governed, auditable LLM proxy inside your own infrastructure. Pick the one that matches the constraint you care about most.

Related posts