---
{
  "n": 67,
  "title": "Dispatching a helper on another provider",
  "abstract": "",
  "refs": [],
  "seen": [
    "agent"
  ],
  "data": {
    "revision": 1,
    "change": "written; added The command; added Where it runs; added How the answer comes back; added What it may do; added What it costs; rewrote The command; rewrote Where it runs; rewrote How the answer comes back; rewrote What it may do; rewrote What it costs"
  },
  "created": 1790798580.1338692,
  "updated": 1790798605.027495,
  "deleted": 0.0,
  "completed": 0.0,
  "outcome": "",
  "type": "doc"
}
---
Proposal for to-do 2123 (messages 12777 and 12779): the agent dispatches a helper agent on another provider, such as Codex, for one bounded job. It runs in a helper environment of its own, hidden from the user's lists, on a worktree cut from the working branch, and its answer comes back to the dispatcher as a message.

## The command
journal helper dispatch "<name>: <job>" --provider codex --model <model> --brief "<the bounded job>" [--worktree]
- The name follows the subagent laws: a human name, a little quirky, fitting the role (L5), and the model is always named (L1).
- It returns at once with the helper's number; the dispatcher carries on and is told when the helper reports.
- journal helper say <n> "<text>" sends a follow-up to the same helper (L4); journal helper stop <n> ends it; journal helper all lists them.

## Where it runs
- A helper environment of its own, named after the dispatcher and the helper (for example main~rhea), marked as a helper of the dispatching environment. It never shows in the environment list, the switcher, the phone's places or the Home counts, and the viewer shows it only inside the dispatcher's helper view.
- With --worktree (for any code-writing job) it works in a worktree cut from the current tip of the working branch, never main or the default branch, with its base commit recorded (to-do 2132's funnel).
- The helper is started the way a ticket's agent is started today: detached, on the chosen provider, with a kickoff prompt that holds the job, the house rules, and how to report.

## How the answer comes back
- The helper's kickoff tells it to finish with journal helper report "<its report>", which lands as a message to the dispatcher, shown in the chat as a From box (the same box as messages between agents), and wakes the dispatcher with one line.
- Its commits stay on its branch; the dispatcher reviews and merges, and the hand-back refuses a branch that no longer contains the working branch's tip until it is rebased.
- When the report is in and the branch merged or dropped, the helper environment is packed away into the attic and its worktree removed.

## What it may do
- It works through the journal like any agent: its own record, its own work and to-dos inside its helper environment.
- It may not message the user directly, switch environments, or write rules, facts or docs; those stay with the dispatcher, as for subagents.
- The laws that bind subagents bind helpers: named, model chosen, bounded job, follow-ups to the same helper.

## What it costs
- Server: a helper kind of environment with its hidden flag honoured everywhere environments are listed, the dispatch, say, report, stop and all commands, and cleanup.
- Reuses: the ticket launcher (detached start on any provider), worktrees, the peer message box.
- First version: Codex and Claude as providers; the viewer's helper view shows each helper with its name, job, provider, model, state and report.
