Tacnode™
Glossary
Context Vocabulary

What Is a Fleet Control Loop?

A fleet control loop is the automated feedback cycle a platform uses to steer many running AI agents at once. It observes the fleet, derives state such as spend to date, error rates, model quality, latency and abuse signals, adjusts a policy, budget or route, and the agents that are still running act on the adjusted setting. The loop's defining property is how long running agents keep acting on a superseded policy after it changes. Every moment of that interval is spent against the old policy.

Updated

What is a fleet control loop?

The control loop itself is a standard idea. The Kubernetes documentation on controllers describes it this way: "In robotics and automation, a control loop is a non-terminating loop that regulates the state of a system." Its example is a thermostat, which "acts to bring the current state closer to the desired state, by turning equipment on or off."

Fleet control loop is the name Tacnode uses, when assessing AI agent platforms, for the same pattern applied to a fleet of agents. A platform that hosts agents for many customers does not just run them; it steers them. It cuts off a tenant that has hit its budget, disables a tool after a guardrail fires, moves traffic away from a model whose error rate just rose, or throttles a workload that looks like abuse. Each of those is an automated decision with a consumer that acts on it immediately: the running agents.

That separates a fleet control loop from observability. A dashboard is read by a person, who decides on a timescale of minutes. In a fleet control loop the consumer of the derived state is an actuator, and the agents it steers keep working while the change propagates.

How a fleet control loop works

The loop has four stages:

  1. 1.Observe. Collect events from running agents: model calls, tool calls, costs, errors, latencies.
  2. 2.Derive. Compute fleet state from them: spend to date per tenant, error rate per model over the last minute, calls per agent per second.
  3. 3.Adjust. Change a policy, budget or route when the derived state crosses a threshold.
  4. 4.Act. Running agents read the new setting before their next step and behave accordingly.

The validity window of the loop is the time from a change in the fleet to the moment every running agent acts on the response to it. Illustrative timeline for a revoked budget:

TimeEvent
t = 0A tenant's spend crosses its cap
t + 15 sThe spend aggregate, rebuilt by a batch job, reflects it
t + 16 sThe controller writes status = 'suspended'
t + 76 sAgents that cached the policy at task start re-read it

For 76 seconds, agents keep spending against a budget that is already exhausted. The window is the sum of each stage's delay, and the largest delays are usually in deriving the state and in how often agents re-read the policy, not in the controller.

Agents shorten the last stage by checking the current policy and budget before each consequential step rather than once per task:

sql
SELECT p.status, p.policy_version, b.cap - b.spent AS remaining
FROM   tenant_policy p
JOIN   tenant_budget b USING (tenant_id)
WHERE  p.tenant_id = $1;

Why a fleet control loop matters in real-time systems

Every tick of the loop's window has a concrete cost: spend against a revoked budget, calls to a tool a guardrail just disabled, traffic sent to a model that has regressed. A running fleet makes the loop concurrent by construction, because many agents act on the same policies and budgets at once, and fleet-derived state changes with every call.

The useful question for a platform team is direct: when you change a policy, budget or route, how long do agents that are already running keep acting on the old one, and what does that cost? Fixing it means fewer stages between the event and the agent's read. When policies, budgets and the fleet signals derived from agent activity are held in one transactional store that both the controller and the agents read, a policy change commits once and the next read sees it. Tacnode holds this kind of decision state: aggregates such as spend to date can be computed on demand against the latest committed data, or kept in incremental views, refreshed incrementally on a schedule you set in SQL, typically every few seconds. How validity windows set the requirement is covered in the validity window entry.

FAQ

Related terms