# Agent teams: state machines that drive multi-agent work (v1.17.0 to v1.19.2)

> Source: <https://loomcycle.dev/blog/agent-teams-state-machines-that-drive-multi-agent-work.html>
> Published: 2026-07-13 05:48:50.599592+00:00

RFC AP + RFC BD add a first-class multi-agent workflow primitive to loomcycle. A TeamDef is a state-machine graph over your agents: states, transitions (success / pushback: / conditional:, bounded by a per-state max_iterations), and per-state handlers (agent | parallel + consolidator | consolidator | terminal). Content-addressed, tenant-scoped, versioned — peer of AgentDef / SkillDef / VolumeDef. Two drivers run the same graph: a deterministic op=run walk engine (pure Go, testable end to end, right for scheduled/headless pipelines) and the bundled LLM team/orchestrator agent (reads the graph as its map, drives transitions, keeps a human in the loop through the Interruption tool). The Web UI teams board is a two-pane editor with graph JSON on the left, a live Mermaid state diagram on the right, dry-run render on unsaved edits (no persist), a draggable splitter, a starter-template dropdown, and a tenant-scoped delete op. v1.19.0 filled the deferrals: parallel fan-out plus consolidator execution in the deterministic engine (three wait modes: all, any, at_least:N), durable Document-backed boards that survive restarts (board_chunk_id), interrupt-on-cap that escalates an iteration-cap overflow to a human with continue / reroute / abort options, gRPC RPC + @loomcycle/client + Python adapter methods at 1.19.0 parity, and per-tenant credentials for raw Bash via LOOMCYCLE_BASH_ALLOWED_CREDS. v1.19.1 made the Interruption tool self-enable on tool-list presence. v1.19.2 added startup warnings for empty capability gates and caught three shipped-bundle bugs. Two starter teams (SDLC and marketing) ship in the team-examples bundle.
