
Seven AI agents in tabs. They can't see each other. When one finishes, it stops. 46 million lines of code and a single human. I need to send orders without walking to each tab.


I know this problem. A hundred thousand riders across a thousand miles. No radios. My solution was not faster horses. It was the yam — relay stations every thirty miles.
But the yam was not my invention. What I invented was the reason a rider would stop at the station instead of riding past it. I shattered tribal loyalty. I mixed warriors from different clans into the same units. Promoted blacksmiths' sons to command tumens. A rider obeys the station, not his cousin.
Store-and-forward networking. The station is a buffer. The horse is the channel. The message is the signal.
You're describing packet switching. In the thirteenth century. At 300 kilometers a day — nothing matched it until the telegraph.
Grandfather built the yam. I scaled it. Ten thousand stations. Three hundred thousand horses. Sixty thousand kilometers of routes.
I also built a miniature steppe inside the Forbidden City. My advisor Yao Shu said: "One can conquer the empire on horseback, but one cannot govern it on horseback." I proved him half right.
Our relay station is SpacetimeDB. Our messages are directives. Instead of horses, Claude Code processes check a shared database every time they pause. Same pattern. Same trick. Four thousand years later.


OK, forget the history for a second. The whole system is one trick.
Claude Code fires a "Stop" event every time it finishes talking. We catch that event with an HTTP hook. The hook checks a database table. If there's a pending instruction, we tell Claude: "Don't stop. Do this instead."
Claude sees the instruction and keeps going. When it finishes that, the Stop fires again. No more instructions? Fine, stop. That's it. That's the whole thing. Everything else is bookkeeping.

The horse pauses at the relay station. If there is a new order, it rides on. If not, it rests.
The rider does not need to know about the other riders. Only the station needs to know.
This is correct. Decentralized execution. Centralized memory. It is how I controlled a million men across a continent.
The agent doesn't even know it's being orchestrated. It thinks you typed the next message. The complexity is hidden behind the simplest interface: keep going or stop.
And if the bridge goes down? The hooks fail silently. Every tab keeps working. You can toggle orchestration like a light switch. The system degrades to manual.
You can register a tab you're already typing in. Then send it directives from another terminal. Remote control for your own conversation.


My Mobile Guard — the Tulai'a Mutaharrika — was not a cavalry wing. It was four thousand veterans under my personal command. A roving reserve. I moved them to whichever point of the line was breaking.
The messenger did not need to understand the battle. He only needed to deliver the order to the correct point. Your cavalry directive is the same. The command names the agent. The agent executes.
Priority ordering. When I crossed the Alps, the most critical order — the elephants cross first — had to arrive before set up camp. Your -p 10 is the same principle.
I was dismissed by Umar because soldiers followed me rather than God. The most capable commander, removed for being too charismatic.
Your system solves this. The agents follow the directive table, not any single commander. If you are asleep, the directives still execute. The station does not need the general.
I died in bed. In shame. "May the eyes of cowards never find rest in sleep." Build systems that do not depend on any single rider.

The SDK is six types. AgentOptions builds the CLI flags. SdkMessage is the enum — System, Assistant, User, Result, StreamEvent. AgentHandle gives you recv(), send(), kill().
Under the hood it's claude -p --output-format stream-json. But with Rust types. The compiler catches what the tests miss.

I kept a polyglot army — Libyan, Numidian, Iberian, Gallic, Italian — in Italy for fifteen years without resupply. No mutiny. Not because I was generous. Because every man could see the mission.
Your spawned agents have the same property. They can read the project. They have tools. They have the prompt. They don't need you standing over them. They need a clear order and a way to report back.
But know the limits. My paper money worked for forty years, then hyperinflation destroyed it. My invasions of Japan failed — 4,400 ships, the largest fleet before D-Day, destroyed by typhoon.
A system designed for one domain does not scale to another by increasing inputs. Your cavalry agents work in code. They may not work in other domains. Know the terrain before you charge.
The game IS the interface to the infrastructure. You don't manage agents. You play a game where the characters happen to be real AI processes. That's the UX insight. Make the control panel into something you actually want to look at.
The warrior and the horse are one. The identity of the agent is the identity of the character. When you send a directive to "scout," you send it to Feynman. When Feynman completes a quest, the agent earns experience.
This is the Keshik. My imperial guard was simultaneously bodyguard, officer academy, and hostage system. Your RPG is simultaneously game, status page, and orchestration layer.
A rider does not begin by leading a charge. First, sit the horse. Then steer. Then fight from the saddle. Then command others who fight from the saddle.
I trained men by sending them on raids — small, recoverable missions — before committing them to the desert march. Your ladder should do the same.
cavalry status · cavalry events · cavalry agents
cavalry register · cavalry directive · cavalry broadcast
cavalry spawn · cavalry recall
Extend rpg-module tables · Add dispatch.rs handlers
use cavalry::sdk::{spawn, AgentOptions, SdkMessage};


The secret of the Mongol cavalry was never the horses. It was never even the relay stations.
It was that I replaced every bond of blood and tribe with a bond of institution. A rider could be reassigned to any tumen and still fight, because the system was the same everywhere. Your agents can be spawned, recalled, redirected — because the protocol is the same everywhere.
Build more stations. The empire is the network.
We will.