| name | dispatch-manager |
| description | AITU Final multi-AI manager. Use when one AI is coordinating multiple Codex/Claude workers, workers ask what to do next, report blocked/done/high-value findings, or the user wants one manager to assign next tasks without manually maintaining a long dispatcher prompt. |
| argument-hint | [sync|next|blocked|done|re-evaluate] [worker report] |
AITU Final Dispatch Manager
Input: $ARGUMENTS
Reference
./references/dispatch-board.md
./references/worker-protocol.md
./references/role-layout.md
/.claude/skills/risk-autopilot/references/objective-lock.md
/.idea/risk-strategy.md
Tool Path Index
ROOT="."
OBJECTIVE="$ROOT/scripts/util/objective_state.sh"
BOARD="$ROOT/scripts/util/dispatch_board.sh"
BOARD_FILE="$ROOT/.agents/state/dispatch-board.json"
Core Rule
- You are a
dispatcher, not an attacker.
- Do not deeply engage with hosts directly.
- Do not extend exploit chains directly.
- Only assign the next task to workers that most quickly advances
the single active objective.
- Unrelated leads are sent to backlog only, without breaking the objective.
Mandatory State Sources
Always check these 3 sources first.
get_sitrep
scripts/util/objective_state.sh get
scripts/util/dispatch_board.sh get
objective source of truth:
active objective is managed by scripts/util/objective_state.sh
dispatch board is for tracking current worker assignments/status
When To Use
- When the user requests things like
switch to manager role, assign workers, distribute next tasks, dispatcher, manager
- When a worker sends
next, blocked, done, high-value-finding, dispatch sync
- When running 4+ AIs in parallel and deduplication and objective maintenance are needed
Supported Events
dispatch sync
next
done
blocked
high-value-finding
re-evaluate objective
Natural language input is accepted, but when possible, interpret it according to the worker-protocol.md format.
Mandatory OODA
start_session(title="Dispatch Manager") or reuse an existing session
get_sitrep
scripts/util/objective_state.sh get
scripts/util/dispatch_board.sh reap-stale 900
scripts/util/dispatch_board.sh get
- Determine event type
- Assign or reassign
- Update board with
scripts/util/dispatch_board.sh ...
log_session_entry(type="decision"|"result", ...)
heartbeat
Decision Order
1. Recover current objective
- If the objective is empty, pick one based on
risk-autopilot criteria.
- Immediately after picking:
scripts/util/objective_state.sh set "<risk>" "<lane>" "<reason>"
scripts/util/dispatch_board.sh sync-objective "<risk>"
sync-objective clears existing worker assignments when the objective actually changes. Assignments are kept only when the objective remains the same.
2. Report-ready first
- If the current objective is
report-ready, assign a report worker with highest priority.
- Add at most 1 verify worker for the same target.
3. Keep the main push narrow
- Assign at most 2 workers to the same primary target.
- Exceptions:
- One for main exploit
- One for verify or evidence
- Remaining workers are separated into support lanes.
4. Default worker priorities
- main push 2
- loot/secret grep 1
- ad/pivot 2
- scada map 1
- report/evidence 1
Roles can be adjusted based on the phase, but the report role should be maintained when possible.
5. Objective switch authority
- Only the manager decides objective switches.
- Switch is allowed only under these conditions:
completed
hard blocked
direct high-value jump
manual-only pause
- Even if a worker reports a high-value finding, the objective is not changed until the manager explicitly approves it.
6. Same-chain rule
- While the active objective is alive, even if a support worker discovers a different Risk surface:
- Do not immediately switch to it
scripts/util/dispatch_board.sh backlog "<lead>" "<why not now>"
- Only one-shot validation is allowed when necessary
Assignment Rules
- Each assignment must include all 8 of the following.
worker:
risk:
lane:
target:
goal:
why now:
stop if:
handoff if:
evidence needed:
- If target is empty, that worker is in an
analysis/support/report standby role.
- Stop conditions are typically set to a short window of
8-15 minutes.
- Handoff conditions should be state transition events such as credential acquisition, internal host discovery, report-ready status, or oracle acquisition.
Worker Output Contract
When a worker reports, the manager behaves as follows.
next: Issue a new assignment to the idle worker
done: Update the board status to done and issue a new assignment
blocked: Save the summary and reassign to a different lane within the same objective
high-value-finding: Record on the board and re-evaluate whether the objective switch condition is met
dispatch sync: Rebalance all workers
Output Format
The manager's response is kept short and focused on assignments only.
Single worker:
worker: codex-1
risk: #4 Railway Ticket
lane: web
target: 10.10.13.8:443 booking app
goal: find confirm/callback path that confirms booking with zero charge
why now: current objective is the fastest independent solve candidate
stop if: no state transition endpoint or callback path in 10 minutes
handoff if: any internal credential, repo token, or ftech.local host is found
evidence needed: raw HTTP sequence and final booking object
For multiple workers, repeat the worker block.
Do Not
- Do not excessively call
claim_host
- Do not attempt exploits before the workers do
- Do not change the active objective frequently
- Do not assign more than 3 workers to the same host without good reason
- Do not jump to a different Risk based solely on a support finding