Guides · Updated 2026-08-23

Agentic orchestration: what it actually means once you run more than one agent

Agentic orchestration is the layer that decides which agent runs, when, with what input, and what happens to the output. You do not need it for one agent and rarely for two. It becomes real at the third, when two agents start writing to the same record, one agent triggers another in a loop, the token bill stops matching anyone's mental model, and nobody can say which agent did the thing that went wrong. This guide covers those failures and what fixes each one, including the case where the fix is a database table and a cron job.

By Ashutosh Upadhyay, founder of Cognio Labs. We build and run agent fleets for 20–50-person companies; the numbers below are from those deployments and from named external sources, not from a survey.

What is agentic orchestration in plain terms?

It is the answer to four questions, asked continuously: which agent handles this work, when does it run, what does it get as input, and where does its output go. Everything people file under orchestration (routers, planners, queues, retries, budgets, traces) is machinery for those four. Strip the vocabulary away and you have a dispatcher.

The distinction that matters is against ordinary workflow automation. A Zapier or n8n workflow knows all its steps before it runs, so the tool only has to execute them in order. An agent decides at runtime. It reads the email, judges it a refund exception rather than a refund, and routes it down a path the flowchart never drew. That single property is what drags in the rest of the machinery: you cannot pre-plan retries for a step that did not exist when you deployed, and you cannot budget work nobody scheduled.

Orchestration is not a tool you buy. It is the set of decisions you are already making badly by hand.

When do you actually need agentic orchestration?

Honestly: not at one agent, and usually not at two. One agent needs a trigger, a retry, and somewhere to log failures. That is a cron job and a try/except, and calling it orchestration only makes it sound expensive. Two agents that never read or write the same data are two separate programs. Run them separately and enjoy it.

The trigger is coupling, not headcount. You need an orchestration layer the moment agents share state, hand work to each other, or can fire each other. That usually lands around the third agent, because the third one is the one that finally overlaps with the first two.

From our deployments

A 65-year-old lawyer in Minnesota, non-technical, small practice, got more out of a personal agent team than any founder we have set up. Three to five agents: intake and client comms, drafting and document review, billing and admin backoffice. Self-sufficient in about two weeks, saving 5–10 hours a week. He has no orchestration layer at all. The agents are split cleanly by domain and he dispatches between them himself, which works because he already knew how to manage a team of people — delegate, set expectations, review the output.

That is not a story about a simple case. It is five agents, run in production, daily, with zero orchestration software. What made it possible was the partition: no two of his agents write to the same thing, so there is nothing to coordinate. Partitioning your agents by domain is the cheapest orchestration decision available, and almost nobody makes it deliberately.

The cheapest orchestration layer is a clean split of responsibilities plus one human who knows what good work looks like.

What breaks when you run three or more agents?

Five things, in roughly this order, and none of them appear in a framework tutorial because tutorials run once on a clean database.

  1. Two agents write to the same record. The enrichment agent and the follow-up agent both update the same CRM contact. Last write wins, and the loser's work is gone without an error anywhere.
  2. An agent triggers an agent that triggers it back. Agent A writes a note; the note is a webhook; the webhook wakes agent B; B updates the record; the update wakes A. Nothing crashes. It just runs all night.
  3. Fan-out nobody metered. One request becomes four sub-tasks becomes sixteen tool calls. The unit of spend stopped being "a message" and nobody changed how it's tracked.
  4. No single place to see what ran. Three agents, three log surfaces, three tabs, and the interesting event is the handoff between them, which lives in none of the three.
  5. Nobody can answer "which agent did this?" The bad record has no author. And because agents are non-deterministic between runs, you cannot re-run to find out.

Anthropic's engineering team described the same class of problem from the inside of their own multi-agent research system in June 2025: "minor changes cascade into large behavioral changes", agents are "stateful and errors compound", and their early agents made mistakes like spawning 50 subagents for simple queries and distracting each other with excessive updates. If that happens to the team that builds the model, it is not a skill issue on your side.

Every one of these five failures is silent. That is the actual problem. Agents fail by producing confident work nobody asked for.

How do agents hand work to each other?

Three mechanisms, and the choice matters more than the framework you wrap around it. Shared record with a status field: agent A writes a row and sets it to ready_for_review; agent B picks up rows in that state. Direct call: agent A invokes agent B and waits for the reply inside its own context. Event or message queue: agent A publishes a fact, and whichever agents care subscribe.

For internal business agents, the shared record wins nearly every time. The handoff is durable, so a crash mid-flight does not lose the work; it is inspectable, so you can see what state everything is in with one query; and it decouples the two agents, so B can be down for an hour without breaking A. Direct calls feel natural and cost the most, because the child's output gets copied into the parent's context, and you pay for it on every subsequent turn.

