Skip to main content
The local plan is a JSON file that says how to start each service in your descriptor, how to know it is ready and how the driver reaches it. It stays on your machine. Firedrill only receives a digest of it with your paths removed. Keep the plan out of version control. It contains absolute paths for your machine.

Use the plan

Before anything starts, run checks the plan against the descriptor and prints every command, folder and environment variable name it will use. It asks you to approve. With --json, pass --approve after a person has approved. Check your drivers against the plan without running anything:

Example

plan.json
Firedrill starts node server.js with a free port in PORT and your OPENAI_API_KEY from the shell where you run firedrill run. It waits for /health to return 200, then sends each message to POST /chat.

Top-level fields

Services

Readiness

Readiness URLs must use http on 127.0.0.1, localhost or [::1]. Use port 0 when the service gets its port from port_env.

Rules

  • Commands run as an argument list. Shell strings, pipes and && do not work. .bat and .cmd files are refused.
  • Secret names cannot go in env_static or env_passthrough. Use local_secret_env on a launch service with per_drill: true.
  • env_static cannot set proxy, certificate or loader variables such as HTTP_PROXY, NODE_OPTIONS or LD_PRELOAD.
  • An attach service cannot be per_drill or have a port_env.
  • A per_drill network service needs a port_env.
  • If the plan or a root folder changes after you approve it, run stops and asks again.
Local services run as normal processes with your user’s permissions. They are not sandboxed.

Reset hooks

For a state domain with reset: approved-hook, add one entry to state_hooks:

Choose a driver

Driver settings and what your agent must implement.

Run drills

Plan, apply and run.