Commands

ody run

Run the agent loop

Synopsis

ody run [taskFile] [--iterations <n>] [--label <name>] [--verbose] [--no-notify]

Arguments

ArgumentTypeRequiredDescription
taskFilestringNoPath to a specific .code-task.md file to run

Flags

FlagAliasTypeDefaultDescription
--iterations-istring(config)Override the number of loop iterations (0 = unlimited)
--label-lstringFilter tasks by label
--verbosebooleanfalseStream the agent's output in real time
--no-notifybooleanfalseDisable OS notifications even if enabled in config

Behavior

Default loop mode

Without arguments, ody run enters a loop that runs for maxIterations iterations (from config) or until all pending tasks are done:

  1. Builds a prompt from the current project state and pending tasks.
  2. Spawns the configured backend agent with the prompt.
  3. Monitors the agent's output for the <woof>COMPLETE</woof> marker, which signals all pending tasks are finished.
  4. On each completed iteration, displays progress (e.g., "Agent task 2 of 5 complete").
  5. Sends OS notifications per the notify config setting.
  6. Exits with a summary of completed tasks.

Single task mode

When a taskFile positional argument is provided, the loop runs exactly once targeting that specific task file:

ody run .ody/tasks/my-feature.code-task.md

The taskFile and --label flags are mutually exclusive.

Label filtering

Use --label to run only tasks that match a specific label in their frontmatter metadata:

ody run --label bugfix

If no tasks match the label, the command exits with a warning.

Iteration override

The --iterations flag overrides the maxIterations config value for the current run:

ody run --iterations 3

Set to 0 for unlimited iterations (runs until all tasks complete).

Verbose mode

By default, agent output is hidden behind a spinner. Use --verbose to stream the agent's full output to the terminal:

ody run --verbose

Examples

Run all pending tasks with config defaults:

ody run

Run a single specific task:

ody run .ody/tasks/add-login-page.code-task.md

Run with a 3-iteration limit and verbose output:

ody run --iterations 3 --verbose

Run tasks with a specific label:

ody run --label refactor

On this page