The Watchfire glossary.
Plain-English definitions of every Watchfire term, mode, and concept — the canonical reference any other page on the site can link to. 27 terms across 5 categories. Use the filter or jump to a section.
Modes
The six ways an agent can be run against a project — from a single interactive chat to an autonomous loop that generates its own work.
- Chat modealso: chat, interactive modeDocs →
- An interactive session with the agent — closer to a normal coding-CLI conversation than a task run. No task file, no automatic merge: useful for exploring a codebase, prototyping, or asking the agent a one-off question inside a project's worktree.
- Task modealso: task run, task executionDocs →
- Runs one specific task from
.watchfire/tasks/in an isolated git worktree. The agent reads the task's prompt and acceptance criteria, makes changes, commits, and updates the task file when done. This is the unit Watchfire is built around. - Start Allalso: start-all, run all ready tasksDocs →
- Sequentially runs every task currently in
readystatus. Each task gets its own worktree and its own sandboxed agent process; failed ones stop being retried but never block the next task from starting. - Wildfire modealso: wildfire, autonomous mode, wildfire loopDocs →
- The autonomous loop. Wildfire alternates between executing ready tasks, refining drafts, and generating new draft tasks from the project definition until you stop it. The worktree and sandbox keep the blast radius bounded even when nobody is watching.
- Generate definitionalso: definition generate, watchfire definition generateDocs →
- Asks the agent to draft a project definition by reading the repo — tech stack, layout conventions, code style, gotchas. The output lands in
.watchfire/project.yamlunderdefinition:and you can keep editing it afterwards. - Generate tasksalso: task generate, watchfire generateDocs →
- Asks the agent to propose new tasks against the project definition. Generated tasks land as
draftYAML files so you can read, edit, and promote the good ones — Watchfire never silently executes a task it generated itself.
Concepts
The building blocks: projects, tasks, the worktree-and-sandbox pairing, and the agent backend Watchfire happens to be driving.
- Projectalso: watchfire projectDocs →
- A repo Watchfire knows about. Created by running
watchfire init, which adds a.watchfire/directory with aproject.yaml, atasks/folder, and aworktrees/parent. Projects are independent — one machine can manage many in parallel. - Taskalso: task file, task yamlDocs →
- A unit of work described as a small YAML file at
.watchfire/tasks/<n>.yaml. Contains a title, prompt, acceptance criteria, and status. Tasks are plain text by design — editable in your editor, diffable in git, runnable by any client. - Worktreealso: git worktree, task worktreeDocs →
- Each task gets its own git worktree at
.watchfire/worktrees/<n>/on a dedicatedwatchfire/<n>branch. Parallel tasks never touch each other's files, a failed run never pollutesmain, and a finished task can be reviewed like any other branch before merging. - Sandboxalso: seatbelt, sandbox-exec, landlock, bubblewrapDocs →
- The kernel-level isolation each agent process runs inside: Seatbelt (
sandbox-exec) on macOS, Landlock on Linux 5.13+, Bubblewrap as a fallback. It denies access to~/.ssh,~/.aws,~/.gnupg,~/.netrc,~/.npmrc, and.git/hooksby default. Enforcement is at the kernel level, not on the agent being well-behaved. - Beaconalso: watchfire beacon
- The signal a task emits to mark itself complete — concretely, the moment its YAML file flips to
status: done. The daemon watches.watchfire/tasks/and reacts to that change: ifauto_mergeis on andsuccess: true, the worktree's branch is merged into the default branch. - PTYalso: pseudo-terminal, pseudo terminal
- Pseudo-terminal. Every agent backend is itself a CLI, so Watchfire spawns it inside a PTY — that's what lets terminal-UI agents render normally, lets the daemon capture the live transcript, and lets the TUI and GUI replay output without re-running the agent.
- Agent backendalso: agent CLI, backend, agentDocs →
- The coding agent CLI Watchfire is driving — Claude Code, OpenAI Codex, opencode, Gemini CLI, GitHub Copilot CLI, or Cursor Agent. Watchfire doesn't bundle a model; pick a backend per project in
project.yamland Watchfire reuses that CLI's existing auth.
Components
The three pieces of software you actually run — one daemon, plus the CLI/TUI and GUI clients that talk to it.
- Daemon (watchfired)also: watchfired, watchfire daemonDocs →
- The single orchestrator process. Spawns agent PTYs, manages git worktrees, watches task files, tracks status, and serves gRPC to every client. Lives at
~/.watchfire/daemon.yaml; start withwatchfire daemon startorwatchfired --foregroundfor live logs. - CLI / TUI (watchfire)also: watchfire CLI, watchfire TUI, tuiDocs →
- The
watchfirebinary — a thin gRPC client to the daemon that doubles as an interactive Bubbletea-based TUI. The CLI form is for scripts and one-off commands; the TUI is the keyboard-driven dashboard for running tasks and monitoring agents. - GUI (Watchfire.app)also: watchfire gui, watchfire desktop, watchfire appDocs →
- The Electron desktop client. Multi-project view with live agent terminal output, point-and-click task management, and a system tray. Shares state with the CLI/TUI through the same daemon — open both at once and they stay in sync.
Lifecycle
Task status, outcome flags, and the auto-merge settings that decide what happens when a run finishes.
- draftalso: status: draft
- A task status meaning "don't run me yet." Drafts are safe to edit. Wildfire's refine phase improves drafts before promoting them, and generated tasks always land as drafts so you can review them before flipping to
ready. - readyalso: status: ready
- A task status meaning "safe to execute." If
auto_start_tasksis on, the daemon picksreadytasks up immediately; otherwise they sit in the queue waiting for Task mode, Start All, or Wildfire to consume them. - donealso: status: done, completed task
- A task status set by the agent when a run finishes — successfully or not. Read the
successflag to know which. The daemon's file watcher reacts todoneto trigger auto-merge or, on failure, to keep the worktree around for inspection. - successalso: success: true, success: false
- Boolean outcome flag on a completed task.
truemeans the agent finished the work;falsemeans it bailed, was blocked, or hit something it couldn't recover from. Pairsuccess: falsewith a non-emptyfailure_reason. - failure_reasonalso: failureReason
- Free-text field on a task that explains why
successisfalse. Show it in reviews so a human knows whether to retry, redefine, or drop the task entirely. Always empty for successful tasks. - auto_mergealso: auto merge, automerge
- Per-project setting (chosen at
watchfire init) that decides whether a successful task's branch is merged into the default branch automatically. With it off, the worktree lands onwatchfire/<n>and waits for you to merge by hand. - auto_delete_branchalso: branch cleanup
- Per-project setting that decides whether the
watchfire/<n>branch and its worktree are deleted after a successful auto-merge. Convenient for hands-off runs; turn it off if you want to keep the branch history for review.
Config
The YAML files and definition text Watchfire reads from `.watchfire/` to know what to build and how.
- project.yamlalso: project config, project fileDocs →
- The per-project config file at
.watchfire/project.yaml. Holds the project id, name, default branch, default agent backend, sandbox settings, auto-merge toggles, the next-task counter, and the project definition. Edit it in place or viawatchfire settings. - task.yamlalso: task config, task.yaml schemaDocs →
- An individual task file at
.watchfire/tasks/<n>.yaml. At minimum it hastitle,prompt,acceptance_criteria, andstatus. The daemon fills in IDs and timestamps after a run; never write timestamps as empty strings — leave the fields off and let the daemon populate them. - next_task_numberalso: task counter
- Monotonic counter in
project.yamlused to name the next task file (.watchfire/tasks/0157.yaml,0158.yaml, …). Watchfire bumps it whenever it creates a task; agents creating tasks autonomously read this counter to pick their next filename. - definitionalso: project definition
- Free-form description of what the project is and how the agent should approach it — stack, conventions, gotchas. The daemon injects it into the agent's system prompt at launch. You can write it yourself or run
watchfire definition generateand edit the draft.
Get started with Watchfire
Install in seconds. Define tasks. Let agents ship code for you.
Download for macOSAvailable for macOS, Linux, and Windows
# Install via Homebrew (macOS)brew tap watchfire-io/tapbrew install --cask watchfire-io/tap/watchfire# Set up your project and gowatchfire initwatchfire task add "Build the login page"watchfire start --allIncludes GUI, CLI, and daemon. Also available via Homebrew.