Skip to main content

Routing

ExperimentalAvailable on: WindowsPresent in the build, unproven. May change or be removed.

How a step gets assigned a provider, model, and effort — and why the reason is shown before you consent.

WARNING

Orchestration modes vary in maturity. Treat routing behaviour as unproven on your machine until you have watched it work. See feature status.

Routing is the decision of which execution route runs each step of a plan. It is the single most consequential thing orchestration does, because it determines both behaviour and cost.

A route is eight things

Harness, provider, account, model, effort, tool set, platform, billing class. See providers, models, and routes for what each element means.

Different steps of one plan can take different routes. That is the point — a cheap step should not pay for an expensive model — but it also means "which model ran this plan" has no single answer.

Reasons are part of the output

A proposed route is shown with a plain-language reason and supporting evidence, not just a model name. A route you cannot explain is a route you cannot review.

When reading a proposed plan, check that the reason refers to something about the step rather than a generic preference.

Cost is a gate, not a footnote

Projected cost and billing route are shown before consent.

IMPORTANT

If cost or billing route cannot be determined, the run should block rather than proceed. If you ever see a run continue past an unknown cost, treat that as a defect and report it.

What routing cannot know

UnknownWhy
Your remaining quotaProviders do not expose it
Whether your plan includes a modelNot exposed
Live rate-limit stateNot exposed

Routing therefore proposes; it cannot guarantee the provider will accept. A step can be routed correctly and still fail at the provider on entitlement.

Reviewing a proposed routing

Three questions, in order:

  1. Is any step routed to something I do not want to pay for?
  2. Does the reason for each route make sense for that step?
  3. Is the total projected cost acceptable if every step runs?

Approving a plan approves its routes. Changing your mind afterwards means cancelling a run.

Route changes mid-session

Route can change during a session — deliberately, via /provider and /model, or across steps of a plan. Later turns can behave differently from earlier ones in the same transcript.

When output quality changes unexpectedly, check whether the route changed before concluding the model degraded.

No universal rankings

Harmony does not publish anecdotal model rankings as fact, and routing does not encode a global "best model" order. Suitability depends on the task, the repository, and the constraints of the step.