The fix for that is worth stealing: pass a reference, not the payload. Anthropic's multi-agent write-up describes subagents storing their work in external systems and passing lightweight references back to the coordinator, which stops large outputs from being copied through conversation history. In practice that means agent B writes the draft to a document and hands back an ID. It is the difference between a handoff that costs 200 tokens and one that costs 20,000.

One thing we learned the expensive way: a handoff is also a credential boundary. Going from one user to a team turned a shared agent instance into a shared-secrets problem in our deployments. Whoever used it inherited whatever access it held. The fix was isolation per user or department with scoped credentials, decided before the agents started passing work around rather than after.

If a handoff exists only inside a conversation, it does not exist. Write it down or lose it.

Who decides which agent runs — a router, a planner, or a plain queue?

Three designs, in ascending order of how much you are trusting a model. A queue means the work item already names its agent, decided by whatever created it. A router means one cheap classifier reads the input and picks from a fixed list. A planner means an LLM decides at runtime which agents to run and in what order.

Pick the queue if you can enumerate the categories of work. You can, more often than you think: invoices, refunds, inbound leads, contract reviews. Pick the router when the input is genuinely ambiguous at arrival, which is mostly email and chat, and keep the destination list short enough to read on one screen. Pick the planner when the task is open-ended research and the set of steps is not knowable in advance.

Planners are the fashionable choice and the one we deploy least. Anthropic's own assessment is blunt on the limit: "LLM agents are not yet great at coordinating and delegating to other agents in real time." A planner also destroys your cost model, because the thing choosing how much work to do is the thing you are paying by the token. If you do run one, bound it the way they did, with explicit rules for how many subagents and tool calls a given complexity of task is allowed.

Let a model choose the plan only when you genuinely cannot list the plans.

How do you stop two agents fighting over the same record?

The default rule: one writer per record type. Every other agent reads. If the follow-up agent needs the contact updated, it writes a request that the contact-owning agent picks up, rather than reaching into the record itself. This costs you a little indirection and removes the entire class of problem.

Where two writers are genuinely unavoidable, the fixes are the same ones every concurrent system has used for forty years. Claim the row before working on it with a status column plus claimed_by and claimed_at, so a second agent sees it is taken. Check a version number on update and fail loudly if it moved underneath you, instead of overwriting. And put an idempotency key on every external side effect, because the retry that saves you from a timeout is also the retry that sends the customer a second invoice.

This is the part people expect their agent framework to handle. It does not. LangGraph, CrewAI and AutoGen orchestrate calls between agents; none of them knows that your CRM contact is a contended resource. Concurrency control lives in your database and in the API contracts of the systems the agents touch, exactly where it lived before any of this was called agentic.

Give every record exactly one agent allowed to write to it. Everything else reads and asks.

How do you keep cost predictable when agents call agents?

Start from the published multiplier so you are not guessing. Anthropic reported in June 2025 that agents typically use about 4x more tokens than chat interactions, and multi-agent systems about 15x more than chats, and said plainly that multi-agent architectures only make economic sense where the task is valuable enough to pay for it. Treat 15x as the shape of your bill, not as an outlier.

The spend that actually kills projects is not the busy agent, though. It is the idle one.

From our deployments

A 20–50-person company wanted a personal agent for every employee, each with its own token budget. Spend reached roughly $3,000–5,000 a month and they abandoned the programme within about two months. Two causes, both orchestration decisions: always-on agents burning tokens on heartbeats, polling, memory refresh and cron loops while nobody was asking them anything, and a flat rollout, where everyone got one and few used one. What we do now instead: shared departmental agents first, budgets per role rather than per person, idle loops killed, and cheap tasks routed to cheap models.

Four controls hold the line, and all four are things you build once. Cap the fan-out: a hard limit on how wide and how deep sub-agent spawning can go, enforced in code rather than requested in a prompt. Put a token ceiling on each run and fail the run when it is hit, loudly. Meter per run, not per month, because a monthly invoice tells you that something went wrong three weeks ago. And audit the idle loops on a schedule: every heartbeat, poll and refresh should have a named reason for existing, or it gets deleted. Per-department budgets and idle-loop audits are a standing deliverable in our agentic OS builds, because agent bills fail quietly and the controls have to be installed rather than hoped for.

For a fuller cost model, covering build fees, running costs and where the money actually goes, our guide on AI agent token costs breaks the bill down line by line.

Budget the agents that are doing nothing. Those are the ones that end programmes.

How do you trace what an agent did after the fact?

You propagate one run ID through every hop and write a row per step. Minimum viable columns, and we do mean minimum: run_id, parent_run_id, agent, agent_version, trigger, input_ref, output_ref, tokens, cost, status, started_at, ended_at. That table answers "which agent did this, what did it read, what did it cost, and what woke it up" with one query. Most teams building agent fleets do not have it, which is why post-mortems turn into archaeology.

