Agents

Orchestrator

The Orchestrator is what a chat message actually reaches first. Its job is not to answer but to decide: does one agent own this, or does it need several? One agent gets the whole message in a single hop; anything else becomes a plan, routed step by step across the agents you can see, and synthesized back into one answer with citations.

At a glance

Handle@orchestrator
AvailabilitySeeded in every organisation
Kindorchestrator โ€” a graph, not a markdown agent
Model tieradvanced for synthesis, lite for planning, routing and the critic
Autonomysupervised (the platform default โ€” the definition declares none) โ€” it inherits each delegate's own level for their work
ToolsNone of its own. It delegates; the tools belong to the agents it picks.
Delegates toEvery routable agent visible to the person asking, in the run's workspace
SchedulableYes โ€” an automation can run a goal on a clock

The routing decision

Before any planning happens, the orchestrator asks one question: does a single agent own this whole request? The rules are tried in order, and the first that matches wins. The first three cost nothing โ€” they run before any model is consulted.

  1. An @handle โ€” explicit beats inferred

    @hr-agent how much leave do I have? goes to the HR Agent, whole message, one hop. Naming an agent that is absent, paused or invisible to you is an honest refusal and no other agent runs โ€” you said whom you meant. Two different handles ask which one you wanted.
  2. A person's name โ†’ their avatar

    "is Alice free Friday?" reaches Alice's avatar. Matched by name, not by embedding similarity: a name is a fact. Several matches ask which person; none falls through.
  3. A tagged desk

    An unambiguous support, travel or markets phrasing reaches whichever visible agent carries the support, travel or markets tag โ€” so an organisation that replaces a built-in desk with its own keeps the routing by tagging it the same way. No model is asked, so the decision cannot be talked out of.
  4. Otherwise, one lite-tier classifier call

    The classifier sees every visible specialist with the tools each one declares, and the general Assistant's own tools beside them. It answers with one agent's slug, SIMPLE (the Assistant can handle it), or COMPLEX (nobody owns it โ€” plan it).
A shortcut may only claim a goal it describes entirely "Summarise our leave policy and book me a flight to Munich" asks two desks for two different things. A deterministic shortcut that claimed the travel half would throw the HR half away, and because those rules run before any model, nothing downstream could put it back. So a goal carrying a second request falls through to the planner โ€” which is the only thing that can serve both. A trailing phrase does not count: "book a flight to Berlin and a hotel nearby" is one travel request and keeps its free path.

When it plans: the supervisor graph

A goal nobody owns outright runs the full graph. Every step is a real agent run with its own event stream, so the task tree in chat fills in live.

  1. Plan

    The goal becomes an ordered list of steps with dependencies, on the lite tier. The step cap is a ceiling, not a target: a one-agent goal is one step, and research/draft/refine splits are forbidden โ€” each step is a separate run that has to re-read the last one.
  2. Route each step

    Candidates are found by vector similarity over agent embeddings, filtered to agents that declare the tool the step needs, then reranked by a lite-tier model. An agent marked routable: false is never a candidate โ€” it is a tool, not a delegate. If the reply names no one, the step goes to the Assistant rather than to an arbitrary nearest match.
  3. Execute in waves

    Steps with satisfied dependencies run together as child runs, each carrying the initiating user, so a connector two hops down still acts as that person with their own credential. A dependent step receives the actual output of what it depends on, budgeted so a long plan cannot re-read itself into a context blow-out.
  4. Critique, then synthesize

    A critic checks the result against the goal and may trigger a replan, capped at two rounds. An advanced-tier model then composes the answer, and the delegation chips in the thread show which agent contributed what.

What keeps it bounded

Testing the routing

Routing is the one behaviour that is invisible until it is wrong: you get a plausible answer from the wrong agent, and the only symptom is that the right agent's tools were never available. So the Orchestrator ships a routing eval set โ€” three goals per built-in, plus @handle and multi-agent cases โ€” which grades where a goal is sent and runs nobody.

An administrator installs it from Build โ†’ Capabilities โ†’ Orchestrator routing evals, then runs it from the Playground with the Orchestrator selected. Installing is idempotent and additive: cases you wrote yourself are never touched, and they run beside the pack. Each result records which rule decided โ€” an @handle or a tagged desk is deterministic, so a flip there means the product changed; a classifier decision is a lite-tier model's judgement, so read one flip as evidence rather than proof.