--- name: multi-agent-mux-status description: "Read-only instant snapshot of all agent herdr sessions — name, YAML status, herdr alive, pane cmd/cwd, resume UUID on disk, and any drift. No mutation. Reuses reconcile.sh --dry-run for the diff logic. Use when you want to know 'what's running RIGHT NOW' without spinning up the monitor loop." version: 4.8.9 author: godopu license: MIT platforms: [linux, macos] environments: [terminal, herdr] metadata: hermes: tags: [agent, herdr, claude, antigravity, agy, grok, opencode, codex, status, read-only, snapshot] related_skills: [multi-agent-mux-create, multi-agent-mux-resume, multi-agent-mux-stop, multi-agent-mux-monitor] prereq_skills: [multi-agent-mux-create, multi-agent-mux-monitor] --- # Multi-Agent Status — Read-Only Instant Snapshot > **Companion skills**: `multi-agent-mux-create` (start), `multi-agent-mux-resume` (re-attach), `multi-agent-mux-stop` (terminate), `multi-agent-mux-monitor` (live polling). > **Herdr Isolation**: `status` 명령은 YAML의 `herdr_session` 필드를 자동으로 파싱하여 상태를 확인하므로, `HERDR_SESSION_NAME` 환경변수를 수동으로 지정하지 않아도 모든 격리 서버의 세션 상태를 통합 조회합니다. > **Single source of truth**: `./.mam/agent-sessions.yaml`. ## What this skill does Print a single table of every agent herdr session, comparing YAML state to actual herdr state. **No mutation. No polling loop.** This is the "what's running right now?" answer — faster than dispatching `multi-agent-mux-monitor` (which polls every 30s) and safer than `reconcile.sh --once --emit-diff` (which mutates as a side effect). ## Pre-flight ```bash has_real_herdr || { echo "ERROR: herdr not installed"; exit 1; } # lib.sh helper (B-3) command -v python3 test -f .mam/agent-sessions.yaml ``` > `command -v herdr` and `type -P herdr` both report success even when herdr is > not installed — they match lib.sh's `herdr()` function and the `.mam/shim` > wrapper respectively. Always use `has_real_herdr`. If `agent-sessions.yaml` doesn't exist or is malformed → print clear error, exit 1. **Do not create it.** (Use `multi-agent-mux-create` first.) ## Workflow ```bash bash .agents/skills/multi-agent-mux-status/scripts/status.sh [--json] ``` The script: 1. Calls `reconcile.sh --once --emit-diff --dry-run` (read-only; no YAML mutation) for the drift snapshot 2. Loads `agent-sessions.yaml` (read-only) to enrich the table 3. For each row in `herdr_sessions[]`: - herdr alive? (via `herdr agent get `, real native command — the script sources `lib.sh` internally, which is what lets it also spell this as `herdr has-session -t `) - pane cmd, cwd (via `herdr agent get `, likewise shimmed as `herdr list-panes` internally) - resume UUID on disk? (claude: `$CLAUDE_PROJECT_DIR//.jsonl` with default `~/.claude/projects/`; agy: `$HOME_DIR/.gemini/antigravity-cli/conversations/.db` with default `~/.gemini/...`) 4. For each herdr session matching `*-creator-*` not in YAML → flag as "unregistered" 5. Prints a table (default) or JSON (with `--json`) ## Output format (default = aligned table) ``` agent-sessions status — 2026-06-19T14:20:00Z (herdr_confirmed=True) ======================================================================================================================================== NAME SERVER YAML HERDR CMD RESUME JOB_ID JOB_STATUS DRIFT ---------------------------------------------------------------------------------------------------------------------------------------- lab-landing-page-creator-claude default running alive claude yes - - - lab-landing-page-creator-agy default terminated dead agy yes 5fe09ba8 completed - lab-paper-pdf2md-creator-claude default running alive claude scan - - - ======================================================================================================================================== ``` ## Output format (`--json`) ```json { "timestamp": "2026-06-19T14:20:00Z", "yaml_path": ".../.mam/agent-sessions.yaml", "herdr_sessions_alive": ["lab-landing-page-creator-claude|default"], "herdr_confirmed": true, "drifts": [ {"class": "A", "name": "lab-landing-page-creator-agy", "msg": "..."} ], "actions": [], "sessions_detail": [ { "name": "lab-landing-page-creator-claude", "server": "default", "herdr_workspace": "landing-page", "status": "running", "herdr_alive": true, "cmd": "claude", "role": "creator", "resume_state": "yes", "job_id": null, "job_status": null, "pane_cwd": "/home/.../refer_landing_page", "attach_command": "HERDR_SESSION_NAME=default herdr agent attach lab-landing-page-creator-claude", "drift_classes": [], "pane_pid": 12345, "cmd_full": "claude --dangerously-skip-permissions --session-id ", "start_command": "...", "last_visible_status": "pinned" } ] } ``` The top-level keys other than `sessions_detail` are `reconcile.sh --once --emit-diff --dry-run`'s output, passed through unchanged. `resume_state` is `yes`, `MISSING`, `scan` or `no`. ## Drift classes (read-only — never mutates) | Class | Detection | Meaning | |---|---|---| | `A` | YAML `running`, herdr dead | session died without going through `multi-agent-mux-stop`. *Could* auto-terminate but won't — that's `multi-agent-mux-monitor`'s job. | | `B` | herdr alive, not in YAML | ad-hoc session someone started without `multi-agent-mux-create`. Suggest: "use multi-agent-mux-create to register, or multi-agent-mux-stop to clean up." | | `C` | YAML has `claude_session_id_own: null` AND a new *.jsonl exists | new session id materialized; suggest: "run multi-agent-mux-resume or reconcile to register it." | ## Pitfalls - **Do NOT use this skill to drive mutations** — the output is a snapshot, not a call to action. If you need to fix drifts, run `multi-agent-mux-monitor` or `multi-agent-mux-resume` / `multi-agent-mux-stop` manually. - **Read-only is enforced by script** — `status.sh` opens the YAML with `open(path)` (no `'w'`), never calls `herdr kill-session`, never writes anywhere. The `reconcile.sh --dry-run` mode is the same path. - **It never starts a herdr server either** — `status.sh` exports `MAM_NO_AUTOSTART=1`, so the `lib.sh` shim skips its headless server bootstrap and a session whose isolated server is down is simply reported `dead`. Before Issue #9 a bare status query could leave a fresh `herdr --session server` daemon (and an empty pane) behind, inheriting the caller's environment. - **If `agent-sessions.yaml` is malformed** — print the YAML error verbatim and exit 1. Do NOT attempt recovery (that's `multi-agent-mux-stop --purge-conversation` or manual edit's job). - **Sessions outside the `-creator-*` naming convention** are still shown but tagged `ad-hoc` — they didn't go through `multi-agent-mux-create` and aren't tracked in YAML. ## When to use - "Is the claude session still running?" → this skill, not the monitor - "What UUID does this workspace have?" → this skill - "Is there drift between YAML and reality?" → this skill, then dispatch monitor or fix manually - Quick sanity check before dispatching a long-running job ## When NOT to use - Continuous live tracking → `multi-agent-mux-monitor` - Recovering from corruption → manual edit + `.bak` restore - Polling more than once a minute → `multi-agent-mux-monitor` (it dedupes)