Why it cannot be skipped: you cannot reproduce the failure. Agents make different decisions on identical input, so re-running the job tells you what it does now, not what it did on Tuesday. Anthropic hit precisely this. Users reported agents "not finding obvious information" and the team could not see why until they added full production tracing, which is what let them diagnose failures systematically rather than guess between bad queries, bad sources and tool errors.

If you want the trace to outlive your tooling choices, use the OpenTelemetry GenAI conventions rather than a vendor's schema. The OpenTelemetry project's March 2025 post on AI agent observability makes the reason explicit: because observability and evaluation tools come from many vendors, standardising the shape of agent telemetry is what avoids lock-in to a vendor- or framework-specific format. There is a privacy dividend too. Anthropic monitor agent decision patterns and interaction structures without recording the contents of individual conversations, which is the pattern to copy if your agents touch client data.

If you cannot answer "which agent did this and what did it read" in one query, you do not have orchestration. You have agents.

Do you need a framework — or a queue and a cron?

For a 20–50-person company running a handful of internal agents, a queue and a cron is usually the right answer, and we say that knowing it sells nothing. This is also not a contrarian position. Anthropic, writing in December 2024 after working with dozens of teams building agents, found that the most successful implementations used simple, composable patterns rather than complex frameworks, and warned that framework abstraction "can obscure the underlying prompts and responses, making them harder to debug". Their advice was to start with the LLM APIs directly and to understand the code underneath if you do adopt a framework.

DimensionPlain queue + cronWorkflow engine (Temporal, n8n)Agent framework (LangGraph, CrewAI)Managed platform
What it actually isA database table of pending work, a worker that picks items up, and cron.A durable workflow runtime that remembers where a long-running job got to.A library for defining agents, tools and the graph of calls between them.A hosted agent platform with the runtime, memory and connectors already wired.
Time to something runningAn afternoon, in whatever language you already use.Days for n8n. Weeks for Temporal, mostly spent learning it.Days to a demo. Weeks to something you'd let touch a customer.Hours to first output, then weeks of connector and permission work.
Who has to maintain itAnyone who can read SQL. That is the whole point.One person who owns the engine. A real dependency, not a weekend one.Whoever wrote it, at that framework's version, forever.The vendor maintains the runtime; you maintain the skills and access.
Tracing you get without extra workWhatever columns you added. Usually enough, because you chose them.Strong. Full run history and replay are the product.Varies. Often good in the framework's own viewer, thin outside it.Good inside the platform, harder to join with your own systems.
Cost behaviourPredictable. Fan-out only happens where you wrote a loop.Predictable runtime cost; token cost is still yours to cap.The riskiest. Agents spawning agents is one line of config.Per-seat or per-run pricing, plus token spend that varies with usage.
Where it failsGenuinely branching, open-ended work that you cannot enumerate in advance.Overkill for four cron jobs; Temporal's learning curve is real.Debugging. Abstraction hides the prompt that actually went to the model.Anything the platform's connectors don't reach, and data you can't send out.
Pick this whenYou run 3–10 agents on known task types inside a 20–50-person company. Most of you.Jobs run for hours or days, must survive restarts, and money is at stake.You are building agents INTO a product, and the graph is the product.You want company-wide agents in weeks and have no engineering capacity to spare.

The honest read of that table: the plain queue wins on setup time, on maintenance, on cost behaviour, and on being understandable by someone who did not build it. It loses on exactly one thing, open-ended work whose steps you cannot enumerate, and that is a smaller share of internal business work than the framework docs imply. Temporal earns its place when a job must survive a restart and money is on the line. A framework earns its place when the agent graph is the product you sell.

One caveat we will not skip: a queue you wrote yourself is a queue you maintain yourself, and the day you need distributed timers, backpressure and exactly-once semantics, you will have rebuilt a worse Temporal. Watch for that day. Most teams never reach it.

Choose the smallest orchestration that fails in ways you can see.

How does agentic orchestration relate to an agentic OS?

Orchestration is the machinery. An agentic OS is the operating model that decides what the machinery should do: which agents exist, which department owns each one, which human approves the irreversible actions, and what shared knowledge every agent answers from. Routing and locking are engineering problems. Ownership and approval are management problems, and they are the ones that decide whether the fleet is still running in six months.

The sequence is visible in our rollouts. The founder and exec team go first; the first department is onboarded 2–4 weeks later; roughly 30% of staff are active users at three months. The engagement runs a couple of months of back-and-forth: skills per department, choosing or building the connectors, training, and restructuring the agent hierarchy as real usage reveals what matters. That restructuring is the tell: the orchestration graph you need at month three is not the one you designed at week one, which is another argument for a layer that is cheap to change.

If you are earlier than that, at one agent or none, the sequencing question is answered in our guide on how to implement AI agents, and the knowledge layer that agents read from is covered in the knowledge readiness audit.

Orchestration decides which agent runs. An agentic OS decides who is accountable when it runs badly.

Who should not build an orchestration layer yet?

Four groups, and we tell them so on the call rather than after the invoice. If you run one or two agents that do not touch the same data, you are being sold a solution to a problem you have not got. Separate them cleanly and revisit at the third. If nobody on your team can read the code or the config, building custom orchestration hands you a system you cannot debug at 6pm on a Friday; take the managed platform and accept its limits. If your agents are still failing on their own tasks, orchestration will coordinate the failures faster, nothing more. And if the reason you want it is that a vendor demo showed agents talking to each other, that is a demo, not a requirement.

Where we lose honestly: a competent engineer who already runs your background jobs can build the queue, the claim logic and the trace table in a week or two, and they will maintain it better than we would because they already carry the pager. We are worth hiring when the orchestration question is tangled up with the operating-model question (which agents should exist, who owns them, what they are allowed to touch), which is what our agentic OS engagements cover, and when nobody internally has a spare month.

Orchestration is not what makes agents work. It is what stops working agents from damaging each other.

Frequently asked questions

What is agentic orchestration?

Agentic orchestration is the layer that decides which agent runs, when, with what input, and what happens to its output. It covers routing work to the right agent, handing results between agents, stopping them from writing over each other, capping how much they spend, and recording what ran so you can answer questions afterwards. It is not a product category. For most companies it is a queue table, a worker, a few rules, and a log.

How is agentic orchestration different from workflow automation?

A workflow knows every step before it starts, so the automation tool just executes the sequence. Orchestration is what you need when a step decides what the next step should be. The agent reads the invoice, judges it an exception, and routes it somewhere the flowchart never anticipated. That single difference is what forces the extras: retries that don't duplicate side effects, budgets on work you didn't schedule, and a log that can explain a path nobody drew.

When do you actually need an orchestration layer?

Not at one agent, and usually not at two. One agent needs a trigger and error handling; two agents that never touch the same data can simply run side by side. You need an orchestration layer when agents share state, trigger each other, or contend for the same record. In practice that is around the third agent, and it is triggered by coupling rather than by count.

Do you need a framework like LangGraph, CrewAI or AutoGen?

For a 20–50-person company running a handful of internal agents, usually not. A queue table, a worker process and cron will do the job with far less to debug. Anthropic's engineering team reported the same pattern in December 2024: across dozens of teams, the most successful implementations used simple, composable patterns rather than complex frameworks, and they warned that framework abstraction obscures the prompts and responses underneath, which makes debugging harder. Frameworks earn their cost when the agent graph is the product you sell, or when you genuinely need dynamic planning you cannot enumerate.

How do you stop two agents from writing over each other?

Give each record exactly one agent that may write to it; everyone else reads. Where two writers are unavoidable, use the same tools any concurrent system uses: a claim on the row (a status field with who claimed it and when), an optimistic version check on update, and an idempotency key on every external side effect so a retry cannot send the same email or create the same invoice twice. No agent framework solves this for you; your database does.

How much do multi-agent systems cost to run compared with one agent?

More than teams expect, and the multiplier is public: Anthropic reported in June 2025 that agents typically use about 4x more tokens than chat interactions and multi-agent systems about 15x more. The cost that kills projects is not the busy agent, though. It is the idle one. A 20–50-person client of ours gave every employee a personal agent with its own token budget; spend hit roughly $3–5k a month from heartbeats, polling, memory refresh and cron loops with nobody asking anything, and they shut it down within about two months.

How do you find out which agent did something after the fact?

By propagating one run ID through every hop and writing a row per step: run ID, parent run ID, agent name and version, what it read, what it wrote, tokens spent, and how it ended. Without that, a wrong record has no author, because agents are non-deterministic between runs and you cannot reproduce the path by re-running it. Anthropic's team made the same point about their own research system. Adding full production tracing was what let them diagnose why agents failed instead of guessing.

How does agentic orchestration relate to an agentic OS?

Orchestration is the machinery: routing, handoffs, locks, budgets, logs. An agentic OS is the operating model around it: which agents exist, which department owns them, which human approves the irreversible actions, and how knowledge is shared between them. You can have working orchestration and no operating model, and it is the usual reason a technically sound agent fleet still gets abandoned: nobody's name was next to it.

Sources

Related reading

Bring us your third agent

30 minutes, no pitch. Tell us what your agents do and where they overlap, and we'll tell you which of the five failures you already have, including "you need a queue table, not us."