Skip to content

OpenRouter vs LiteLLM

usage-based · credits · enterprise-custom

·

open-source · subscription-flat · enterprise-custom

OpenRouter wins · 1913 (11 drawn)

Agenticness — how well agents can access and operate the productAgenticness

How well agents can access and operate the product

Agent access

  1. ai-native userPoint an agent at llms.txt or agent-oriented docs

    weight 2 · round to OpenRouter
    OpenRouterfullprobed9/10

    OpenRouter serves a working llms.txt at openrouter.ai/llms.txt (HTTP 200, agent-oriented summary), plus an OpenAPI spec and MCP server that expose docs/data programmatically to agents. This directly satisfies pointing an agent at llms.txt or agent-oriented docs. Missing for 10: independent/community confirmation that agents successfully consume llms.txt in practice.

    • [probe] PROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of mode…
    • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
    • [probe] official MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md
    • [claimed-docs] The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (…
    LiteLLMfullprobed8/10

    A direct probe confirms LiteLLM serves a valid llms.txt file at https://docs.litellm.ai/llms.txt returning HTTP 200 with an agent-readable overview and links, exactly matching the story's request. Missing for 10: no independent/community corroboration of agents actually consuming this file, and the related docs-as-markdown endpoint (.md) returns 404, suggesting the agent-oriented docs surface is only partially built out.

    • [probe] PROBE llms.txt: HTTP 200 at https://docs.litellm.ai/llms.txt # https://docs.litellm.ai/ llms.txt - [LiteLLM Overview](https://docs.litellm.…
    • [probe] PROBE docs-md: HTTP 404 at https://docs.litellm.ai/docs/.md
  2. ai-native userRun the product headlessly / in CI for automation

    weight 2 · round to OpenRouter
    OpenRouterfullprobed7/10

    OpenRouter is fundamentally a headless REST API (single endpoint, OpenAI-SDK compatible, streaming, programmatic API key management) that requires no UI and can be called from any script or pipeline, making it inherently suited to CI/automation use; the keyless models endpoint and management API keys reinforce programmatic, non-interactive use. Missing for 10: no explicit CI/CD pipeline examples (e.g., GitHub Actions), no dedicated 'headless/automation' documentation section, and no independent report of someone running it in a CI pipeline.

    • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
    • [claimed-docs] You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.
    • [claimed-docs] You can also use the [OpenAI SDK](#using-the-openai-sdk) pointed at OpenRouter as a drop-in replacement.
    • [claimed-docs] The OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI…
    • [probe] PROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live …
    • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
    LiteLLMpartialprobed6/10

    LiteLLM is a Python SDK and proxy server with a documented CLI (worker processes, uvicorn/gunicorn/Granian) that can run headlessly in scripts or containers, and community evidence shows it running via Docker in unattended homelab/gateway setups. However there is no explicit CI/CD pipeline example, GitHub Actions integration, or automation-specific documentation in the evidence pack. Missing for 10: explicit CI pipeline examples, automation/scripting docs beyond CLI flags, evidence of non-interactive auth/config for CI environments.

    • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian --workers).
    • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian `--workers`).
    • [probe] official CLI documented at https://docs.litellm.ai/docs/proxy/cli
    • [community] A user described running LiteLLM as a proxy in their homelab via the litellm/litellm docker image for local LLM gateway management, noting t…
    • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
  3. ai-native userPlug MCP servers into this product so it can use their tools

    weight 3 · round to LiteLLM
    OpenRouternone0/10

    Evidence only shows OpenRouter publishing its own MCP server so external AI tools/editors can pull OpenRouter data (docs-14, docs-26, docs-34, probe-3) — this is OpenRouter acting as an MCP server for other clients, not OpenRouter itself consuming/plugging in external MCP servers to gain their tools. There is no evidence that OpenRouter's API or platform lets a user attach third-party MCP servers so OpenRouter-routed models can call their tools; the standardized tool-calling docs (docs-5) refer to generic function-calling, not MCP integration specifically.

    • [claimed-docs] The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (…
    • [claimed-docs] The **OpenRouter MCP server** plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter da…
    • [claimed-docs] Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages…
    • [probe] official MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md
    • [claimed-docs] OpenRouter standardizes the tool calling interface across models and providers, making it easy to integrate external tools with any supporte…
    LiteLLMfullclaimed8/10

    LiteLLM Proxy has a documented MCP Gateway feature letting users add MCP servers via the UI and use a fixed endpoint to expose their tools, controllable by key/team — directly matching the story. missing for 10: independent/hands-on corroboration of MCP tool usage beyond first-party docs, and detail on tool-calling behavior once connected.

    • [claimed-docs] LiteLLM Proxy provides an MCP Gateway that allows you to use a fixed endpoint for all MCP tools and control MCP access by Key, Team.
    • [claimed-docs] On the LiteLLM UI, Navigate to "MCP Servers" and click "Add New MCP Server".
  4. ai-native userConnect an agent via an official MCP server

    weight 3 · round to OpenRouter
    OpenRouterfullprobed8/10

    OpenRouter publishes an official MCP server that lets AI assistants/agents connect and pull live OpenRouter data (models, prices, credits, rankings, docs) directly from within the editor, confirmed both in docs and via a live probe of the documentation page. Missing for 10: independent/hands-on community validation of the MCP server's real-world reliability beyond first-party docs.

    • [claimed-docs] The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (…
    • [claimed-docs] The **OpenRouter MCP server** plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter da…
    • [claimed-docs] Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages…
    • [probe] official MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md
    LiteLLMfullclaimed7/10

    LiteLLM Proxy ships an official MCP Gateway feature exposing a fixed endpoint for all configured MCP tools, with access controlled by Key/Team, and a UI flow to add MCP servers — this is exactly the 'connect an agent via an official MCP server' capability for a gateway product. Missing for 10: independent/hands-on confirmation that external agents (e.g. Claude, Cursor) successfully connect via this gateway, and deeper documentation of the MCP protocol compliance/auth flow beyond the brief doc mentions.

    • [claimed-docs] LiteLLM Proxy provides an MCP Gateway that allows you to use a fixed endpoint for all MCP tools and control MCP access by Key, Team.
    • [claimed-docs] On the LiteLLM UI, Navigate to "MCP Servers" and click "Add New MCP Server".
  5. ai-native userUse an official CLI

    weight 2 · round to LiteLLM
    OpenRouternone0/10

    OpenRouter is an API/model-routing platform for which an official CLI would be a plausible ecosystem tool, but the evidence pack contains no mention of any official OpenRouter CLI — only SDK compatibility, REST API, MCP server, and web UI are documented.

      LiteLLMpartialprobed6/10

      LiteLLM ships an official CLI for its proxy (litellm docs-proxy-cli, litellm-probe-4) covering server startup and worker config, but the docs shown focus narrowly on process/worker management rather than a broad AI-native workflow CLI (e.g., chat, model testing, key/budget management from CLI). missing for 10: evidence of CLI commands beyond process startup (e.g., testing prompts, managing virtual keys/budgets, MCP servers via CLI), independent/hands-on confirmation of CLI usability.

      • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian --workers).
      • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian `--workers`).
      • [probe] official CLI documented at https://docs.litellm.ai/docs/proxy/cli
    • ai-native userDrive the product through a documented public API

      weight 3 · round to OpenRouter
      OpenRouterfullprobed10/10

      OpenRouter is fundamentally an API product: extensive first-party docs cover the unified chat completions endpoint, streaming, tool calling, model routing/fallbacks, key management, and an OpenAPI spec plus a live, keyless /api/v1/models endpoint confirm a documented, programmatically accessible public API. Community evidence corroborates real-world programmatic use (switching models, key minting, billing caps) reinforcing that it is driven via API in production.

      • [claimed-docs] OpenRouter gives you access to hundreds of AI models through a single API endpoint.
      • [claimed-docs] The OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI…
      • [claimed-docs] OpenRouter standardizes the tool calling interface across models and providers, making it easy to integrate external tools with any supporte…
      • [claimed-docs] Browse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.
      • [probe] PROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of mode…
      • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
      • [probe] PROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live …
      • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
      LiteLLMfullprobed7/10

      LiteLLM's core interface — the completion() function and the OpenAI-compatible proxy REST API — is extensively documented as a public, drop-in API that AI-native users can call directly, corroborated by community Show HN discussion confirming streaming/function-calling parity with the OpenAI SDK. Missing for 10: a discoverable machine-readable OpenAPI/swagger spec (probe found only 404s) and independent hands-on confirmation of API stability/versioning.

      • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
      • [claimed-docs] Every response follows the OpenAI Chat Completions format, regardless of provider.
      • [github] Drop-in OpenAI compatibility — swap providers without rewriting your code
      • [claimed-docs] Call any provider using the same `completion()` interface, with no API to re-learn for each one
      • [claimed-docs] Consistent output format regardless of which provider or model you use
      • [community] LiteLLM maintainer confirmed proxy supports streaming and function-calling in the same way as the openai-python SDK, and added Ollama integr…
      • [probe] PROBE openapi: all candidate paths 404 (https://docs.litellm.ai/openapi.json, https://docs.litellm.ai/swagger.json, https://docs.litellm.ai/…
    • ai-native userIssue scoped/least-privilege API credentials for an agent

      weight 2 · round to LiteLLM
      OpenRouterpartialcommunity7/10

      OpenRouter offers a documented Management API for creating/rotating API keys, workspace spend budgets, and per-key limits/expiry, which supports issuing distinct, capped credentials for agents (openrouter-docs-8, openrouter-docs-10, openrouter-comm-12, openrouter-comm-11). However, there's no explicit documentation of fine-grained scoping (e.g., restricting a key to specific models, tools, or actions) beyond spend caps, so 'least-privilege' is only partially realized. Missing for 10: explicit per-key model/tool/action scoping, granular permission controls beyond spend limits, and independent hands-on verification of the key-management API's robustness.

      • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
      • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
      • [community] They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have ha…
      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
      LiteLLMfullcommunity8/10

      LiteLLM's proxy virtual keys let admins scope credentials by model access, budget, team, and rate limits (rpm_limit), directly enabling least-privilege API keys for agents. This is well documented across multiple first-party docs (virtual_keys, users, cost_tracking) showing budgets, per-key model restrictions, and team-based limits. Missing for 10: independent/hands-on verification of the scoping granularity in practice, and one community comment (litellm-comm-3) noted vague 'issues with creating tokens for other users' suggesting rough edges.

      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
      • [claimed-docs] Personal budgets: Create virtual keys without team_id for individual spending limits
      • [claimed-docs] Apply a budget across all calls on the proxy... budget_duration: 30d # (str) frequency of reset
      • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99
      • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
      • [community] 'Does anyone know a good alternate project... LiteLLM has been getting worse and trying to get me to upgrade to a paid version. I also had i…
    • ai-native userBuild against official SDKs

      weight 2 · round to LiteLLM
      OpenRouterpartialprobed5/10

      OpenRouter documents an OpenAI-compatible API and explicitly recommends using the OpenAI SDK as a drop-in replacement, plus offers an OpenAPI spec and request builder for generating client code, which supports building against it programmatically. However, there is no evidence of dedicated first-party OpenRouter SDK packages (e.g., official Python/Node/Go libraries) beyond OpenAI SDK compatibility. Missing for 10: dedicated official multi-language SDKs, independent developer corroboration of SDK usage (only OpenAI-SDK compatibility and generic API docs are cited).

      • [claimed-docs] You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.
      • [claimed-docs] You can also use the [OpenAI SDK](#using-the-openai-sdk) pointed at OpenRouter as a drop-in replacement.
      • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
      • [claimed-docs] You can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.
      LiteLLMfullcommunity8/10

      LiteLLM ships an official Python SDK (the `completion()` interface) that mirrors the OpenAI SDK format across 100+ providers, letting AI-native developers build without learning per-provider APIs; this is corroborated by community Show HN feedback praising it for standardizing APIs and confirming SDK parity for streaming/function-calling. Missing for 10: evidence of official SDKs in other languages (e.g., JS/TS) and independent benchmarking of SDK completeness beyond community praise.

      • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
      • [claimed-docs] Every response follows the OpenAI Chat Completions format, regardless of provider.
      • [github] Drop-in OpenAI compatibility — swap providers without rewriting your code
      • [claimed-docs] Call any provider using the same `completion()` interface, with no API to re-learn for each one
      • [claimed-docs] Consistent output format regardless of which provider or model you use
      • [community] LiteLLM maintainer confirmed proxy supports streaming and function-calling in the same way as the openai-python SDK, and added Ollama integr…
      • [community] Show HN launch of the original LiteLLM library; a user praised it: 'This is amazing. Really needed something like this to standardize all my…
    • ai-native userSubscribe to events via webhooks

      weight 2 · round drawn
      OpenRouternone0/10

      No evidence in the pack mentions webhooks or event subscription mechanisms of any kind for OpenRouter; the documented features (routing, caching, key management, MCP server) do not include webhook support.

        LiteLLMnone0/10

        No evidence in the pack mentions webhooks or event subscription mechanisms; LiteLLM's documented features cover logging integrations, cost tracking, and MCP gateway, but nothing about outbound webhook events for subscribers.

        Api quality

        1. ai-native userExplore an interactive API reference with runnable examples

          weight 2 · round to OpenRouter
          OpenRouterfullprobed8/10

          OpenRouter's docs explicitly mention an interactive Request Builder for generating API requests in any language, plus a live OpenAPI spec is served and confirmed by probe, and the docs site is extensively organized with runnable-style examples across guides. Missing for 10: X, Y — no independent/hands-on account of actually running the interactive Request Builder or evidence of embedded runnable code sandboxes beyond the Request Builder claim.

          • [claimed-docs] You can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.
          • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
          • [claimed-docs] Browse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.
          LiteLLMnone0/10

          The evidence pack shows explicit probe failures for an OpenAPI/Swagger spec (litellm-probe-3) and no documented interactive API reference or runnable examples in the docs; only static markdown-style docs and code snippets are cited (litellm-docs-1/2/16/17). Since LiteLLM's proxy is an API gateway, this axis clearly applies, but there's no evidence of an interactive/try-it-out API reference.

          • [probe] PROBE openapi: all candidate paths 404 (https://docs.litellm.ai/openapi.json, https://docs.litellm.ai/swagger.json, https://docs.litellm.ai/…
          • [probe] PROBE docs-md: HTTP 404 at https://docs.litellm.ai/docs/.md
          • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
          • [claimed-docs] Call any provider using the same `completion()` interface, with no API to re-learn for each one
        2. ai-native userDownload a machine-readable API spec (OpenAPI or equivalent)

          weight 2 · round to OpenRouter
          OpenRouterfullprobed9/10

          A probe confirms https://openrouter.ai/openapi.json returns HTTP 200 with an actual "openapi" key, giving a downloadable machine-readable OpenAPI spec, and docs also mention an interactive Request Builder and llms.txt for AI-native consumption. missing for 10: independent/community confirmation that the spec is actively used or kept in sync with the API by third-party developers.

          • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
          • [probe] PROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of mode…
          • [claimed-docs] You can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.
          LiteLLMnone0/10

          The evidence pack includes explicit probes for OpenAPI/swagger endpoints on LiteLLM's docs site, all returning 404, and no other citation shows a downloadable OpenAPI spec (e.g., from the proxy's FastAPI docs). Since LiteLLM's proxy is a gateway with an admin UI and CLI, this axis plausibly applies, but no evidence confirms a machine-readable spec is available.

          • [probe] PROBE openapi: all candidate paths 404 (https://docs.litellm.ai/openapi.json, https://docs.litellm.ai/swagger.json, https://docs.litellm.ai/…
          • [probe] PROBE docs-md: HTTP 404 at https://docs.litellm.ai/docs/.md
        3. ai-native userTest against a sandbox environment without touching production data

          weight 1 · round drawn
          OpenRouternone0/10

          OpenRouter's evidence describes production routing, billing, BYOK, and caching features but nothing about a sandbox/test environment isolated from production data or billing. The keyless models endpoint (openrouter-probe-4) only exposes a public catalog, not an isolated test mode for requests. No documentation of test/staging keys, sandbox mode, or non-production data isolation exists in the pack.

            LiteLLMnone0/10

            No evidence in the pack of a dedicated sandbox/test mode, mock-response capability, or staging environment for validating integrations without touching production data — the docs cover routing, budgets, virtual keys, logging, and reliability, but nothing about isolated test environments. missing for 10: sandbox/test mode, mock LLM responses, staging deployment guidance, docs mentioning safe non-production testing.

            • ai-native userRely on versioned APIs with a documented deprecation policy

              weight 2 · round drawn
              OpenRouternone0/10

              The evidence pack covers routing, fallbacks, caching, BYOK, key management, and privacy settings, but nowhere documents API versioning (e.g., v1/v2 endpoints) or a formal deprecation policy/timeline for endpoints or models. The 'latest alias' for models is about model freshness, not API version stability guarantees.

                LiteLLMnone0/10

                No evidence of API versioning scheme or a documented deprecation policy anywhere in docs; OpenAPI/spec discovery probes returned 404s, suggesting no formal versioned API contract is published.

                • [probe] PROBE openapi: all candidate paths 404 (https://docs.litellm.ai/openapi.json, https://docs.litellm.ai/swagger.json, https://docs.litellm.ai/…
                • [probe] PROBE docs-md: HTTP 404 at https://docs.litellm.ai/docs/.md

              Automation depth — how much of the product can run unattendedAutomation depth

              How much of the product can run unattended

              1. ai-native userPerform bulk operations across many items at once

                weight 2 · round drawn
                OpenRouternone0/10

                The evidence pack shows OpenRouter provides a single-request API, model routing/fallbacks, and programmatic key management, but there is no documentation of a batch/bulk inference endpoint or any mechanism to submit many items/prompts in one bulk operation. missing for 10: batch API or bulk job submission endpoint, evidence of processing many items in a single call, bulk data/export operations.

                  LiteLLMnone0/10

                  The evidence pack describes LiteLLM's unified completion interface, routing, fallbacks, cost tracking, and virtual keys, but contains no mention of batch/bulk operations (e.g., batch completions across many prompts, bulk key/user management, or bulk import/export) that would let a user act on many items at once. Since LiteLLM manages many models, keys, and users, this axis is plausible for the product, but no supporting evidence exists.

                  • ai-native userDefine rules that trigger actions automatically on events

                    weight 3 · round to LiteLLM
                    OpenRouternone0/10

                    OpenRouter is an LLM routing/API gateway; nothing in the evidence describes user-defined event-driven rules or triggers (e.g., webhooks, if-this-then-that automations) that fire actions automatically. Model fallback and provider routing are static request-time configs, not event-triggered automation rules.

                      LiteLLMpartialclaimed5/10

                      LiteLLM ships several built-in event-triggered automations (automatic fallback to another model/provider on call failure or content-policy violation, budget resets on a schedule, rate limits per key/team) but these are fixed, pre-defined behaviors rather than a general user-definable rule/trigger-action engine (e.g. no webhook/if-this-then-that automation builder is evidenced). Missing for 10: a general-purpose custom rule/condition-action automation system, evidence of user-defined triggers beyond fallback/budget/rate-limit, and any webhook or external-action firing mechanism.

                      • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                      • [claimed-docs] content_policy_fallbacks: For litellm.ContentPolicyViolationError - LiteLLM maps content policy violation errors across providers
                      • [claimed-docs] so a failing model or provider automatically fails over to a healthy backup
                      • [claimed-docs] The request to `model="zephyr-beta"` will fail... litellm proxy will loop through all the model_groups specified in `fallbacks=["gpt-3.5-tur…
                      • [claimed-docs] Apply a budget across all calls on the proxy... budget_duration: 30d # (str) frequency of reset
                      • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99

                    Caching performance — stories about caching performance in this arenaCaching performance

                    Stories about caching performance in this arena

                    Caching

                    1. developerCache responses at the gateway to cut cost and latency on repeated requests

                      weight 2 · round to LiteLLM
                      OpenRouterfullclaimed7/10

                      OpenRouter's docs explicitly describe gateway-level response caching that returns cached results with zero billable usage (cutting cost) and near-instant latency, plus provider sticky routing specifically designed to maximize cache hit rates on subsequent requests. This directly matches the story's ask for gateway-side caching to reduce cost/latency on repeated calls. Missing for 10: independent or hands-on community confirmation that caching actually reduces cost/latency in practice, and more detail on cache TTL/configurability beyond the sticky-routing mechanism.

                      • [claimed-docs] When a cached response is available, OpenRouter returns it immediately from cache with no billing (all billable usage counters are reported …
                      • [claimed-docs] When a cached response is available, OpenRouter returns it immediately from cache with no billing (all billable usage counters are reported …
                      • [claimed-docs] OpenRouter uses provider sticky routing to route your subsequent requests to the same provider endpoint after a cached request.
                      • [claimed-docs] OpenRouter uses **provider sticky routing** to route your subsequent requests to the same provider endpoint after a cached request.
                      • [claimed-docs] To maximize cache hit rates, OpenRouter uses provider sticky routing to route your subsequent requests to the same provider endpoint after a…
                      LiteLLMfullclaimed8/10

                      LiteLLM proxy has a documented caching system that explicitly stores and reuses LLM responses to save costs and reduce latency, directly matching the story. Missing for 10: independent/hands-on benchmarks quantifying latency/cost savings, and detail on cache backend configuration options in the evidence pack.

                      • [claimed-docs] LiteLLM's caching system stores and reuses LLM responses to save costs and reduce latency.

                    Latency

                    1. platform engineerRun traffic through gateway infrastructure that adds minimal latency overhead to provider calls

                      weight 2 · round to OpenRouter
                      OpenRouterpartialcommunity5/10

                      OpenRouter's docs describe latency-reducing features (response caching bypasses billing and reduces latency, sticky routing to maximize cache hits, load-balanced provider selection, streaming support) that imply a gateway designed for low overhead, but there is no explicit benchmark or first-party claim quantifying the gateway's own latency overhead versus direct provider calls. Community feedback is mixed—some praise ease of switching models and reliability (comm-2), while others report unexplained inconsistency and debugging difficulty (comm-8)—but none of this directly measures gateway latency overhead. Missing for 10: quantified latency-overhead benchmarks (vendor or independent), explicit performance comparison vs. direct provider calls, and hands-on latency testing evidence.

                      • [claimed-docs] When a cached response is available, OpenRouter returns it immediately from cache with no billing (all billable usage counters are reported …
                      • [claimed-docs] OpenRouter uses provider sticky routing to route your subsequent requests to the same provider endpoint after a cached request.
                      • [claimed-docs] OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers t…
                      • [claimed-docs] The OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI…
                      • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                      • [community] I had consistent problems (5 months back) with OpenRouter and other providers. And very hard to debug. I used the provider directly (Google)…

                      LiteLLM docs describe features that reduce or mitigate latency (response caching, configurable worker processes for uvicorn/gunicorn/Granian) and fast failover, but there is no explicit benchmark or vendor claim quantifying the proxy's own added latency overhead versus direct provider calls. Community evidence includes a report of the proxy being 'incredible flaky and causing outages,' which is a reliability complaint rather than a direct latency measurement, so it doesn't rise to a concrete dispute of a latency claim. missing for 10: explicit latency-overhead benchmarks/numbers, independent performance testing of proxy overhead, direct vendor claim about added latency being minimal.

                      • [claimed-docs] LiteLLM's caching system stores and reuses LLM responses to save costs and reduce latency.
                      • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian --workers).
                      • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian `--workers`).
                      • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                      • [community] 'Now I feel lucky that I switched to just using OpenRouter a year ago because LiteLLM was incredible flaky and kept causing outages.'

                    Cost controls — stories about cost controls in this arenaCost controls

                    Stories about cost controls in this arena

                    Agent guardrails

                    1. ai-native userGive an autonomous agent its own key with budget and rate guardrails so it cannot run away on spend

                      weight 2 · round drawn
                      OpenRouterfullcommunity8/10

                      OpenRouter supports programmatic API key management (creation, per-key limits/expiry) and workspace-level budget caps (daily/weekly/monthly/lifetime) that auto-block requests once reached, directly enabling an agent to be given its own scoped key with hard spend guardrails; community confirms billing caps and per-key limits are a valued differentiator. missing for 10: explicit per-key rate-limit (requests/sec) controls beyond spend caps, and independent hands-on verification that runaway agent spend is actually blocked in practice.

                      • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                      • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
                      • [community] They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have ha…
                      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                      LiteLLMfullclaimed8/10

                      LiteLLM's virtual key system explicitly supports per-key budgets (budget_duration, max_budget), rate limits (rpm_limit), and personal/team-scoped keys, directly enabling an autonomous agent to get its own key with spend and rate guardrails. Docs also show spend tracking by key/user/tag to monitor and enforce these limits. Missing for 10: independent/hands-on verification that budget caps hard-stop overspend in practice, and more detail on rate-limit enforcement behavior under load.

                      • [claimed-docs] Personal budgets: Create virtual keys without team_id for individual spending limits
                      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                      • [claimed-docs] Apply a budget across all calls on the proxy... budget_duration: 30d # (str) frequency of reset
                      • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99
                      • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
                      • [claimed-docs] pass tags to track spend by tags
                      • [claimed-docs] Put your full AI stack behind one key. See who is driving spend, cap it before it runs, and send each request to the model that should handl…

                    Budgets

                    1. platform engineerSet hard budgets and spend limits per key, team, or user

                      weight 3 · round to LiteLLM
                      OpenRouterpartialcommunity6/10

                      OpenRouter's docs clearly show hard, auto-enforced 'workspace budgets' with configurable daily/weekly/monthly/lifetime dollar caps that block requests once reached (openrouter-docs-10), covering team-level budgets. Per-key limits are only supported by an informal community mention of 'expiry/limits per key' (openrouter-comm-12, openrouter-comm-11) rather than first-party documentation, and per-user budget controls are not evidenced at all. Missing for 10: official docs confirming per-key hard spend limits, explicit per-user budget/quota controls, and independent verification of enforcement.

                      • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
                      • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                      • [community] They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have ha…
                      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                      LiteLLMfullclaimed9/10

                      Docs explicitly cover per-key, per-team, and per-user budgets/spend tracking (virtual keys with cost tracking, personal budgets, team rpm_limit, budget_duration for resets, tag-based spend tracking) plus marketing copy on capping spend before it runs. Missing for 10: independent hands-on verification that hard limits actually block calls once exceeded (only docs, no community confirmation of enforcement behavior).

                      • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                      • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
                      • [claimed-docs] Personal budgets: Create virtual keys without team_id for individual spending limits
                      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                      • [claimed-docs] Put your full AI stack behind one key. See who is driving spend, cap it before it runs, and send each request to the model that should handl…
                      • [claimed-docs] pass tags to track spend by tags
                      • [claimed-docs] Apply a budget across all calls on the proxy... budget_duration: 30d # (str) frequency of reset
                      • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99

                    Spend tracking

                    1. platform engineerTrack spend per model, key, team, or user across all providers in one place

                      weight 3 · round to LiteLLM
                      OpenRouterpartialcommunity6/10

                      OpenRouter provides key management (creation, limits per key), workspace budgets with dollar caps by interval, and BYOK cost control, plus community confirmation of billing caps and per-key limits — but the evidence pack lacks explicit documentation of a unified spend dashboard broken down by model, team, or user across providers in one place. missing for 10: consolidated analytics/dashboard showing spend segmented by model, by team, and by individual user; documentation of team-level spend attribution; independent confirmation of cross-provider spend reporting granularity.

                      • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                      • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
                      • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK)... Using provider keys enables direct cont…
                      • [community] They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have ha…
                      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                      LiteLLMfullclaimed9/10

                      LiteLLM's docs directly document tracking spend per key, user, team, and by tags across 100+ providers via the proxy's cost tracking feature, plus budgets, virtual keys, and admin UI to view spend — matching the story closely. Missing for 10: independent hands-on verification of the cost dashboard's accuracy/UX and explicit per-model spend breakdown evidence beyond the general 'across 100+ LLMs' claim.

                      • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
                      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                      • [claimed-docs] pass tags to track spend by tags
                      • [claimed-docs] Apply a budget across all calls on the proxy... budget_duration: 30d # (str) frequency of reset
                      • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                      • [claimed-docs] Put your full AI stack behind one key. See who is driving spend, cap it before it runs, and send each request to the model that should handl…

                    Key management — stories about key management in this arenaKey management

                    Stories about key management in this arena

                    Byok

                    1. developerBring my own provider API keys and have the gateway use them for my traffic

                      weight 2 · round to OpenRouter
                      OpenRouterfullcommunity9/10

                      OpenRouter's docs explicitly describe BYOK (bring your own provider keys), letting developers use their own provider API keys for direct control over rate limits and costs, and this is corroborated by community testimony citing consolidated billing/key management as a core benefit. Missing for 10: independent hands-on verification specifically of BYOK traffic routing (most community evidence discusses OpenRouter credits/key management generally rather than BYOK specifically).

                      • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK)... Using provider keys enables direct cont…
                      • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK). ... Using provider keys enables direct co…
                      • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK).
                      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                      LiteLLMpartialclaimed6/10

                      LiteLLM's core design lets developers call any provider through one interface and issue virtual keys that map to underlying provider credentials, with per-key spend/model access control ('Put your full AI stack behind one key', virtual key docs) — implying BYOK usage. However, the evidence pack lacks an explicit walkthrough of adding a personal provider API key to the proxy config and having it used for a developer's own traffic, and there is no independent confirmation of this specific flow. Missing for 10: explicit BYOK config example, independent/hands-on confirmation of per-developer key routing.

                      • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
                      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                      • [claimed-docs] Put your full AI stack behind one key. See who is driving spend, cap it before it runs, and send each request to the model that should handl…
                      • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI

                    Programmatic admin

                    1. ai-native userProvision gateways, keys, and budgets programmatically through an admin API

                      weight 3 · round to OpenRouter
                      OpenRouterpartialcommunity6/10

                      OpenRouter documents a management API for provisioning and rotating API keys programmatically (openrouter-docs-8) and community users confirm the ability to mint/limit keys (openrouter-comm-12, openrouter-comm-11). Workspace budgets are documented as a feature to cap spend (openrouter-docs-10), but the evidence doesn't explicitly confirm budgets are settable via the same admin API, and there's no mention of provisioning 'gateways' as a distinct programmable resource. Missing for 10: explicit API endpoint documentation for setting/adjusting workspace budgets programmatically, and any concept of provisioning separate 'gateways' via API.

                      • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                      • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
                      • [community] They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have ha…
                      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…

                      Docs describe programmatic key/team/budget management (virtual keys, personal and team budgets, rpm_limit, team_alias via API/config) which supports the story's core claim, but no OpenAPI/swagger spec was found (probe shows 404s) and a community user reported concrete hands-on issues 'creating tokens for other users' via the proxy admin functions, directly contradicting the smoothness implied by the docs. Missing for 10: verified OpenAPI/admin-API reference, evidence of 'gateway' provisioning (multiple proxy instances) via API, and independent confirmation that key/budget creation works reliably at scale.

                      • [claimed-docs] Personal budgets: Create virtual keys without team_id for individual spending limits
                      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                      • [claimed-docs] Apply a budget across all calls on the proxy... budget_duration: 30d # (str) frequency of reset
                      • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99
                      • [probe] PROBE openapi: all candidate paths 404 (https://docs.litellm.ai/openapi.json, https://docs.litellm.ai/swagger.json, https://docs.litellm.ai/…
                      • [community] 'Does anyone know a good alternate project... LiteLLM has been getting worse and trying to get me to upgrade to a paid version. I also had i…

                    Virtual keys

                    1. platform engineerMint gateway-managed keys for teams and apps without exposing raw provider keys

                      weight 3 · round to OpenRouter
                      OpenRouterfullcommunity8/10

                      OpenRouter's docs explicitly describe programmatic key management endpoints for creating/managing/rotating API keys for apps without exposing provider keys (docs-8), backed by BYOK for provider key control (docs-9/24/32) and workspace budgets to cap spend per workspace/team (docs-10). Community corroborates ease of minting and limiting keys (comm-12, comm-11). Missing for 10: independent verification of team/app-scoped key isolation guarantees and no first-hand platform-engineer account of using the management API at scale.

                      • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                      • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK)... Using provider keys enables direct cont…
                      • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
                      • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                      • [community] They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have ha…

                      LiteLLM's proxy docs explicitly support minting scoped 'virtual keys' for teams/users/apps with budget and rate limits (litellm-docs-5, litellm-docs-6, litellm-docs-7, litellm-docs-8, litellm-docs-26), which is exactly the gateway-managed-key model that hides raw provider keys behind the proxy. However, one community report describes hands-on 'issues with creating tokens for other users' (litellm-comm-3), and there is no independent corroboration of the key-isolation guarantees or a walkthrough of the actual key-generation API beyond first-party docs. Missing for 10: independent/hands-on confirmation that key scoping reliably prevents provider-key leakage, and resolution of the reported token-creation friction.

                      • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                      • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
                      • [claimed-docs] Personal budgets: Create virtual keys without team_id for individual spending limits
                      • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                      • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99
                      • [community] 'Does anyone know a good alternate project... LiteLLM has been getting worse and trying to get me to upgrade to a paid version. I also had i…

                    Observability — seeing what the system is doing — logs, metrics, traces, alertsObservability

                    Seeing what the system is doing — logs, metrics, traces, alerts

                    Integrations

                    1. developerExport gateway logs and traces to my own observability stack

                      weight 1 · round to LiteLLM
                      OpenRouternone0/10

                      Evidence pack shows OpenRouter's API gateway features (routing, fallbacks, caching, key management, privacy settings) but contains no mention of exporting logs/traces, webhooks, log streaming, or integration with observability stacks like Datadog, OpenTelemetry, or similar. missing for 10: log/trace export mechanism, OpenTelemetry or webhook integration, documentation of any observability-stack connector.

                        LiteLLMfullclaimed8/10

                        Docs explicitly confirm proxy logging integrations to external observability stacks (Langfuse, OpenTelemetry, GCS, S3, Azure Blob), plus a unique call_id for tracing requests across systems, directly matching the story of exporting logs/traces to one's own stack. Missing for 10: independent hands-on verification of these integrations working reliably, and more detail on trace format/OpenTelemetry span structure.

                        • [claimed-docs] Log Proxy input, output, and exceptions using: Langfuse, OpenTelemetry, GCS, s3, Azure (Blob) Buckets...
                        • [claimed-docs] LiteLLM generates a unique call_id for each request. This call_id can be used to track the request across the system.
                        • [claimed-docs] LiteLLM generates a unique `call_id` for each request. This `call_id` can be used to track the request across the system.
                        • [claimed-docs] This will prevent the messages and responses from being logged to your logging provider, but request metadata - e.g. spend, will still be tr…

                      Logs

                      1. platform engineerInspect logged requests and responses with latency, token counts, and cost attached

                        weight 3 · round to LiteLLM
                        OpenRouternone0/10

                        The evidence pack covers routing, caching, BYOK, budgets, and key management, but contains no mention of a request/response log viewer, latency dashboards, or per-request token/cost breakdowns that a platform engineer could inspect. missing for 10: activity/logs dashboard documentation, per-request latency metrics, per-request token count and cost attribution evidence.

                          LiteLLMpartialclaimed6/10

                          Docs show LiteLLM logs each request with a unique call_id, tracks spend/cost by key/user/team, and integrates with Langfuse, OpenTelemetry, S3, GCS, etc. for logging proxy input/output/exceptions, all viewable via the admin UI — a reasonable basis for inspecting requests with cost attached. However, the evidence never explicitly confirms that latency or token counts are captured/displayed alongside these logs, and there's no independent/hands-on confirmation of the inspection UI itself. Missing for 10: explicit documentation of per-request latency metrics, explicit token-count logging, and independent verification of the UI/log inspection experience.

                          • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                          • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
                          • [claimed-docs] Log Proxy input, output, and exceptions using: Langfuse, OpenTelemetry, GCS, s3, Azure (Blob) Buckets...
                          • [claimed-docs] LiteLLM generates a unique call_id for each request. This call_id can be used to track the request across the system.
                          • [claimed-docs] pass tags to track spend by tags

                        Openness — open source, data portability, and self-hosting storiesOpenness

                        Open source, data portability, and self-hosting stories

                        1. ai-native userDo everything through the API that I can do in the UI

                          weight 2 · round drawn
                          OpenRouterpartialprobed6/10

                          OpenRouter's core capabilities—model routing, fallbacks, provider selection, key management, workspace budgets, privacy settings, and even the model catalog—are all documented as programmatically accessible via the API (openrouter-docs-8, 10, 12, 21, 35, openapi.json probe), suggesting strong API/UI parity for a product that is API-first. However, there's no explicit vendor claim of full UI-API parity, and dashboard-only features like rankings/analytics visualizations aren't confirmed as API-exposed. Missing for 10: explicit parity statement, evidence that UI-exclusive features (e.g., rankings, usage analytics dashboards) are also fully API-accessible, and independent confirmation from hands-on API users of complete feature parity.

                          • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                          • [claimed-docs] Workspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — d…
                          • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy. This is also available as an account-wide setting in …
                          • [claimed-docs] You can customize how your requests are routed using the `provider` object in the request body for [Chat Completions]
                          • [claimed-docs] Browse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.
                          • [probe] PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
                          • [probe] PROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live …
                          • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                          LiteLLMpartialprobed6/10

                          LiteLLM's proxy exposes virtual keys, budgets, spend tracking, MCP server management, and routing/fallback config via REST API endpoints and CLI, and the admin UI is largely a wrapper over these same proxy APIs, suggesting strong API/UI parity. However, no OpenAPI spec was found at expected locations (404s), and some UI-specific flows like adding MCP servers are only documented via UI clicks rather than confirmed equivalent API calls, and no independent confirmation exists that every UI action has a documented API equivalent. Missing for 10: a published OpenAPI/swagger spec confirming full endpoint coverage, explicit API equivalents for every UI workflow (e.g., MCP server add via API), and independent/hands-on verification that API and UI are truly at parity.

                          • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                          • [claimed-docs] Track Spend, and control model access via virtual keys for the proxy
                          • [claimed-docs] LiteLLM Proxy provides an MCP Gateway that allows you to use a fixed endpoint for all MCP tools and control MCP access by Key, Team.
                          • [claimed-docs] On the LiteLLM UI, Navigate to "MCP Servers" and click "Add New MCP Server".
                          • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian --workers).
                          • [probe] PROBE openapi: all candidate paths 404 (https://docs.litellm.ai/openapi.json, https://docs.litellm.ai/swagger.json, https://docs.litellm.ai/…
                          • [probe] official CLI documented at https://docs.litellm.ai/docs/proxy/cli
                        2. ai-native userExport all of my data in open formats and leave

                          weight 3 · round drawn
                          OpenRouternone0/10

                          The evidence pack covers API routing, model access, MCP server, and billing features, but contains no mention of any user data export capability (usage logs, account data, chat history) in open formats or account portability/closure process — the axis is applicable to a SaaS platform storing usage/billing data, but no supporting evidence exists.

                            LiteLLMnone0/10

                            LiteLLM stores spend, logs, virtual-key and config data (self-hosted proxy with admin UI), so an explicit 'export all data in open formats' capability is a fair ask, but no evidence pack item documents any export/download feature, open data format, or data-portability tooling — only logging integrations to third-party sinks (Langfuse, S3, GCS) are mentioned, which is not the same as user-initiated full data export. missing for 10: documented export/download feature, open-format data export (CSV/JSON) of spend/logs/keys, any data-portability or 'leave the platform' guidance.

                            • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                            • [claimed-docs] Track spend for keys, users, and teams across 100+ LLMs.
                            • [claimed-docs] Log Proxy input, output, and exceptions using: Langfuse, OpenTelemetry, GCS, s3, Azure (Blob) Buckets...
                          • ai-native userRead the product's source under an open license

                            weight 2 · round to LiteLLM
                            OpenRouternone0/10

                            No evidence that OpenRouter's own source code (the API service, routing platform, or website) is published under an open license; evidence pack only covers API docs, features, and OpenAPI spec, not source availability. missing for 10: any repository link, open-source license file, or statement that OpenRouter's codebase is publicly available.

                              The product's source is publicly hosted on GitHub (BerriAI/litellm), confirmed by community references to 'public repos' being vandalized, showing the codebase is openly readable. However, the evidence pack never states or cites an actual license (e.g., MIT/Apache) for the repository, so the 'open license' claim itself is unconfirmed. Missing for 10: explicit license documentation/citation, first-party statement of licensing terms.

                              • [github] Drop-in OpenAI compatibility — swap providers without rewriting your code
                              • [community] The GitHub account of LiteLLM's Founder/CTO (krrishdholakia) appears to have been fully compromised, with public repos vandalized to say 'te…

                            Privacy posture — data-handling and privacy storiesPrivacy posture

                            Data-handling and privacy stories

                            1. ai-native userChoose where my data is stored (region/residency)

                              weight 2 · round to OpenRouter
                              OpenRouterpartialcommunity6/10

                              OpenRouter documents EU/US in-region routing for enterprise customers and per-request/account-wide data-policy restrictions, giving users some control over where data is processed, but this is gated to enterprise accounts rather than available to all AI-native users, and community comments note there's no true ZDR/data-sovereignty guarantee in practice. missing for 10: general-tier (non-enterprise) region selection, independent verification that in-region routing works as claimed, and clarity on residency guarantees beyond enterprise contracts.

                              • [claimed-docs] For enterprise customers, OpenRouter supports in-region routing in the EU and US. When enabled for your account, your prompts and completion…
                              • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy. This is also available as an account-wide setting in …
                              • [claimed-docs] On your account settings page, you can set whether you would like to allow routing to providers that may train on your data (according to th…
                              • [community] OpenRouter doesn't expose all the LLM sampling parameters/research that llamacpp, vllm, sglang expose (so no high temperature/highly diverse…
                              LiteLLMnone0/10

                              LiteLLM is self-hostable (which lets users control physical data location by choosing their own deployment region), but no evidence pack item documents any explicit data residency/region-selection feature, region-pinning configuration, or compliance-region controls offered by the product itself.

                              • ai-native userPrevent my data from being used to train AI models

                                weight 3 · round to OpenRouter
                                OpenRouterpartialcommunity6/10

                                OpenRouter lets users restrict requests/account-wide to providers with certain data policies and opt out of routing to providers that may train on data, plus EU/US in-region processing for enterprise, which directly supports preventing training-data use; however community evidence notes there is 'no ZDR' (zero data retention) and 'no true guarantees of ZDR/privacy/data sovereignty,' indicating limits to how absolute this protection is. missing for 10: independent verification that opt-out settings are consistently honored by all providers, clarity on default behavior, and resolution of the ZDR gap raised by users.

                                • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy. This is also available as an account-wide setting in …
                                • [claimed-docs] On your account settings page, you can set whether you would like to allow routing to providers that may train on your data (according to th…
                                • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy.
                                • [claimed-docs] For enterprise customers, OpenRouter supports in-region routing in the EU and US. When enabled for your account, your prompts and completion…
                                • [community] No ZDR. No dice.
                                • [community] OpenRouter doesn't expose all the LLM sampling parameters/research that llamacpp, vllm, sglang expose (so no high temperature/highly diverse…
                                LiteLLMnone0/10

                                The evidence shows LiteLLM can disable logging of prompts/responses to its own logging providers (litellm-docs-12), but nothing indicates it offers a mechanism to opt out of model-training use by the underlying LLM providers (e.g., passing zero-retention/no-train flags to OpenAI/Anthropic/etc.). As a gateway, this is a plausible capability, but no evidence supports it.

                                • [claimed-docs] This will prevent the messages and responses from being logged to your logging provider, but request metadata - e.g. spend, will still be tr…
                              • ai-native userControl data retention and deletion

                                weight 2 · round drawn
                                OpenRouterpartialcommunity5/10

                                OpenRouter lets users restrict routing to providers with certain data policies (e.g. no-training, zero-retention) both per-request and account-wide, and offers EU/US in-region processing for enterprise, which are real retention/data-policy controls. However there is no documented mechanism for deleting already-retained data or setting explicit retention periods, and community comments (e.g. 'No ZDR. No dice') indicate the zero-data-retention toggle has real-world limitations/gaps rather than full guaranteed retention control. Missing for 10: explicit data deletion/erasure endpoint, documented retention-period settings, and independent confirmation that ZDR/data-policy filters reliably cover all providers.

                                • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy. This is also available as an account-wide setting in …
                                • [claimed-docs] For enterprise customers, OpenRouter supports in-region routing in the EU and US. When enabled for your account, your prompts and completion…
                                • [claimed-docs] On your account settings page, you can set whether you would like to allow routing to providers that may train on your data (according to th…
                                • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy.
                                • [community] No ZDR. No dice.
                                • [community] Since it's only discounted on the standard 'OpenAI,' non-ZDR route (old pricing on Azure), a lot of users won't see this benefit since many …
                                • [community] OpenRouter doesn't expose all the LLM sampling parameters/research that llamacpp, vllm, sglang expose (so no high temperature/highly diverse…
                                LiteLLMpartialclaimed5/10

                                LiteLLM lets admins disable logging of request/response content to reduce data retention while still tracking metadata (litellm-docs-12), and being self-hosted gives users infrastructure-level control over where data lives. However, there is no documented explicit data-deletion API, retention-period settings, or data lifecycle/export controls in the evidence pack. Missing for 10: explicit deletion/purge API, configurable retention windows, documented data lifecycle policy, independent confirmation these logging controls work as described.

                                • [claimed-docs] This will prevent the messages and responses from being logged to your logging provider, but request metadata - e.g. spend, will still be tr…
                                • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                              • ai-native userOpt out of telemetry and usage tracking

                                weight 2 · round to OpenRouter
                                OpenRouterpartialcommunity4/10

                                OpenRouter documents privacy controls—restricting requests to providers with certain data policies, disallowing providers that may train on your data, and EU/US in-region routing for enterprise—which give users some control over how their prompt data is handled downstream, but this is about provider-side data handling, not an explicit opt-out of OpenRouter's own telemetry/usage tracking. Community evidence directly notes 'No ZDR. No dice' and 'no true guarantees of ZDR/privacy/data sovereignty,' indicating real limits on data-handling assurances. Missing for 10: an explicit telemetry/usage-tracking opt-out toggle for OpenRouter's own platform analytics, and independent confirmation that opting out actually stops tracking.

                                • [claimed-docs] You can restrict individual requests to only use providers with a certain data policy. This is also available as an account-wide setting in …
                                • [claimed-docs] On your account settings page, you can set whether you would like to allow routing to providers that may train on your data (according to th…
                                • [claimed-docs] For enterprise customers, OpenRouter supports in-region routing in the EU and US. When enabled for your account, your prompts and completion…
                                • [community] No ZDR. No dice.
                                • [community] OpenRouter doesn't expose all the LLM sampling parameters/research that llamacpp, vllm, sglang expose (so no high temperature/highly diverse…
                                LiteLLMnone0/10

                                The evidence covers logging integrations (Langfuse, OTel, S3, etc.) and a way to disable message/response logging to those *external* logging providers (litellm-docs-12), but nothing in the pack addresses opting out of LiteLLM's own product telemetry/usage tracking sent back to the vendor. As a self-hosted gateway this axis plausibly applies, but there is no documented telemetry opt-out flag or setting in the evidence pack. Missing for 10: any mention of a telemetry/usage-tracking toggle (e.g., an env var or config flag disabling anonymized usage reporting to the vendor), independent confirmation that no phone-home occurs.

                                • [claimed-docs] This will prevent the messages and responses from being logged to your logging provider, but request metadata - e.g. spend, will still be tr…
                                • [claimed-docs] Log Proxy input, output, and exceptions using: Langfuse, OpenTelemetry, GCS, s3, Azure (Blob) Buckets...

                              Routing resilience — stories about routing resilience in this arenaRouting resilience

                              Stories about routing resilience in this arena

                              Fallbacks

                              1. platform engineerConfigure automatic fallback to another model or provider when one fails

                                weight 3 · round drawn
                                OpenRouterfullcommunity9/10

                                OpenRouter documents explicit model fallback via a priority-ordered `models` array that auto-retries the next model on error, plus provider-level fallback/load balancing across top providers, and community confirms this works ('They also support fallback by default so you don't have to write wrappers'). This directly matches the platform engineer's story of configuring automatic fallback across models/providers on failure. Missing for 10: independent quantitative reliability data or a documented edge-case failure of the fallback mechanism itself.

                                • [claimed-docs] Provide an array of model IDs in priority order. If the first model returns an error, OpenRouter will automatically try the next model in th…
                                • [claimed-docs] The models parameter lets you automatically try other models if the primary model's providers are down, rate-limited, or refuse to reply due…
                                • [claimed-docs] OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers t…
                                • [claimed-docs] Reliable AI models via our distributed infrastructure. Fall back to other providers when one goes down.
                                • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                LiteLLMfullcommunity9/10

                                LiteLLM's proxy reliability docs explicitly describe configuring fallbacks so a failing model/provider automatically fails over to a healthy backup, including model-group fallback chains and content-policy-specific fallback handling, corroborated by a maintainer's stated motivation for reliable model switching across providers. Missing for 10: independent hands-on validation of fallback behavior in production beyond docs/maintainer statements.

                                • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                                • [claimed-docs] so a failing model or provider automatically fails over to a healthy backup
                                • [claimed-docs] The request to `model="zephyr-beta"` will fail... litellm proxy will loop through all the model_groups specified in `fallbacks=["gpt-3.5-tur…
                                • [claimed-docs] content_policy_fallbacks: For litellm.ContentPolicyViolationError - LiteLLM maps content policy violation errors across providers
                                • [community] Show HN launch of LiteLLM Proxy Server: praised as 'super compelling' with maintainers noting motivation was avoiding messy 100-line if/else…

                              Load balancing

                              1. platform engineerLoad-balance traffic across providers, deployments, or keys by weight, latency, or cost

                                weight 2 · round to OpenRouter
                                OpenRouterfullcommunity7/10

                                Docs show default load balancing across top providers, customizable provider routing (sort by price/throughput), and ordered model fallbacks, plus BYOK for provider-key control, corroborated by community mentions of built-in fallback behavior. Missing for 10: explicit documentation of weighted routing across specific API keys and independent benchmarks validating latency/cost-based routing performance in practice.

                                • [claimed-docs] OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers t…
                                • [claimed-docs] Provide an array of model IDs in priority order. If the first model returns an error, OpenRouter will automatically try the next model in th…
                                • [claimed-docs] You can customize how your requests are routed using the `provider` object in the request body for [Chat Completions]
                                • [claimed-docs] You can customize how your requests are routed using the provider object in the request body for Chat Completions.
                                • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK)... Using provider keys enables direct cont…
                                • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                LiteLLMpartialclaimed5/10

                                Docs confirm load-balancing across multiple deployments and automatic failover/fallback to healthy backups, which covers reliability-based routing, but the evidence pack never cites explicit weight-based, latency-based, or cost-based routing strategies by name (LiteLLM's known routing options aren't documented here). missing for 10: explicit documentation of weight-based routing strategy, latency-based routing strategy, and cost-based routing strategy configuration.

                                • [claimed-docs] Load-balance across multiple deployments (e.g. Azure/OpenAI)
                                • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                                • [claimed-docs] so a failing model or provider automatically fails over to a healthy backup
                                • [claimed-docs] The request to `model="zephyr-beta"` will fail... litellm proxy will loop through all the model_groups specified in `fallbacks=["gpt-3.5-tur…
                                • [claimed-docs] content_policy_fallbacks: For litellm.ContentPolicyViolationError - LiteLLM maps content policy violation errors across providers

                              Policy routing

                              1. ai-native userMy agent can switch models mid-task by policy — cost, capability, or availability — through gateway routing rules

                                weight 3 · round to OpenRouter
                                OpenRouterfullcommunity8/10

                                OpenRouter's docs and community evidence confirm model fallback lists (priority order, automatic retry on error/rate-limit/down), provider-selection routing rules, load balancing across providers, a 'latest' alias for staying current, and an auto-routing 'meta' model that picks capability-appropriate models to control cost — directly matching policy-based mid-task model switching by cost/capability/availability. missing for 10: no first-party documentation or hands-on evidence of dynamically switching models *within* a single in-flight task/conversation (vs. per-request fallback/config), and no independent benchmark validating routing-rule reliability in production.

                                • [claimed-docs] The models parameter lets you automatically try other models if the primary model's providers are down, rate-limited, or refuse to reply due…
                                • [claimed-docs] Provide an array of model IDs in priority order. If the first model returns an error, OpenRouter will automatically try the next model in th…
                                • [claimed-docs] OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers t…
                                • [claimed-docs] You can customize how your requests are routed using the `provider` object in the request body for [Chat Completions]
                                • [claimed-docs] a latest alias that always resolves to the newest OpenAI flagship model, so your code keeps using the freshest version without redeploying
                                • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                • [community] One thing I really like about OpenRouter is their 'meta' model that automatically routes the prompt to an appropriately capable model. Saves…
                                • [claimed-docs] Reliable AI models via our distributed infrastructure. Fall back to other providers when one goes down.
                                LiteLLMfullcommunity7/10

                                LiteLLM's proxy documents concrete routing policies matching the story: load balancing across deployments, automatic fallback to a healthy backup model/provider on failure, and content-policy-specific fallbacks mapped across providers — all confirmed by community commentary on its origin as a fix for manual multi-provider if/else logic. Missing for 10: explicit cost-triggered routing (switching to cheaper model based on budget threshold) and any hands-on demonstration of live mid-task switching rather than static failover/fallback configuration.

                                • [claimed-docs] Load-balance across multiple deployments (e.g. Azure/OpenAI)
                                • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                                • [claimed-docs] so a failing model or provider automatically fails over to a healthy backup
                                • [claimed-docs] content_policy_fallbacks: For litellm.ContentPolicyViolationError - LiteLLM maps content policy violation errors across providers
                                • [claimed-docs] The request to `model="zephyr-beta"` will fail... litellm proxy will loop through all the model_groups specified in `fallbacks=["gpt-3.5-tur…
                                • [community] Show HN launch of LiteLLM Proxy Server: praised as 'super compelling' with maintainers noting motivation was avoiding messy 100-line if/else…

                              Rate limits

                              1. platform engineerSmooth provider rate limits by spreading traffic across keys and queuing or throttling requests

                                weight 2 · round to LiteLLM
                                OpenRouterpartialcommunity5/10

                                OpenRouter's default load balancing across providers and automatic model/provider fallbacks (docs-3,4,19) inherently smooths provider-side rate limits, and its key-management API (docs-8) plus BYOK (docs-9,24,32) let engineers create/distribute multiple keys with per-key limits (echoed by comm-12). But there is no explicit documentation of client-side request queuing or throttling, or of deliberately spreading traffic across multiple OpenRouter keys for load smoothing — the evidence covers provider-side resilience, not key-pool traffic shaping. Missing for 10: explicit queuing/throttling mechanism, documented multi-key load-balancing pattern, independent confirmation of rate-limit smoothing at scale.

                                • [claimed-docs] The models parameter lets you automatically try other models if the primary model's providers are down, rate-limited, or refuse to reply due…
                                • [claimed-docs] OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers t…
                                • [claimed-docs] OpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to d…
                                • [claimed-docs] OpenRouter supports both OpenRouter credits and the option to bring your own provider keys (BYOK)... Using provider keys enables direct cont…
                                • [claimed-docs] Provide an array of model IDs in priority order. If the first model returns an error, OpenRouter will automatically try the next model in th…
                                • [community] One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other provid…
                                LiteLLMfullclaimed7/10

                                LiteLLM's Router explicitly supports load-balancing across multiple deployments/keys (e.g., multiple Azure/OpenAI keys) and virtual keys carry per-key rpm_limit fields, directly enabling spreading traffic across provider keys to smooth rate limits, with retries/fallbacks for failures. Missing for 10: explicit documentation of a request queuing/throttling mechanism beyond rpm_limit and load balancing, and independent hands-on confirmation that this smooths real provider rate-limit errors under load.

                                • [claimed-docs] Load-balance across multiple deployments (e.g. Azure/OpenAI)
                                • [claimed-docs] "team_alias": "my-new-team_4", ... "rpm_limit": 99
                                • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                                • [claimed-docs] so a failing model or provider automatically fails over to a healthy backup
                                • [claimed-docs] The request to `model="zephyr-beta"` will fail... litellm proxy will loop through all the model_groups specified in `fallbacks=["gpt-3.5-tur…

                              Retries

                              1. platform engineerSet automatic retry policies for transient provider errors

                                weight 2 · round to LiteLLM
                                OpenRouterpartialcommunity7/10

                                OpenRouter's model-fallbacks and provider load-balancing features automatically retry a request against alternate providers/models when the primary is down, rate-limited, or errors out, and this is corroborated by community reports of built-in fallback behavior (openrouter-docs-3, openrouter-docs-4, openrouter-docs-17, openrouter-docs-19, openrouter-comm-2). However, this is provider/model-level fallback rather than a granular, configurable retry policy (e.g., retry count, backoff intervals, specific transient-error codes) that a platform engineer might expect. Missing for 10: explicit retry-count/backoff configuration options, granular control over which transient error codes trigger retries, and independent verification of retry behavior under real outages.

                                • [claimed-docs] The models parameter lets you automatically try other models if the primary model's providers are down, rate-limited, or refuse to reply due…
                                • [claimed-docs] OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers t…
                                • [claimed-docs] Reliable AI models via our distributed infrastructure. Fall back to other providers when one goes down.
                                • [claimed-docs] Provide an array of model IDs in priority order. If the first model returns an error, OpenRouter will automatically try the next model in th…
                                • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                LiteLLMfullclaimed7/10

                                Docs explicitly describe a `num_retries` setting on the proxy, after which LiteLLM falls back to another model/group, directly supporting configurable retry policies for transient failures (docs-4, docs-21, docs-22). Missing for 10: detailed backoff/jitter configuration, granular retry-per-error-type mapping (only content policy fallback is separately documented), and independent hands-on verification of retry behavior under real transient provider errors.

                                • [claimed-docs] If a call fails after num_retries, LiteLLM falls back to another model group, so a failing model or provider automatically fails over to a h…
                                • [claimed-docs] so a failing model or provider automatically fails over to a healthy backup
                                • [claimed-docs] The request to `model="zephyr-beta"` will fail... litellm proxy will loop through all the model_groups specified in `fallbacks=["gpt-3.5-tur…
                                • [claimed-docs] content_policy_fallbacks: For litellm.ContentPolicyViolationError - LiteLLM maps content policy violation errors across providers

                              Streaming tools — stories about streaming tools in this arenaStreaming tools

                              Stories about streaming tools in this arena

                              Streaming

                              1. developerStream token-by-token responses through the gateway from any provider

                                weight 3 · round to OpenRouter
                                OpenRouterfullcommunity8/10

                                OpenRouter's docs explicitly state streaming is supported for any model through the gateway API, and community feedback corroborates using a single API/key across many providers with model switching in production. missing for 10: independent hands-on confirmation specifically of token-by-token streaming behavior (e.g., latency/chunking quality) and any provider-specific streaming caveats or limitations.

                                • [claimed-docs] The OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI…
                                • [claimed-docs] The OpenRouter API allows streaming responses from *any model*. This is useful for building chat interfaces or other applications where the …
                                • [claimed-docs] OpenRouter gives you access to hundreds of AI models through a single API endpoint.
                                • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                LiteLLMfullcommunity7/10

                                LiteLLM's unified completion() interface and consistent output format across providers is well documented, and a maintainer explicitly confirmed the proxy 'supports streaming and function-calling in the same way as the openai-python SDK' across 50+ providers, matching the streaming-tools story directly. Missing for 10: a dedicated first-party streaming docs page/code snippet (e.g., stream=True) and independent hands-on confirmation beyond the single maintainer HN comment.

                                • [community] LiteLLM maintainer confirmed proxy supports streaming and function-calling in the same way as the openai-python SDK, and added Ollama integr…
                                • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
                                • [claimed-docs] Every response follows the OpenAI Chat Completions format, regardless of provider.
                                • [claimed-docs] Call any provider using the same `completion()` interface, with no API to re-learn for each one
                                • [claimed-docs] Consistent output format regardless of which provider or model you use
                                • [community] Show HN launch of LiteLLM Proxy Server: praised as 'super compelling' with maintainers noting motivation was avoiding messy 100-line if/else…

                              Tool calling

                              1. developerRequest structured JSON-schema outputs across providers

                                weight 1 · round drawn
                                OpenRouternone0/10

                                The evidence pack covers tool-calling standardization, streaming, routing, fallbacks, and key management, but contains no mention of structured JSON-schema/response_format output support across providers. missing for 10: any documentation or example of JSON-schema response_format, schema validation, or structured output enforcement across providers.

                                  LiteLLMnone0/10

                                  The evidence pack covers LiteLLM's unified completion() interface, consistent OpenAI-format responses, retries/fallbacks, and proxy features, but nowhere mentions structured/JSON-schema output support (e.g. response_format, json_schema mode) across providers. This is a fair axis for a multi-provider LLM gateway, but no citation substantiates the specific capability.

                                  • developerMake tool and function calls across different providers with a consistent schema

                                    weight 3 · round drawn
                                    OpenRouterfullcommunity8/10

                                    OpenRouter explicitly documents a standardized tool-calling interface across models/providers (docs-5), consistent with its single-API model access across 500+ models and providers (docs-1, docs-16), and community confirms using the same API key/request format to switch models seamlessly (openrouter-comm-2). Streaming is also documented as working across any model (docs-11/20), supporting the streaming-tools theme. Missing for 10: no independent hands-on verification specifically of function/tool-call schema consistency across multiple providers, and no detailed example showing identical tool-call JSON working unchanged across e.g. OpenAI vs Anthropic vs Google models.

                                    • [claimed-docs] OpenRouter standardizes the tool calling interface across models and providers, making it easy to integrate external tools with any supporte…
                                    • [claimed-docs] OpenRouter gives you access to hundreds of AI models through a single API endpoint.
                                    • [claimed-docs] The OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI…
                                    • [claimed-docs] The OpenRouter API allows streaming responses from *any model*. This is useful for building chat interfaces or other applications where the …
                                    • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                    LiteLLMfullcommunity8/10

                                    LiteLLM documents a unified completion() interface that normalizes tool/function calls and outputs to the OpenAI Chat Completions schema across 100+ providers, and a maintainer confirms function-calling parity with the openai-python SDK. missing for 10: independent hands-on verification of tool-call schema consistency across many specific providers, and no dedicated docs excerpt specifically on function-calling parameter translation edge cases.

                                    • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
                                    • [claimed-docs] Every response follows the OpenAI Chat Completions format, regardless of provider.
                                    • [claimed-docs] Call any provider using the same `completion()` interface, with no API to re-learn for each one
                                    • [claimed-docs] Consistent output format regardless of which provider or model you use
                                    • [github] Drop-in OpenAI compatibility — swap providers without rewriting your code
                                    • [community] LiteLLM maintainer confirmed proxy supports streaming and function-calling in the same way as the openai-python SDK, and added Ollama integr…

                                  Unified api — stories about unified api in this arenaUnified api

                                  Stories about unified api in this arena

                                  Catalog

                                  1. developerBrowse or query a catalog of available models with pricing and context-window metadata

                                    weight 2 · round to OpenRouter
                                    OpenRouterfullprobed9/10

                                    OpenRouter documents a browsable model catalog at openrouter.ai/models and a programmatic GET /api/v1/models endpoint listing model slugs, and a live probe confirms this endpoint returns 426 models with pricing/context-window metadata unauthenticated. Community feedback corroborates ease of comparing/switching models via the unified catalog. Missing for 10: no independent third-party review specifically validating completeness/accuracy of pricing or context-window fields beyond the probe.

                                    • [claimed-docs] Browse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.
                                    • [probe] PROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live …
                                    • [claimed-docs] 300T+ Monthly Tokens 10M+ Global Users 80+ Providers 500+ Models
                                    • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                    LiteLLMnone0/10

                                    While LiteLLM claims support for 100+ LLMs and tracks spend/cost, the evidence pack contains no mention of a browsable/queryable catalog listing models with pricing and context-window metadata (e.g., no model_cost table, /model/info endpoint, or docs page referencing context window sizes). Cost-tracking docs (litellm-docs-6) cover spend tracking, not a metadata catalog.

                                    Compatibility

                                    1. developerPoint existing OpenAI-compatible code at the gateway by changing only the base URL and key

                                      weight 3 · round to OpenRouter
                                      OpenRouterfullprobed9/10

                                      Docs explicitly state the OpenAI SDK can be pointed at OpenRouter as a drop-in replacement, and community users corroborate using 'the same api key and same request' across models, confirming base-URL/key swap works in practice. Missing for 10: no explicit first-party code snippet showing the exact base_url/api_key change in the evidence pack, only the general drop-in claim.

                                      • [claimed-docs] You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.
                                      • [claimed-docs] You can also use the [OpenAI SDK](#using-the-openai-sdk) pointed at OpenRouter as a drop-in replacement.
                                      • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                      • [probe] PROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of mode…
                                      LiteLLMfullcommunity8/10

                                      LiteLLM's docs and GitHub explicitly advertise drop-in OpenAI compatibility with consistent Chat Completions format across providers, and the self-hosted proxy exposes a single gateway endpoint with virtual keys, matching the exact story of only swapping base URL and key. Community evidence (Show HN, HN threads) corroborates real-world use as a drop-in gateway for existing OpenAI-style code. Missing for 10: independent hands-on verification of literal 'change only base_url+key' migration and no explicit code diff example in the pack.

                                      • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
                                      • [claimed-docs] Every response follows the OpenAI Chat Completions format, regardless of provider.
                                      • [github] Drop-in OpenAI compatibility — swap providers without rewriting your code
                                      • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                                      • [claimed-docs] Self-hosted [LLM Gateway (Proxy)](/docs/simple_proxy) with virtual keys, cost tracking, and an admin UI
                                      • [community] Show HN launch of LiteLLM Proxy Server: praised as 'super compelling' with maintainers noting motivation was avoiding messy 100-line if/else…
                                      • [community] LiteLLM maintainer confirmed proxy supports streaming and function-calling in the same way as the openai-python SDK, and added Ollama integr…

                                    One endpoint

                                    1. developerCall many model providers through one consistent API

                                      weight 3 · round to OpenRouter
                                      OpenRouterfullprobed9/10

                                      OpenRouter's core value proposition is a single API endpoint (OpenAI-SDK compatible) that routes to hundreds of models across 80+ providers, with fallback, load-balancing, standardized tool calling, and streaming for any model — corroborated by live probes (426-model catalog, openapi.json) and community testimonials confirming 'same API key and same request' across providers with automatic fallback. Minor gaps: community notes some inconsistencies (missing sampling params, occasional reliability complaints), missing for 10: fully independent benchmark of API consistency across all providers and resolution of reported debugging/latency complaints.

                                      • [claimed-docs] OpenRouter gives you access to hundreds of AI models through a single API endpoint.
                                      • [claimed-docs] You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.
                                      • [claimed-docs] Provide an array of model IDs in priority order. If the first model returns an error, OpenRouter will automatically try the next model in th…
                                      • [claimed-docs] OpenRouter standardizes the tool calling interface across models and providers, making it easy to integrate external tools with any supporte…
                                      • [claimed-docs] The OpenRouter API allows streaming responses from *any model*. This is useful for building chat interfaces or other applications where the …
                                      • [probe] PROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of mode…
                                      • [probe] PROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live …
                                      • [community] Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with ne…
                                      • [community] It's definitely the best way to try out new models without fiddling with each providers distinct APIs. That said, I don't understand people …
                                      LiteLLMfullcommunity8/10

                                      LiteLLM's core value proposition—calling 100+ providers through one OpenAI-compatible completion() interface with consistent output format—is well documented (litellm-docs-1, litellm-docs-2, litellm-docs-16, litellm-docs-17, litellm-gh-1) and corroborated by independent Show HN community feedback praising it as a way to standardize disparate AI APIs and quickly add new providers (litellm-comm-12, litellm-comm-13, litellm-comm-14, litellm-comm-15). Some community sentiment flags proxy flakiness/outages, but that concerns operational reliability, not whether the unified-API abstraction itself works. Missing for 10: no independent benchmark verifying identical output format across all supported providers, and no public OpenAPI spec was found for the proxy (litellm-probe-3).

                                      • [claimed-docs] Call any provider using the same completion() interface, with no API to re-learn for each one
                                      • [claimed-docs] Every response follows the OpenAI Chat Completions format, regardless of provider.
                                      • [claimed-docs] Call any provider using the same `completion()` interface, with no API to re-learn for each one
                                      • [claimed-docs] Consistent output format regardless of which provider or model you use
                                      • [github] Drop-in OpenAI compatibility — swap providers without rewriting your code
                                      • [community] Show HN launch of LiteLLM Proxy Server: praised as 'super compelling' with maintainers noting motivation was avoiding messy 100-line if/else…
                                      • [community] LiteLLM maintainer confirmed proxy supports streaming and function-calling in the same way as the openai-python SDK, and added Ollama integr…
                                      • [community] Show HN launch of the original LiteLLM library; a user praised it: 'This is amazing. Really needed something like this to standardize all my…
                                      • [community] Maintainer distinguished LiteLLM from a similar library (llm-client-sdk) by stating 'while your library looks really powerful my goal with L…

                                    Not comparable on these axes

                                    1. ai-native userGet AI-generated insights and suggestions from my data inside the product

                                      weight 2 · not comparable
                                      OpenRoutern/a

                                      OpenRouter is an API/routing gateway for accessing LLMs, not a data product that holds a user's own data and surfaces AI-generated insights from it — the axis is a category mismatch for this type of infrastructure tool.

                                        LiteLLMn/a

                                        LiteLLM is an LLM gateway/proxy for routing, cost tracking, and reliability across model providers — it is infrastructure, not a data-facing application that surfaces AI-generated insights or suggestions 'inside the product' from a user's own data. This axis targets end-user-facing analytics/insight features, which is outside LiteLLM's category as a developer-facing gateway.

                                        • ai-native userSet up automations that run autonomously in the background

                                          weight 2 · not comparable
                                          OpenRoutern/a

                                          OpenRouter is a unified API/routing layer for LLM inference, not an automation/orchestration platform with scheduling or background-run capabilities; setting up autonomous background automations is outside its product category (wrong axis) rather than a missing feature.

                                            LiteLLMn/a

                                            LiteLLM is an LLM gateway/proxy for routing and managing API calls to models, not an automation/agent orchestration platform; it has no scheduling, triggers, or background workflow execution features. Setting up autonomous background automations is a category error for this product type.

                                            • ai-native userDelegate tasks to a built-in AI assistant inside the product

                                              weight 3 · not comparable
                                              OpenRoutern/a

                                              OpenRouter is a model-routing/API aggregation platform for developers to access LLMs, not a product with its own built-in AI assistant that end-users delegate tasks to; its MCP server lets *other* assistants pull OpenRouter data, which is the inverse of this story's axis. Task delegation to an in-product assistant is a category mismatch for an API routing service.

                                                LiteLLMn/a

                                                LiteLLM is an LLM gateway/proxy infrastructure product, not an end-user assistant product; it provides an API/proxy for routing calls to LLMs rather than a built-in assistant persona to delegate tasks to. This axis is a category error for this product type.

                                                • ai-native userOperate the product with natural-language commands

                                                  weight 2 · not comparable
                                                  OpenRouterpartialprobed4/10

                                                  OpenRouter is an API/routing platform, not a natural-language interface itself, but it does provide an official MCP server that lets an AI assistant issue natural-language commands to pull model data, pricing, credits, and send test messages without leaving the editor — this is the main evidence of NL-command operability. Beyond MCP, there's no chat-style NL command surface for managing keys, budgets, or routing directly. missing for 10: a native conversational/NL interface for account and routing operations, independent hands-on validation of the MCP server's NL command handling, and evidence of NL commands controlling core features like BYOK, budgets, or provider selection.

                                                  • [claimed-docs] The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (…
                                                  • [claimed-docs] The **OpenRouter MCP server** plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter da…
                                                  • [claimed-docs] Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages…
                                                  • [probe] official MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md
                                                  LiteLLMn/a

                                                  LiteLLM is an LLM gateway/proxy for routing API calls between providers, not a user-facing interface meant to be operated via natural-language commands; this axis is a category error for this product type.

                                                  • ai-native userSchedule recurring jobs or workflows

                                                    weight 2 · not comparable
                                                    OpenRoutern/a

                                                    OpenRouter is an API routing/aggregation layer for LLM inference, not a workflow/job scheduler; nothing in its evidence pack relates to scheduling recurring jobs or workflows. This axis is a category error for this kind of product.

                                                      LiteLLMn/a

                                                      LiteLLM is an LLM gateway/proxy for routing, cost tracking, and reliability across providers, not a workflow/job scheduling tool; scheduling recurring jobs is outside its product category.

                                                      • ai-native userVersion, review, and roll back my automations

                                                        weight 1 · not comparable
                                                        OpenRoutern/a

                                                        OpenRouter is an API routing/aggregation layer for LLM inference, not an automation-builder product with workflows to version, review, or roll back; this axis is a category error for this product type.

                                                          LiteLLMn/a

                                                          LiteLLM is an LLM gateway/proxy for routing, cost tracking, and reliability across providers; it has no concept of versioning, reviewing, or rolling back 'automations' (workflows/prompts/pipelines). This is a category mismatch, not a missing feature.

                                                          • ai-native userSelf-host the core product

                                                            weight 3 · not comparable
                                                            OpenRoutern/a

                                                            OpenRouter is a hosted API routing/aggregation service, not open-source software designed to be self-hosted; no evidence of a self-hostable core product exists. Self-hosting is a category mismatch for this kind of cloud aggregation service.

                                                              LiteLLMfullcommunity9/10

                                                              LiteLLM explicitly ships a self-hosted LLM Gateway/Proxy (docs-5, docs-23) with configurable worker processes and CLI (docs-13/20), and this is corroborated by hands-on community use running it via Docker in a homelab (litellm-comm-6) and widespread adoption as a self-hosted gateway (litellm-comm-7). missing for 10: no independent benchmark or enterprise-scale self-hosting case study beyond a single homelab anecdote.

                                                              • [claimed-docs] Self-hosted LLM Gateway (Proxy) with virtual keys, cost tracking, and an admin UI
                                                              • [claimed-docs] Self-hosted [LLM Gateway (Proxy)](/docs/simple_proxy) with virtual keys, cost tracking, and an admin UI
                                                              • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian --workers).
                                                              • [claimed-docs] The number of worker processes to spin up (uvicorn, gunicorn, or Granian `--workers`).
                                                              • [community] A user described running LiteLLM as a proxy in their homelab via the litellm/litellm docker image for local LLM gateway management, noting t…
                                                              • [community] 'That's a bad supply-chain attack, many folks use litellm as main gateway' — reflecting how widely used LiteLLM is as an LLM gateway.