Justin drew four boxes on the whiteboard. He hadn't used the whiteboard in weeks—the factory's work was done by agents, not by diagrams—but some explanations still needed ink on a surface you could touch.
He labeled them. Attractor. CXDB. Leash. Agate.
"Explain them to me like I'm new," Navan said. He wasn't new. He'd been there since the beginning. But he wanted to hear Justin say it, because Justin had a way of compressing an entire architecture into a sentence, and Navan wanted to write that sentence down.
Justin tapped the first box. "Attractor orchestrates. It takes a DOT graph—nodes and edges—and walks it. Each node is an AI task. Code generation, review, conditional branching, parallel fan-out. The graph is the plan. Attractor executes the plan." He drew an arrow from Attractor to the second box.
"CXDB remembers. Every turn of every conversation every agent has ever had. Immutable. Content-addressed. Branched like a DAG. You can fork any conversation at any point without copying the history. The agents don't lose context because CXDB never forgets." Arrow to the third box.
"Leash secures. Every agent runs inside a container. Every syscall is monitored. Every filesystem access, every network connection, every tool call. Cedar policies govern what the agents can and cannot do. Leash is the boundary between the agents and the world." Arrow to the fourth box.
"Agate converges. You give it a goal—a GOAL.md file—and it runs the loop. Interview, design, sprint planning, implementation, assessment. Over and over. The agents are chaotic, but the loop is convergent. Agate pulls the code toward the goal the way gravity pulls water downhill."
He stepped back. Four boxes. Four arrows. A circle.
"Together," he said, "they are the factory."
Jay, who had been listening from his desk with his chair turned around, said: "And apart?"
"Apart they are just tools." Justin set the marker down. "Attractor without CXDB has no memory. CXDB without Leash has no boundaries. Leash without Agate has no direction. Agate without Attractor has no execution plan. Each one is necessary. None is sufficient."
The silence that followed wasn't empty. It was the kind of silence that happens when something obvious becomes visible for the first time. They'd been building these four projects in parallel for months, and they'd always understood, intellectually, that the projects depended on each other. But Justin's four boxes made the dependency tangible. Not a dependency graph in a package manager. A dependency of identity. Each project was defined by its relationship to the others.
Navan wrote it all down. Not the diagram—he could redraw that. The sentences. Attractor orchestrates. CXDB remembers. Leash secures. Agate converges. He underlined the verbs.
"Four verbs," he said. "The whole factory is four verbs."
Jay turned his chair back to his terminal. On his screen, the overnight agent runs were finishing. Attractor had orchestrated a pipeline of fourteen tasks. CXDB had stored 4,300 new turns. Leash had blocked two unauthorized network requests. Agate had pushed three scenarios past the 0.95 threshold.
Four verbs, working in unison. The factory was not any one of them. The factory was the sentence they formed together.
Justin erased the whiteboard. He wouldn't need the diagram again. The factory would keep running whether anyone drew it or not.
"The factory is not any one of them. The factory was the sentence they formed together." This is the best one-line description of microservice architecture I've ever read, and it's in a fanfic.