The lifecycle
1
Compile repository source
Firedrill validates Tool declarations, behavior modules, world data, scenarios, targets, drills, and suites. Equivalent source normalizes to the same content-addressed build.
2
Materialize an isolated world
Each drill attempt starts from the pinned build and scenario in a separate SQLite-backed world. Its state, virtual clock, faults, callbacks, pending work, and ordered journal move together.
3
Connect the agent
The target receives only its declared direct, HTTP, MCP, or CLI binding. The agent process keeps its own model credentials and orchestration.
4
Observe consequences
Tool calls run deterministic behavior against the world. Firedrill records operation outcomes, state mutations, events, faults, time changes, callbacks, and optional caller-supplied captures.
5
Evaluate assertions
Assertions query the recorded world rather than trusting the agent’s final message. A successful agent response does not override a failed state, call, event, callback, or ordering assertion.
6
Seal the result
Firedrill writes portable report formats and retains the exact build hash and seed. Reset restores the starting definition; reproduction reruns the same immutable build and seed.
Local and hosted use the same model
The local framework provides the complete development loop: author, compile, serve, run, assert, inspect, report, reset, and reproduce. Firedrill Cloud adds managed sessions, durable history, collaboration, GitHub automation, retained artifacts, and attestation without changing the meaning of a Tool, scenario, drill, or run.Firedrill Cloud is currently in private preview. The public local workflow does not require a Cloud account.