Bring every agent under management.Dome is GA.

Start free
Dome Systems

Agent Operations Platform

Model Broker

Dome's model router. It takes OpenAI- and Anthropic-compatible calls at /v1/*, evaluates policy, routes to a provider or a pool, and injects the provider credential at egress. The agent's call shape never changes.

dome — broker

Workflow

Connect a provider.Then the next.

The same loop for every upstream. Configure it, pool it if you want failover, authorize the agent.

  1. 01

    Configure

    Add a model provider — Anthropic, OpenAI, Bedrock and more — and have credentials securely stored.

  2. 02

    Route

    Optionally group providers into a pool. Failover, cost routing, region pinning — invisible to the agent.

  3. 03

    Authorize

    Write rules at the right scope. Grant an agent specific models, model IDs, or pools.

  4. 04

    Evaluate

    Every model call evaluated against policy, credentials injected at egress, recorded with uniform llm.* audit.

Consistent operations

How every model call lands

Cost, data egress and provider choice all converge on model traffic. One place governs all three, whichever provider is on the other end.

Receive

Agent calls /v1/* with its Dome token. Wire format is OpenAI- or Anthropic-compatible.

Authorize

Rules evaluate: which agent, which model, what classification, which scope.

Route

Direct to a provider, or through a pool with match-when predicates.

Invoke

Provider credential injected at egress. Response normalized back to the agent.

Provider abstraction

OpenAI- and Anthropic-compatible wire formats at /v1/*. Anthropic, OpenAI, Bedrock, Vertex, or a server you host yourself, with no change to client code.

Routing strategy

Direct to a provider, or through a pool: failover, region-pinned, cost-cascaded, or routed on the verified person the agent is acting for. The agent sees none of it.

Spend & posture

Dollar caps on six subjects: workspace, agent, verified person, pool, model, gateway. One llm.* audit vocabulary across every provider, so a single query reconstructs spend and decisions.

Options

What the Broker lets you do

What you can configure per connection and per pool, from the CLI, the API, or Terraform.

Identity-aware routing

Pool selection can read the verified person behind the call: their roles, groups, or directory claims. An unverified assertion never matches, so the fail-safe direction is away from the privileged pool.

Failover and cascade

A pool with ordered priority tries the next member on a rate limit, an outage, or a capacity error, inside the same call. Cascades work the same way — try haiku, escalate on retry — and each candidate is authorized in its own right.

Region pinning

Tag connections with attributes and select on them. EU traffic stays on EU endpoints.

Spend caps and budget routing

Daily or monthly dollar limits against a workspace, agent, person, pool, model, or gateway, applied per caller where you want each one held to the same ceiling. A pool can also prefer its cheapest member and spill to the next when that budget runs out.

Guards on model traffic

The filters that govern tool responses work on model calls in both directions: the outbound prompt before it reaches the provider, the completion before it reaches the caller. Streaming and non-streaming alike.

Per-user provider credentials

A connection can dispatch with each caller's own provider credential instead of a shared workspace key. Provider-side attribution and per-seat entitlements survive the hop.

In practice

From provider to governed call

Configure a provider, pool it, guard the boundary, authorize the agent. Client code is unchanged and points at the Broker URL.

Configure provider and poolbash
dome model add anthropic-prod \
  --provider anthropic \
  --model claude-sonnet-5 \
  --auth-method api-key \
  --credential-type shared

dome model pool create cheap-reasoning \
  --match-when '{"request.model":["claude-haiku-4-5","gpt-5-mini"]}'
dome model pool member add cheap-reasoning anthropic-prod

dome rules apply models/cheap-reasoning.cedar
Guard the model boundarybash
dome guards filters create pii-redact \
  --redact-ssn \
  --redact-substring "internal-only" \
  --block-substring "TOP-SECRET"

# The completion, before the agent sees it
dome model guards filters set anthropic-prod \
  --direction response --filters pii-redact

# The prompt, before it leaves your perimeter
dome model guards filters set anthropic-prod \
  --direction request --filters pii-redact

The request direction is the underused half. It sees the prompt before it leaves your perimeter, so a customer identifier or an internal marker never reaches the provider at all. Model connections take text filters: substrings, US SSN patterns, Luhn-checked card numbers, phone numbers, and N-digit patterns.

Agent code — point at the Brokerpython
client = anthropic.Anthropic(
    base_url="https://broker.dome.example.com/v1",
    api_key=os.environ["DOME_AGENT_TOKEN"],
)
response = client.messages.create(
    model="claude-sonnet-5",
    messages=[...],
)

Questions

Common questions about model routers

What is a model router?

A model router is one endpoint in front of every model provider an agent can call. Dome's Model Broker accepts OpenAI- and Anthropic-compatible calls at /v1/*, evaluates policy, routes to a provider or a pool, and injects the provider credential at egress.

Do we have to change agent code to route through the Broker?

No. The client points at the Broker URL instead of the provider's, and the call shape stays the same. Dome handles policy, routing, and credentials from there.

What happens when a model provider fails or rate-limits?

Providers can be composed into a pool, so model traffic has somewhere to fail over to without the agent knowing which upstream served the call.

Do agents ever hold model provider API keys?

No. The provider credential is injected at egress, at the Broker. The agent never holds the key for the provider it is calling.

Why route all model traffic through one place?

Cost, data egress, and provider choice all converge on model traffic. The Broker is the one place they are governed consistently, regardless of which provider is on the other end of the call.