RouterX Contact us

Control your company’s AI use, and prove it.

When an auditor asks what your AI was allowed to do, you need proof. RouterX is an AI gateway for platform and security teams. It runs on your servers, between your apps and AI providers, where it enforces your rules, limits spend and keeps records that can be checked.

Control and spend

Set the limits once, for every app.

Control who uses which models and where data goes. Each API key can have its own budget and model list.

New requests stop when estimated spend reaches your cap. A pause stops all traffic at once.

Configure · API keys

Keys

7 keys · 6 active · Sample data
KeyLast usedLimitsStatus
support-botrx_sk_Qm4xTz••••2 min agogemini-2.5-flash$12,840.20 of $20,000.00 this monthActive
data-pipelinerx_sk_7hKdWa••••4 min agogpt-4o-mini$9,346.15 of $12,000.00 this monthActive
code-reviewrx_sk_Vt2pGe••••11 min agoclaude-sonnet-5, gpt-4o$7,205.10 of $10,000.00 this monthActive
docs-searchrx_sk_c9ZeLu••••26 min agogemini-2.5-flash$4,118.35 of $8,000.00 this monthActive
sales-botrx_sk_Ha6wPo••••1 h agoclaude-sonnet-5$3,402.80 of $6,000.00 this monthActive
ci-testsrx_sk_Xy3nBv••••3 h agogpt-4o-mini$1,500.00 of $1,500.00 this monthActive
old-prototyperx_sk_Lb8rJs••••Oct 12, 14:22gpt-4o$0.00 of $500.00 this monthRevoked

Govern · Guardrails & policy

Organization controls

Sample data
Two-step verification
Required
Images in requests
Refused (default)
Data residency
Enforced: EU
Monthly cost cap
$60,000.00
Models per API key
Only specific models
All traffic
Serving

Refused this month

Model rule1,204
Data residency268
Spend cap or key budget87

Observe · Spend & savings

Spend this month

Sample data
$38,412.60of $60,000.00 monthly cap · 64.0% used

By model

  • claude-sonnet-5$16,720.4044%
  • gpt-4o-mini$9,374.1524%
  • gemini-2.5-flash$7,946.1521%
  • gpt-4o$4,371.9011%

By API key

  • support-bot$12,840.20 33.4%
  • data-pipeline$9,346.15 24.3%
  • sales-bot$3,402.80 8.9%
  • code-review$7,205.10 18.8%
  • docs-search$4,118.35 10.7%
  • ci-tests$1,500.00 3.9%

Routing and cost

Send work to lower-cost models, by your rules.

Your rules decide which work goes where. Repeated questions can come from cache at $0, and each request records why its model was chosen.

Supported providers: OpenAI, Anthropic, Google Gemini, Vertex AI, AWS Bedrock, Azure OpenAI, Groq, DeepSeek, Mistral, Cerebras, Ollama and services that use the OpenAI request format.

Govern · Guardrails & policy

Routing rules

Sample data
Applies toWhenSends toPriorityMatched
CodingAPI key code-reviewcomplexity ≥ 7anthropic:claude-sonnet-51412,880requests
Business taskAPI key support-botcomplexity ≤ 3gemini:gemini-2.5-flash2386,204requests
DocumentsAPI key data-pipelinecomplexity ≤ 5openai:gpt-4o-mini3218,946requests
ChatAPI key sales-botAlwaysanthropic:claude-sonnet-5494,310requests
DocumentsAPI key docs-searchAlwaysgemini:gemini-2.5-flash581,527requests
CodingAPI key ci-testsAlwaysopenai:gpt-4o-mini627,640requests

Overview

Recent requests

Sample data
TimeModelCostOutcome
just nowgemini-2.5-flash$0.0004Served
just nowgemini-2.5-flash$0.00From cache
1 min agoclaude-sonnet-5$0.0183Served
1 min agogpt-4o-mini$0.0011Served
1 min agogemini-2.5-flash$0.00From cache
2 min agoclaude-sonnet-5$0.0126Served
2 min agogpt-4o$0.0092Served
3 min agogpt-4o-mini$0.00From cache

Observe · Requests

Routing receipt

