Skip to content

docs: routing — the task_v1 router and the built-in judge - #446

Open
bbqiu wants to merge 1 commit into
mainfrom
docs/task-v1-routing
Open

docs: routing — the task_v1 router and the built-in judge#446
bbqiu wants to merge 1 commit into
mainfrom
docs/task-v1-routing

Conversation

@bbqiu

@bbqiu bbqiu commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

The routing implementation now ships two routers with a per-decision
selector. The docs page described neither: it documented a single "external
routing API" pointed at task_v0, and framed the built-in judge and the
external service as alternatives you choose between. This rewrites
/docs/build/routing around what routing actually does today.

What the page now covers:

  • The two routers — the built-in judge (an LLM call from the server's llm:
    block; the pure-OSS router, works on any harness and any credential) and the
    Databricks AI Gateway task_v1 router (routing.provider: external, whose
    picks are gateway catalog ids).
  • The selectortask_v1 answers when it is configured and every model
    family the decision involves is AI-Gateway-backed on the target host; the
    judge answers otherwise; a server with neither has no routing. Gateway backing
    selects the source, it does not hide the feature.
  • Four complete, copy-pasteable configs — routing off, judge only, task_v1,
    and both. Includes the two behaviors that surprise people: the routing: block
    is auto-derived from a Databricks provider when omitted, so deleting it does
    not disable routing, and routing: {provider: none} is the only true
    off-switch (it disables the judge too).
  • How to verifyGET /v1/infosmart_routing_sources, GET /v1/hosts
    per-family gateway_inference, and the per-family credential rules that decide
    it (Claude needs ANTHROPIC_BASE_URL + apiKeyHelper; Codex needs an AI
    Gateway /codex/v1 base URL; subscriptions and Bedrock are never
    gateway-backed).
  • What users see — decision chips with the router's rationale, the small
    Databricks mark keyed on router_source: "databricks-aigw", per-family
    degradation to the judge with a one-line CLI notice instead of hidden surfaces,
    the --smart-routing flag, and first-message routing in a bare TUI.

It also corrects two things the old page got wrong independent of version:
llm: and routing: are read only from the file passed to
omni server -c (they are not picked up from ~/.omnigent/config.yaml the way
providers: is), and provider: none disables the built-in judge as well as the
external router.

The page stays doc-sized — it links Models & Credentials
and Harnesses for the deeper journeys
rather than inlining the full setup walkthrough.

Provenance

Documents omnigent PR #4074 (routing-mvp-v3). Every claim was verified
against that branch's implementation — the selector in
omnigent/server/routing_backend.py, config parsing in omnigent/cli.py, the
credential checks in omnigent/gateway_inference.py, and the chip rendering in
the web UI — not against main. This should land with or after #4074.

Test plan

  • bun run fmt:check — clean
  • bun run lint:links — 0 broken links
  • bun run build — production build passes
  • lib/og-manifest.json updated for the new page description

(An unrelated pre-existing drift the OG generator wants to make to
app/releases/0.5.1/page.mdx was deliberately left out of this PR.)

This pull request and its description were written by Isaac.

The routing page described a single "external routing API" pointed at
task_v0, and framed the built-in judge and the external service as
alternatives you pick between. The shipped implementation has two routers
and one selector that chooses between them per decision, so the page
described neither side accurately.

Rewrite it around what routing actually does today:

- the two routers — the built-in judge from the server's llm: block (the
  pure-OSS router) and the Databricks AI Gateway task_v1 router — and the
  per-decision selector: task_v1 answers when it is configured and every
  model family the decision involves is AI-Gateway-backed, the judge
  answers otherwise, and a server with neither has no routing
- complete copy-pasteable configs for all four postures: routing off,
  judge only, task_v1, and both, including that the routing: block is
  auto-derived from a Databricks provider when omitted and that
  routing: {provider: none} is the only true off-switch
- how to verify: /v1/info smart_routing_sources, /v1/hosts
  gateway_inference, and the per-family credential rules that decide it
- what users see: decision chips and their rationale, the Databricks mark
  keyed on router_source, per-family degradation to the judge rather than
  hidden surfaces, the --smart-routing flag, and first-message routing in
  a bare TUI

Also corrects two things the old page got wrong regardless of version:
llm: and routing: are read only from the file passed to `omni server -c`,
not picked up from ~/.omnigent/config.yaml, and provider: none disables
the judge too, not just the external router.

Co-authored-by: Isaac
@vercel

vercel Bot commented Aug 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
omnigent-site Ready Ready Preview Aug 5, 2026 4:33am

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant