Last night, we put a conductor in front of our agents, with five patterns in our pocket. But a conductor follows a score that runs left to right — and the real world doesn’t run left to right. If the tests fail, go back. If the case is sensitive, call a human. Wait until those two are done before moving on. A score doesn’t know how to write that.

You know what does? The railway network: stations, tracks, switches that send the train left or right depending on the load, return loops, mandatory stops at the control station. Describing orchestration as a network of rails is graph-driven agent orchestration — the approach every framework is converging on. All aboard — it’s not rocket science.

What the score can’t write

Take yesterday’s patterns again: the pipeline is a straight line, the fan-out a fan. As long as the route is known in advance, all is well. But as soon as real flow shows up, the line breaks:

  • the condition: “if the review finds a critical issue → back to the developer; otherwise → deploy”;
  • the loop: “regenerate while the tests fail — but no more than three times”;
  • the junction: “the synthesis only leaves once all three reviewers have handed in their copy”;
  • the station stop: “before merging, a human approves” — the checkpoint from two days ago, promoted to a citizen of the flow.

You can bury all of that in a lead agent’s prompt and hope. Or you can lay it on rails: that’s exactly the choice we’re about to tool up.

The network, piece by piece

An orchestration graph uses the same grammar as yesterday’s knowledge graph — nodes and edges — but with a completely different meaning:

  • A node = a station, that is, a step. And surprise: anything can be a station — an agent (probabilistic), a classic function (deterministic: parse, validate, count), or a human (the control station where the train waits for the green light).
  • An edge = a track, the transition from one step to the next. An edge can be unconditional (always this track) or carry a switch: a condition, evaluated on what the train is carrying.
  • The state = the freight car. What travels from station to station: the diff to review, the accumulated verdicts, the retry counter. Each station reads the car, adds to it, sends it back down the track.
  • The loop = the return track — allowed, but bounded (three laps max), otherwise you’ve just built a merry-go-round.
  • The checkpoint = a photo of the freight car at the station. State is persisted at every step: if the network goes down at station 7, you resume at station 7 — not back at the depot.

Yesterday’s five patterns, seen from above

Gain some altitude, and look at yesterday’s patterns as network shapes: the pipeline is a straight line; the fan-out, a star that diverges then converges at a junction; orchestrator-workers, a star whose branches are decided en route; the handoff, a switch whose decision belongs to the station; the judge panel, a star converging into a voting station.

That’s the article’s lightbulb moment: the five patterns aren’t five different tools — they’re five shapes of the same graph. That’s why frameworks converge: offering the graph means offering every pattern, plus every one you’ll draw yourself.

Why rails change everything

The deep benefit fits in one sentence: determinism takes back the structure, the probabilistic stays confined to the stations.

  • The structure becomes code: versioned, reviewed in PR, testable — and drawable. An orchestration graph writes itself as a diagram as code: the doc and the execution are the same thing.
  • Observability comes for free: every edge crossed gets logged. Yesterday’s “debugging by ear” becomes reading an itinerary: the train went through these stations, in this order, with this freight.
  • Recovery is native: thanks to checkpoints, an incident only costs the current step — precious when the full journey runs in hours and tokens.
  • The human gets a station of their own: human-in-the-loop is no longer a “remember to ask” in a prompt, it’s a node — the train cannot pass without the green light.

Tool-wise: this is the model of LangGraph — which popularized the name — and, in our .NET world, of Microsoft Agent Framework’s workflows: executors (the stations) connected by conditional edges (the switches), with state and checkpoints. Copilot’s subagents, seen this morning, are the simple star; the graph is the generalization.

Two graphs — don’t mix them up

This week made you cross paths with two graphs — and the confusion would be easy:

  Knowledge graph (yesterday) Orchestration graph (today)
The nodes are entities (Payment, ACME) steps (agents, code, humans)
The edges are relationships (depends on) transitions (on failure, go back)
The graph describes what the AI knows what the agents do
You traverse it to answer execute

And they snap together naturally: inside a station of the execution graph, an agent may well query the knowledge graph — the detective consults his board while the train is running. Two mechanics, two roles, zero rivalry.

A word of honesty

Rails have a price, and the ticket isn’t cheap:

  • Over-engineering lurks. Three stations in a straight line = a pipeline = thirty lines of script. The graph only starts paying with switches, loops or recovery. Drawing a railway cathedral for a one-way trip is the classic first-project trap.
  • Shared state is a craft. The freight car everyone reads and writes is the problem of distributed systems — write conflicts and ballooning state schemas didn’t vanish because we said “agent”.
  • Rails constrain. An agent on rails will never take the brilliant shortcut its freedom would have allowed. It’s a deliberate trade: flexibility for predictability. For a production flow it’s almost always the right trade — but make it with your eyes open, and measure it.

The practical advice: draw on paper first. If your marker never draws a diamond (condition) or a return arrow (loop), put the framework away — a script will do.

In short

  • The orchestration graph = stations (agents, code, humans), tracks (transitions), switches (conditions), freight car (state), photos of the car (checkpoints).
  • Yesterday’s five patterns are five shapes of the same graph — learn it once, own them all.
  • The deep win: deterministic structure, confined judgment — traceable, resumable, drawable, with the human as a real station.
  • Don’t mix up this week’s two graphs: one knows (knowledge), the other does (execution) — and they snap together.
  • The graph pays when there are conditions, loops or recovery — otherwise, an honest script does the job.

Yesterday’s conductor improvised with talent; today he has a network map in front of him — and you now know how to read both maps of the week: the one of knowledge, the one of work. Next time a train of agents derails at 3 a.m., you’ll know exactly which station to look at. And that, honestly… is not rocket science.