Sample data
Outcome
Served
Model
gemini-2.5-flash
Tier
Everyday
Tokens
1,040 in · 36 out
Cost
$0.0004

Why this model

  • Routing rule matched (api key scope): gemini:gemini-2.5-flash
  • Classified as enterprise task
  • Complexity 2

Proof for auditors

Records someone outside your team can check.

With data location rules on, a blocked request gets a signed receipt. Decisions, data location refusals and policy changes export as one pack that auditors can check without installing RouterX.

Receipts are checked with your public key. Pack signing needs a key to be set, and checking a pack’s signature needs that key, Python and the verifier script that ships with RouterX.

Your terminal

verify_evidence_pack.py

Real output

$ python verify_evidence_pack.py pack.json --signing-key "$KEY" --residency-public-key residency.pub

[chain] OK -- Chain verified: 16 records, final hash f8ec4b43eb38…

[signature] OK -- Signature verified.

[receipts] OK -- 1 residency denial receipt(s) verified against the out-of-band public key you supplied

$ python verify_evidence_pack.py pack-edited.json --signing-key "$KEY" --residency-public-key residency.pub

[chain] FAILED -- Record 4 (routing_decision/e9f4389c…): content hash mismatch -- record was altered after export.

[signature] OK -- Signature verified.

[receipts] OK -- 1 residency denial receipt(s) verified against the out-of-band public key you supplied

$ python verify_evidence_pack.py pack-rechained.json --signing-key "$KEY" --residency-public-key residency.pub

[chain] OK -- Chain verified: 16 records, final hash acf19fc33cc9…

[signature] FAILED -- Signature does not match -- wrong key, or the final_hash was altered after signing.

[receipts] OK -- 1 residency denial receipt(s) verified against the out-of-band public key you supplied

Original pack
Passed, exit 0
One record edited
Chain failed, exit 1
Edited, chain rebuilt
Signature failed, exit 1

Govern · Compliance

Residency refusals

Sample data
WhenWhoRequired
Today 10:41data-pipelineEU
Today 09:17sales-botEU

Signed receipt

The signature checks out against this gateway’s public key.

{
  "receipt_id": "5a1e90c7…",
  "jws": "eyJhbGciOiJFZERTQSIs…",
  "verified": true,
  "decoded_payload": {
    "required_regions": ["EU"],
    "offered_providers": [{
      "provider": "anthropic",
      "region": "US"
    }],
    "application": "data-pipeline"
  }
}

The caller gets HTTP 451 with the error no_provider_meets_residency. The receipt is signed with Ed25519.

Govern · Compliance

Evidence pack

Sample data

Routing decisions, the audit trail and data location refusals for the days chosen, as one hash chain.

Days
Oct 1 to Oct 31
Routing decisions
1,284,906
Data location refusals
312
Policy changes
9
Audit events
1,418
Hash chain
Verified
Signature
Verified

Security and setup

Runs on your servers. Connects in two lines.

No telemetry, and it works without internet as long as your AI provider is reachable.

Apps using OpenAI’s client only need a new address and key.

Configure · API keys

Connect an application

Python
from openai import OpenAI

client = OpenAI(
    base_url="https://your-server/api/v1",
    api_key="rx_sk_...",
)

reply = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Hello"},
    ],
)

print(reply.choices[0].message.content)

Govern · Members

Sign-in

Sample data
Single sign-on
OpenID Connect
Two-step verification
Required
Roles
Owner, Admin, Developer, Viewer
API keys
Own budget and model list

Single sign-on with OpenID Connect, tested with Google and Keycloak. Two-step sign-in can be required.

On every request

Before it reaches a provider

Sample text

Your app sends

Ask Anna (anna@example.com) to refund card 4242 4242 4242 4242. She called from 203.0.113.7 at 12 Harbour Road.

The provider receives

Ask Anna ([EMAIL_0]) to refund card [CARD_0]. She called from [IP_0] at 12 Harbour Road.

Emails, phone numbers, card numbers, US Social Security numbers, common API key formats and IPv4 addresses are masked in text. Names and street addresses are not, and unusual formats can be missed.

Want to see it with your own rules?

Contact us on LinkedIn

Licensed per organization. RouterX has not yet been independently audited.