Dome Systems

Claude Sonnet and Dome

Run Claude Sonnet 5.5 from two providers under one name.

Sonnet is where many agent teams settle: the code reviewer, the docs writer, the support agent. The risk is drift. One config change and a busy agent is on Opus. Dome pins agents to Sonnet and keeps it answering when Anthropic doesn't.

PeopleAgentsDomePool: claude-sonnet-5-5CallersPeopleAgentscode-reviewerAgentssupport-agentAgentsdocs-writerGatewaysprod-gatewayAnthropicPriority 0Amazon BedrockPriority 1RulesGuardsAuditsaudit-trail
code-reviewer→claude-sonnet-5-5· as d.chenAllowed

How Dome helps

Dome provides model brokering and routing for Claude Sonnet

Anthropic first, Bedrock next

Every Sonnet call tries Anthropic at priority 0. Bedrock picks up the ones that fail, under the same model name.

An agent that stays on Sonnet

Tag Sonnet connections with a family attribute. A rule on the agent refuses every model outside it.

$300 a month, all providers

The quota sits on the pool, so it counts Anthropic and Bedrock together. Past $300, Sonnet calls stop until next month.

Get started

Sonnet with failover in five steps

Tag both Sonnet connections, pool them, pin the code reviewer, then set the monthly cap.

  1. 01

    Connect Anthropic

    The family: sonnet tag is what the pinning rule checks. The key itself never reaches an agent.

    $ dome models add sonnet-55-anthropic \
    --provider anthropic \
    --model claude-sonnet-5-5 \
    --api-key "$ANTHROPIC_API_KEY" \
    --attributes '{"family":"sonnet"}' \
    --gateway prod-gateway
  2. 02

    Connect Amazon Bedrock

    Bedrock takes AWS keys, so this one is a dashboard step: region, us.anthropic.claude-sonnet-5-5, and the same family tag. The CLI has no flag for AWS keys.

  3. 03

    Pool them for failover

    The pool is named for the model. A new Sonnet is a member swap. No agent needs a release.

    $ dome models pool create claude-sonnet-5-5 \
    --failover-max all --gateway prod-gateway
     
    $ dome models pool member add claude-sonnet-5-5 sonnet-55-anthropic --priority 0
    $ dome models pool member add claude-sonnet-5-5 sonnet-55-bedrock --priority 1
  4. 04

    Point your agent at the Gateway

    The Anthropic SDK works as is. Point it at the Gateway with the code reviewer's Dome key.

    import anthropic
     
    client = anthropic.Anthropic(base_url=GATEWAY_URL, api_key=DOME_AGENT_KEY)
    client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=2048,
    messages=[{"role": "user", "content": "Review this diff."}],
    )
  5. 05

    Cap the spend

    A pool quota counts every call through the pool, whichever provider answers.

    $ dome quotas set --subject pool --pool claude-sonnet-5-5 \
    --unit provider_usd --limit 300 --window monthly

Commands and rules tested against a Dome workspace on October 1, 2026. For anything about Claude Sonnet itself, see Anthropic's documentation.

Rules

Keep an agent on Sonnet

Applied to one agent with --agent, this refuses any connection not tagged as Sonnet. The code reviewer can't reach Opus, whatever model name it sends.

forbid (principal, action == Dome::Action::"llm:invoke", resource is Dome::LLMModel)
unless { resource has family && resource.family == "sonnet" };

Try it

One call, two outcomes

Switch the caller or the argument and watch the same call decide differently. Every decision lands in audit.

Model

agent code-reviewer · acting as d.chen
llm:invoke(model: "claude-sonnet-5-5")
  1. Agentcode-reviewer is registered and active
  2. Callerd.chen verified
  3. RuleConnection is tagged family: sonnet
  4. Quota$88 of $300 this month
DecisionAllowed

Agent workflow

Bringing it together

Connecting Claude Sonnet to registered agents, tools, and identity in Dome completes a governed agent application.

Dome

Control point

Gateway

  • Rules
  • Guards
  • Quotas

Every call decided and audited

FAQ

Common questions

Which providers serve Claude Sonnet through Dome?

Anthropic's API, with Amazon Bedrock as the fallback. Claude on Vertex AI isn't available through Dome.

What happens when a new Sonnet version ships?

Add a connection for the new model id and swap it into the pool. Agents keep sending the pool's name.

Can I stop an agent from using a pricier model?

Yes. Tag connections with an attribute, and a rule on the agent refuses anything without it.

Next steps

Talk with our FDE team

Our forward deployed engineers work with your platform team to get your agents into production and under control: the first one governed on your own systems, and a pattern your teams can repeat for every agent after it.