Aug 6, 20263 min read

AI Software Factory Architecture

The components of an AI software factory and how a change flows through them, from intake to a deploy on your own cloud, with the control plane kept separate from the loop agents work in.

An AI software factory has two parts worth separating: the loop where agents do work, and the control plane where a platform team sets the rules that loop runs under. Keeping them apart lets agents move quickly while the limits stay under human control, and within that split a change flows through intake, an isolated build environment, validation, and deployment, with observability feeding back into the next task.

How one task moves through an AI software factory, from intake to a deployed change.

TaskLinear · Slack · GitHub · terminal
dev loop · a preview environment per change
agent
Build against the database and queues
review
Validate in a running environment
your cloud
Provision & deploy
observe
Traces, logs, metrics
One task moving through an AI software factory.

The dev loop and the control plane

The dev loop is where each task is picked up, built, and validated, while the control plane holds configuration, permissions, and deployment policy, managed by the platform team rather than touched per change. Agents read the policy but do not set it, and because it was reviewed once when it was set, individual changes do not each need a platform review, and the boundaries change in one place when the platform team decides to change them. Validated changes can then deploy quickly, since the review that carries weight already happened when the policy was set.

Intake and the agent runtime

A task enters from an issue tracker, a chat message, a pull request comment, or the terminal, carrying enough context for an agent to act on, and it is routed to an agent that runs in an environment of its own, created for the task and discarded after. Isolation at this layer lets many agents run at once without shared state causing collisions, and each environment holds the agent's checkout, the compute it runs on, and the infrastructure its change needs. The choice of coding agent is made here rather than fixed by the platform.

Infrastructure and validation

Resources are declared in the application code through an infrastructure SDK, so the factory reads those declarations and creates the matching database, queues, and buckets inside each environment automatically, and the agent develops against them instead of mocks. The same declarations drive the production deploy, so the environment an agent tests in and what runs in production come from one source. Validation then turns each change into a running environment a person can exercise, backed by the tracing and logging the platform already collects, so a reviewer runs the feature and inspects traces rather than reading the diff to guess whether it works. See how to give agents infrastructure to test against for this layer in detail.

Deploy and observability

On merge, the deploy pipeline analyzes the code, works out the infrastructure the change requires, and generates the cloud configuration for it, so IAM, networking, and resource creation come deterministically from the declarations rather than from the agent, applied to your own cloud account within the boundaries set in the control plane. The running system then emits traces, logs, and metrics, which serve both operations and the next task, since an agent picking up related work has the context of how the system actually behaves. How that deploy stays safe is covered in how to let agents deploy safely to AWS or GCP.

Encore is one system built to this shape, with its open-source SDK as the infrastructure layer, though the architecture holds for any tool that declares infrastructure in code and provisions it deterministically.

For the definition behind this architecture, see what is an AI software factory. To build one, see how to build an AI software factory.

Frequently asked questions

What are the main components of an AI software factory?

Task intake, an agent runtime with isolated environments, infrastructure provisioning inside those environments, a validation layer that produces a running environment per change, a deterministic deploy pipeline, and a control plane where the platform team sets policy. Observability runs across all of it and feeds back into the next task.

Why separate the control plane from the dev loop?

So agents can move quickly while the limits stay under human control. The platform team sets configuration, permissions, and deployment policy once in the control plane, and the dev loop is where agents build and validate within it, so individual changes do not each need a platform review once that policy is in place.

How is deployment configuration generated?

From static analysis of the application code. Resources declared through an infrastructure SDK are read by the deploy pipeline, which generates the same IAM, networking, and provisioning every time for a given set of declarations, rather than the agent writing cloud configuration by hand.

~/orders — claude
Claude Code
Claude Code v2.1.180Opus 4.8 · Encore MCP connected~/orders
Infra from codereading the code…
SQLDatabaseorders · postgres
Topicorders · pub/sub
Bucketdeclared in code
not running yet

Automated infrastructure for humans and agents

Let agents build and validate features with real infrastructure in the dev loop. Encore automatically provisions infrastructure, from local dev to production in your cloud on AWS/GCP.