Skip to main content
Watchfire
Parallel work

Run several features in flight at once

Queue background work and let Wildfire keep it moving while you ship the main thing.

Who this is for.

You have one feature that needs your full attention and four others that need to land this sprint. You don't want to ignore the four, but you also don't want to babysit them. You want background work running in isolation, surfacing for review when it's actually ready — not interrupting you mid-flow.

The workflow in 4 steps.

  1. Draft every feature as its own task

    Write a task YAML per feature — prompt, acceptance criteria, status `ready`. Don't lump them together; the whole point is that each one can land or fail independently and the queue can pick the next one up the moment one finishes.

  2. Turn on Wildfire mode

    Flip Wildfire on in the TUI or GUI. The daemon picks ready tasks off the queue, refines drafts that aren't tight enough, and even drafts new tasks from the project definition when the queue runs dry. You stop being the dispatcher.

  3. Keep coding on `main`

    While Wildfire chews on the queue, your working tree is untouched — every task lives in its own `watchfire/<n>` worktree. You can keep editing on `main`, commit, push, even rebase, without colliding with any in-flight agent session.

  4. Review what landed when you come up for air

    Background tasks merge into reviewable branches (or auto-merge if you trust the criteria). When you're ready, you do a single review pass over the batch instead of context-switching one PR at a time — and the messy ones go back as new tasks with sharper criteria.

A real task you can copy.

Drop this into .watchfire/tasks/<n>.yaml, tweak it to your repo, and start it from the TUI or GUI.

task_id: para0009
task_number: 9
title: "Add per-org rate limits to /api/* (Wildfire-friendly slice)"
prompt: |
  Add per-organization rate limits to every route
  under `/api/`. Use the existing Redis client at
  `lib/redis.ts` and the token-bucket helper at
  `lib/rate-limit.ts`. Read the org id from the
  request context populated by
  `middleware/auth.ts` — do not introduce a new
  way to derive the org.

  Limits, defaults:
  - 60 requests / minute for GET routes.
  - 30 requests / minute for POST/PUT/PATCH.
  - 10 requests / minute for DELETE.
  Allow overrides by setting
  `org.rateLimitOverrides` in the user-loaded
  context; respect them when present.

  When a request exceeds the limit, return 429
  with body `{ "error": "rate_limited",
  "retryAfterSeconds": <int> }` and a
  `Retry-After` header.

  Out of scope:
  - Touching any non-`/api/` route.
  - UI changes.
  - Adding a new dependency.
acceptance_criteria: |
  - Every `app/api/*` route applies the rate
    limit before reaching the handler body.
  - The 429 response matches the spec above (body
    and header).
  - New tests exist under `app/api/__tests__/`
    covering: GET above limit, POST under limit,
    override honoured, missing org id returns 401.
  - `npm run test` and `npm run lint` pass.
  - No new runtime dependencies in
    `package.json`.
status: ready

More starters in the task template library.

Why Watchfire makes this faster.

  • Per-task git worktrees mean background tasks can't touch the file you're editing on `main` — there's no 'oh, the agent stomped my work' failure mode.
  • Wildfire mode keeps the queue moving on its own, refining drafts and starting the next ready task as soon as one finishes, so the background pile actually drains instead of stalling.
  • Each task gets its own sandbox, so a feature that wedges a process, opens a port, or spawns a watcher only wedges its own session.
  • The daemon survives client restarts — close the TUI, reboot the laptop, the background tasks keep running and pick back up.
  • When a feature lands, it's on its own reviewable branch with the full transcript attached, so you can context-switch in for a focused review without losing your place on the main thread.
Ready to go

Get started with Watchfire

Install in seconds. Define tasks. Let agents ship code for you.

Download for macOS

Available for macOS, Linux, and Windows

install
# Install via Homebrew (macOS)
$brew tap watchfire-io/tap
$brew install --cask watchfire-io/tap/watchfire
# Set up your project and go
$watchfire init
$watchfire task add "Build the login page"
$watchfire start --all

Includes GUI, CLI, and daemon. Also available via Homebrew.