Routing policies

A policy is your algorithm for which agent handles which work — declarative rules cerver evaluates on every turn. First match wins, explicit choices always beat the policy, and no policy means nothing changes. This is how "25% frontier / 35% mid / 40% cheap" stops being a chart and becomes enforcement.

Apply one (account-wide):
curl -X PUT https://gateway.cerver.ai/v2/account/routing-policy -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"routing_policy": <paste a policy>}'
Per app: PUT /v2/apps/:slug/routing-policy · clear: {"routing_policy": null}

Frugal coder

Cheap-good-enough by default, frontier only when the caller says it matters. The 40% of your bill that was reflex, deleted.

{
  "name": "frugal-coder",
  "rules": [
    { "name": "explicit-priority", "match": { "metadata": { "priority": "high" } },
      "route": { "model": "claude-fable-5" } },
    { "name": "long-context", "match": { "prompt_over_chars": 8000 },
      "route": { "model": "claude-sonnet-4-6" } }
  ],
  "default": { "model": "claude-haiku-4-5-20251001" }
}

Escalate on struggle

Start cheap; if the session is still going after four turns, the task earned a better model. Pay for difficulty, not by reflex.

{
  "name": "escalate-on-struggle",
  "rules": [
    { "name": "earned-the-frontier", "match": { "turns_over": 4 },
      "route": { "model": "claude-fable-5" } },
    { "name": "warming-up", "match": { "turns_over": 1 },
      "route": { "model": "claude-sonnet-4-6" } }
  ],
  "default": { "model": "claude-haiku-4-5-20251001" }
}

Second opinion

Claude does the work; anything tagged for review gets re-run through the OpenAI harness. Two vendors, one transcript — the referral pattern as policy.

{
  "name": "second-opinion",
  "rules": [
    { "name": "review-pass", "match": { "metadata": { "stage": "review" } },
      "route": { "harness": "codex", "model": "gpt-5" } }
  ],
  "default": { "harness": "claude", "model": "claude-sonnet-4-6" }
}

Chat is cheap, work is not

Customer-facing chat rides the budget tier; coding sessions get the mid tier. The classic platform split, two rules.

{
  "name": "chat-cheap-work-mid",
  "rules": [
    { "name": "chat", "match": { "workload": "chat" },
      "route": { "model": "claude-haiku-4-5-20251001" } },
    { "name": "coding", "match": { "workload": "coding" },
      "route": { "model": "claude-sonnet-4-6" } }
  ],
  "default": { "model": "claude-haiku-4-5-20251001" }
}

VIP lane

Your paying tenants get the frontier; free-tier users get good-enough. Per-user tiering with the metadata your app already sends.

{
  "name": "vip-lane",
  "rules": [
    { "name": "paid-tenant", "match": { "metadata": { "plan": "pro" } },
      "route": { "model": "claude-fable-5" } }
  ],
  "default": { "model": "claude-haiku-4-5-20251001" }
}

Cerver auto

One line: let cerver's automatic router pick per turn — coding signals get the strong path, research goes to a current-answers route, routine work rides the cheap tier. Your rules (if any) still win first; auto only fills what's left. Opt-in by design: no policy means nothing ever changes behind your back.

{
  "name": "cerver-auto",
  "auto": true,
  "rules": []
}

Wrote a policy worth sharing?

This gallery is curated by hand for now — send yours via GitHub or the dashboard suggestion box and we'll credit you. Policy publishing & forking comes when the gallery earns it.