Firedrill: Stateful tool simulation for AI agents Firedrill released a simulation and testing framework for AI agents that lets developers define synthetic stateful tools over HTTP, MCP, CLI, and function bindings and assert on tool calls, state changes, and events. The framework ships as the Python package firedrill-run (Python 3.10+) and the npm packages @firedrill-run/cli and @firedrill-run/sdk, requiring Node.js 20.19 or later, and offers scenario-based tests with faults, response overrides, virtual time, isolated world state, seeded data, snapshots, resets, and HTML, JSON, and JUnit reports. Tools install on demand from a catalog as @firedrill-tools/ dev dependencies, with the CLI verifying package integrity before installation consent. Firedrill is a simulation and testing framework for AI agents. Define synthetic tools and data, run your agent against them, and assert on tool calls, state changes, and events. - Stateful tools with HTTP, MCP, CLI, and function bindings. - Scenario-based tests with faults, response overrides, and virtual time. - Isolated world state, seeded data, snapshots, and resets. - HTML, JSON, and JUnit reports with timelines and optional browser captures. - Repository-defined tools, including independently distributed packages. Quickstart quickstart · Python https://github.com/firedrill-tools/firedrill/blob/main/python/README.md · TypeScript using-the-sdk · Documentation https://docs.firedrill.run · Neutral example https://github.com/firedrill-tools/firedrill/blob/main/examples/quickstart/README.md · Gmail Agent example https://github.com/firedrill-tools/firedrill-example-gmail-agent Install the current release from PyPI https://pypi.org/project/firedrill-run/ into your virtual environment with Python 3.10 or later: python -m pip install "firedrill-run pytest " firedrill --help Import the local SDK with from firedrill import World, run drills . The wheel includes the runtime, CLI, inspector, and report engine. No separate Node.js or npm installation is required. Choose Tools with firedrill init ; they install on demand and use the same packages as TypeScript. See the Python guide https://github.com/firedrill-tools/firedrill/blob/main/python/README.md for pytest, async agents, mocks, and browser tests. Requires Node.js 20.19 or later. Install the current release in your project: npm install --save-dev @firedrill-run/cli @firedrill-run/sdk npx firedrill --help Or run the CLI without adding a project dependency: npx @firedrill-run/cli init For a source checkout, use pnpm 9.15–10: pnpm install --frozen-lockfile pnpm build Use the built CLI in this terminal. export FIREDRILL CLI="$PWD/packages/cli/dist/bin.js" firedrill { node "$FIREDRILL CLI" "$@"; } The examples below use npx firedrill inside a project that has @firedrill-run/cli installed. Never run bare npx firedrill elsewhere: outside such a project npm resolves an unrelated package with that name. Python installations expose firedrill directly, so drop the npx prefix. From source, use the shell function above or invoke the CLI directly with node /path/to/firedrill/packages/cli/dist/bin.js . The programmatic API is @firedrill-run/sdk . To prepare installable archives of the CLI, SDK, and other packages from this checkout, run pnpm pack:artifacts -- --output /absolute/path/to/an/empty/directory . The output includes a package manifest. Create a project with a synthetic record store: mkdir firedrill-example cd firedrill-example npm init -y npm install --save-dev @firedrill-run/cli npx firedrill init --custom records npx firedrill serve init creates a Tool declaration, a behavior module, and starting data. serve starts the backend and opens the inspector. Open Tools to inspect the implementation or call an operation. State & activity shows records and calls; Connect agent provides the connection settings. Tools with a bundled UI also have an Open app action. Browser actions and API calls use the same state. The server listens on loopback using available ports. Keep the terminal open; Ctrl+C stops it. Use --no-open to skip opening the inspector automatically. Run firedrill init in an existing project for guided setup, or select one of the published packages in the Tool catalog https://github.com/firedrill-tools/firedrill/blob/main/registry/README.md , for example npx firedrill init --tool gmail --install or npx firedrill tool add gmail --install . Both add the catalog's exact @firedrill-tools/