Watchfire
Commands

watchfire init

Initialize a new Watchfire project in the current directory.

watchfire init

Initialize a new Watchfire project in the current directory.

Usage

watchfire init

Description

watchfire init sets up a new Watchfire project by creating the necessary configuration files and directory structure. It must be run from within a git repository (or it will initialize one for you).

What It Does

  1. Checks for an existing git repository — initializes one if missing
  2. Creates the .watchfire/ directory structure (including tasks/)
  3. Generates an initial project.yaml with a UUID, project name, and selected project default agent
  4. Appends .watchfire/ to .gitignore (creates the file if missing)
  5. Commits the .gitignore change
  6. Prompts for an optional project definition
  7. Prompts for project settings, including which agent/backend the project should prefer

Interactive Prompts

During initialization, you'll be asked to configure:

SettingDescriptionDefault
Agent/backendProject default agent written to .watchfire/project.yamlGlobal default agent if set, otherwise claude-code
Project definitionA description of your project used as context for every agent sessionEmpty
Auto-mergeAutomatically merge completed task branchestrue
Auto-delete branchesDelete worktree branches after mergetrue
Auto-start tasksStart an agent when a task is set to readytrue

The selected backend is stored as default_agent in the project config. You can change it later in project settings.

If you leave agent selection unset at the project level, Watchfire resolves the effective backend using:

  1. task.agent
  2. project.default_agent
  3. Global default agent
  4. claude-code

Example

cd my-project
watchfire init

Example generated config:

project_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
name: my-project
default_agent: codex
sandbox: auto
auto_merge: true
auto_delete_branch: true
auto_start_tasks: true
definition: ""
next_task_number: 1

After running, your project directory will contain:

my-project/
├── .watchfire/
│   ├── project.yaml
│   └── tasks/
├── .gitignore          # Updated with .watchfire/
└── ...your files

On this page