Skip to content

flame_chase ​

Put two agents on one task and let them take turns. Each turn is a fresh session that starts from the task and the repository; neither agent is told what the other said, so the working tree is all that passes between them.

ships with humanize

Nothing to install: it is in hmz from the first run, with chat and the other loops, and its code is humanize's flows/builtin/flame_chase.

text
❯ $flame_chase make the importer handle every file in samples/
sh
hmz exec -f flame_chase \
    -a first_chaser=claude/claude-opus-5:max -a second_chaser=codex/gpt-5.6-sol:max \
    -p budget.duration=8h,budget.cost=100 "$(cat TASK.md)"
flame_chasesimulated

The whole run, at rest. Step through it with the buttons, or drag the bar.

Neither is told what the other said. What passes between them is the working directory — and a failed turn passes to the other chaser too.

The run, turn by turn
  1. first_chaser — the task; a session opened for this turn; hands second_chaser in the tree: what it left in the tree
  2. second_chaser — the task; a session opened for this turn; hands first_chaser in the tree: what it left in the tree
  3. first_chaser — the task; a session opened for this turn; hands second_chaser in the tree: what it left in the tree
  4. second_chaser — the task; a session opened for this turn

Then round again: a round is a turn each.

It ends when the budget runs out, or 3 failed turns in a row.

When to use it ​

Two different models fail differently. A loop over one agent compounds that agent's blind spots; a loop that alternates hands every turn to an agent that did not write what it is looking at. Give both roles the same model and they are still two agents, which a trace shows as two sets of sessions.

If one of the two should judge rather than work, use rlar.

Roles and params ​

RoleWhat it isHow it is filled
first_chaseragent, required-a first_chaser=…Takes the odd turns, each in a fresh session.
second_chaseragent, required-a second_chaser=…Takes the even turns, each in a fresh session.
workspaceenvironment, localthe directory you start in; no -eThe one tree both chasers work in, and all that passes between them.

Each agent role takes one -a role=CLI[@PROVIDER]/MODEL[:EFFORT]; several roles may share one -a, comma-separated. There is no -e to give: workspace is a local environment, the directory you start the run in, and an -e naming it is refused. See Command-line specs.

No params. The loop pauses 5 seconds between turns.

What ends it ​

  • The budget. The two spend one budget between them, not one each.
  • Three failed turns in a row. The run ends with the last failure. A turn that fails passes to the other chaser, so three in a row means both have failed.

Picking it up ​

--resume carries on with whichever chaser was next, so neither takes two turns in a row, and it keeps counting rounds: a round is one turn each. See Picking a run up.

See also ​