[Feature]: Meta-orchestrator — cross-project supervision of all orchestrators (scheduled health checks, stall detection, portfolio status)
Problem
As a user running several AO projects in parallel, I have no layer above the project orchestrators. Each orchestrator sees only its own repo, so portfolio-level questions have no home:
"What are my orchestrators actually doing — and why did this one stop?" Orchestrators stall silently. A timeout error (e.g. #5489: SPAWN_TIMEOUT leaves the session started but the initial prompt never delivered), a permission prompt waiting for a person, a hung agent process, or a transport failure — in every case the session just sits there. Nobody notices until I manually open every project one by one. There is no watchdog that periodically (cron-style) checks all orchestrators and flags: no transcript growth for N minutes while nominally "Working", repeated timeout/transport errors, waiting-on-approval for too long, exited-but-unrecoverable sessions (cf. #5569).
"What open issues do I have across all my repos?" Today this means opening each project separately (or scripting
ghper repo by hand). There is no cross-repo aggregate view of open issues, PRs, failing CI, or sessions awaiting a person, surfaced inside AO.
Who this affects: anyone running AO on more than one repo, and especially people who leave orchestrators running unattended and come back to find half of them quietly dead or stuck.
Proposed direction
A meta-orchestrator: a special AO session of its own — conceptually "standalone worker mode, one level up" — that is not bound to a single repository and treats other AO sessions (orchestrators and workers across projects) as its supervised objects.
Capabilities, in the order I'd find useful:
Scheduled health checks (cron) of every orchestrator/session
- Per session: last activity timestamp, current Kanban status, last error, transcript growth.
- Stall heuristics: idle for N minutes while "Working"; repeated timeout/transport errors; waiting on a permission prompt > N minutes; exited and unrestorable (#5569).
- Output: one "fleet status" answer — who is working, who is stalled, and a best-guess why.
Act on stalls, not just report them
- Notify, nudge (re-deliver prompt / resume session), restart, or escalate to the person — per-project policy.
- Default is report + suggest; never silently take destructive action.
Portfolio queries across repos
- "What are the open issues across all my repos?" — one aggregated list with repo, age, labels, assignee.
- Same for open PRs, failing CI, and sessions awaiting a person.
- This makes the meta-orchestrator a natural daily triage entry point.
Much of the substrate plausibly exists already (daemon session state, activity feed, status derivation); what's missing is the cross-project session API, stall heuristics, scheduled wake-ups for an agent session, and cross-repo issue aggregation.
Related prior art in this repo: #5511 (ao ps — process-level footprint viewer; complementary, but answers "is the process alive", not "is the agent making progress"), #5597 (orchestrator reading a worker session's output — the same read path would serve the meta-orchestrator), #3802 (role-aware delegation / durable pause — same direction but scoped within a single project).
Alternatives considered
- Open each project's Kanban manually — no stall detection, doesn't scale past a handful of projects.
ao ps+ cron +ghscripting outside AO — answers process liveness and repo issues, but has no agent-level status ("waiting on a person" vs "making progress"), can't nudge/resume an orchestrator, and the scripts rot.- Each orchestrator checks its siblings — breaks project isolation, and every one of them still needs a supervisor itself.
Before submitting
- I searched existing issues / discussions for something similar
- I am willing to help implement this if maintainers agree on scope
Source: Untrivial-ai/agent-orchestrator