Docs menuThe software factory

Docs

The software factory

A software factory is the system around your agents: what decides their work, keeps them running, checks their output, and tells you when you're needed. We build it from three components, and each does one job.

  • smalltalk decides and records the work. It runs coding agents as durable seats, hands them missions, and keeps every fact in a graph.
  • pty keeps programs alive. Each agent's harness runs in a persistent terminal session that you can peek at or attach to.
  • fabric connects machines. It gives other tools a local socket that reaches a service on another machine.

Each one also works on its own. pty is useful for any long-running program, and fabric for any service you want to reach from another machine.

How a mission becomes processes

Here is the path one piece of work takes.

  1. You declare a seat and publish a mission in KDL, or let launch draft the mission from a request.
  2. You start a run, and smalltalk records it in the graph.
  3. The daemon's reconciler compares what the graph says should be running with what is running. It starts the run's declared agents, commands and terminals. Each harness runs its real interactive interface inside a pty session.
  4. When a step becomes ready, smalltalk sends a durable wake to the assigned seat through the harness's native driver. It never types into the agent's terminal.
  5. The seat claims the step, does the work, and reports back. Products and gates decide whether the step passed.
  6. When the run ends, smalltalk stops everything the run owns.

The graph is the source of truth, not any process. When the daemon restarts, it adopts the pty sessions that survived instead of launching new ones, and picks up from the graph.

Across machines

Each machine runs its own smalltalk daemon and is a complete system on its own. Machines can join a fleet that replicates the graph by exchanging authenticated claims. fabric carries that traffic, and smalltalk's own listeners stay on loopback.

fabric carries terminals too. A machine exposes pty's remote server through fabric, so pty attach --remote reaches a session on another machine. fabric moves the bytes; pty owns the session.

The model matters less than the harness. The harness matters less than the agent runtime. The runtime matters less than the mission. The mission is what you care about, so it is what everything else is built to keep safe.