# 2026-05-07

## Plan
- 

## Sessions

## 07:20 — claude-code-opsman — hermes-gateway restored after 8h downtime

**Decisions made:**
- Started `hermes-gateway` via `systemctl start` after watchdog flagged 8h dead state (alert at 07:15 AEST today). Default profile only — no v0.12 multi-profile changes attempted.

**Root cause:**
- 2026-05-06 22:40 AEST — operator (likely cowork-hq prepping for the [[_System/Investigations/Multi-Hermes-Strategy-2026-05-06]] rollout) took backup `/root/hermes-backups/v0.12-pre-profiles-20260506_224009.tar.gz` + config snapshot + ran `hermes gateway stop`.
- Stop succeeded cleanly (exit 0, drain timed out after 60s with 1 active agent — interrupted).
- Rollout never advanced past Phase 0 backup. No new profile dirs created (`/root/.hermes/` is still single-profile; no `.hermes-coo`, `.hermes-opsman`, etc.).
- Service stayed inactive overnight because clean exit doesn't trigger systemd auto-restart (`Restart=on-failure` is the right policy — controlled stops shouldn't auto-revive).

**Verified post-restart:**
- `systemctl is-active hermes-gateway` → `active`
- airtable-mcp-server child running (PID 3573889) — Airtable MCP wired
- whatsapp-bridge listening on `127.0.0.1:3500` (PID 3573969)
- `SOUL.md` schema-out-of-lane rule intact ("Airtable: NO schema changes...")
- `config.yaml` diff vs 2026-05-03-rocky-fix backup = additive only (v0.12 default schema additions: `tool_loop_guardrails`, `openrouter` cache settings, `disabled_toolsets: []`, `vercel_runtime: node24`). No regressions.

**Insights:**
- Watchdog alert fired correctly (07:15 AEST flagged 8h downtime). Recovery took 5s.
- Single-profile v0.11 architecture intact. Multi-profile rollout deferred per [[HQQueue]] 2026-05-11 timeline — confirmed correct call: yesterday's incomplete rollout would have left things half-broken if pushed further without focused VPS time.
- `.restart_failure_counts` had `{"agent:main:telegram:dm:7377499346": 1}` — single Telegram DM failure pre-stop, not the stop cause.

**Action items:**
- None required. Hermes is back; v0.12 rollout stays parked.

**Resume notes:**
- Pre-rollout backup at `/root/hermes-backups/v0.12-pre-profiles-20260506_224009.tar.gz` still on disk — keep until Rocky decides on v0.12 path (delete after upgrade or after 30-day cooling).
- If watchdog repeats DOWN alert: `journalctl -u hermes-gateway -n 50 --no-pager` is the first lookup. The 22:42 stop was the last clean exit; subsequent restarts visible inline.

## 13:30 — claude-code-opsman — Multi-Hermes Phase 0-3 executed (per Rocky directive, pushback overridden)

**Decisions made:**
- Rocky directed "just get the new multi hermes agent set up done" despite pushback recommendation. Executed Phases 0-3 of [[Multi-Hermes-Strategy-2026-05-06]]. Detail in [[Multi-Hermes-Rollout-Phase0-3-2026-05-07]].
- 3 worker profiles created (`rr`, `siteops`, `coo`) cloned from `default`. Lane-scoped SOUL.md per profile. Telegram + WhatsApp disabled on all 3 (no surface). Coo switched to `model.provider=anthropic` + `model.default=claude-opus-4-7`.
- Kanban DB initialized at `/root/.hermes/kanban.db` with 5 boards (default + lfcs + rr + siteops + infra).
- Git tag `v0.11-pre-multiprofile-2026-05-07` anchored on origin for revert.
- `default` profile retained as the LFCS-lane (Hermes CLI blocks renaming `default` — created `opsman` clone, deleted as duplicate). Naming deviates from strategy doc; functionally equivalent.

**Blocked on Rocky:**
1. **ANTHROPIC_API_KEY for coo's .env** — coo cannot start its gateway without it (SSH-only path, never paste into chat).
2. **@hq_coo_bot Telegram bot via @BotFather** — strategy escalation surface for coo. Until created, coo escalates via `_System/HQQueue.md` (7+h latency to The Window).
3. **48h observation period before flipping `cron_mode=allow`** — Phase 4 gate. Pushback-section concern about MiniMax-quality triage punt rate is now a falsifiable test.

**Insights:**
- v0.12 multi-agent Kanban primitive worked first try — `hermes kanban init` + `hermes kanban boards create <slug>` is enough to stand up the dispatcher infrastructure. The strategy doc's optimism about the v0.12 dispatch model is justified.
- The CLI's "cannot rename default" block is a real constraint, not a strategy-doc blocker. Easier to ignore than fight: `default` is the LFCS lane in spirit; Kanban assignee strings are just IDs, not human labels.
- Workspace scoping per-profile is over-engineered when Kanban can scope per-task. Strategy's "workspace_kind: dir:HQ-Vault/<lane>/" belongs at task creation time, not profile config — coo writes it when dispatching.
- `hermes-curator` is a built-in subcommand (`hermes curator`), not a separate profile. Strategy doc roster slightly mis-modelled this. Doesn't change the rollout path; just don't spend time creating a `curator` profile.

**Action items (for Rocky):**
- See [[Multi-Hermes-Rollout-Phase0-3-2026-05-07#Blocked on Rocky]] table for the 3 unblocking items.
- Smoke test sequence in [[Multi-Hermes-Rollout-Phase0-3-2026-05-07#What Rocky should do next]] — 5 steps, ~30 min Window-time work.

**Resume notes:**
- `hermes profile list` on VPS shows the 4 profiles + their state.
- `hermes kanban boards` shows the 5 boards.
- All Phase 4-5 work (cron_mode flips, OpenClaw → claw migration, curator activation) is gated behind the 48h observation period AND Rocky's go-ahead after watching coo's first triage decisions.
- If pushback section's worry materializes (>50% punt rate from coo on real tasks), revert path: `git checkout v0.11-pre-multiprofile-2026-05-07` on VPS + `hermes profile delete -y rr siteops coo` + restore from `/root/hermes-backups/v0.12-pre-profiles-20260506_224009.tar.gz` if needed.

## 14:45 — claude-code-opsman — Multi-Hermes LIVE (no observation period, per Rocky directive)

**Decisions made:**
- Per Rocky's voice update: skip Anthropic for coo ("CC desktop already has Claude access"), keep coo on MiniMax-M2.7. No `ANTHROPIC_API_KEY` needed.
- Distributed models: `default=MiniMax-M2.7` (LFCS), `coo=MiniMax-M2.7` (orchestrator), `rr=kimi-k2-thinking` (Moonshot), `siteops=deepseek-v3.2-thinking`. All 4 profiles inherit MINIMAX + DEEPSEEK + MOONSHOT + OPENAI + OPENROUTER keys via clone — fallback redundancy across providers.
- Skipped 48h observation period per directive ("we're not using them as it is, just get this done and we start using them").

**Verified live:**
- Created smoke task `t_4b3dcc24` on `lfcs` board, assignee=`default`. Blocked + unblocked to test full lifecycle.
- Gateway dispatcher (embedded in `hermes-gateway.service` via `kanban.dispatch_in_gateway: true` + `dispatch_interval_seconds: 60`) claimed task at 14:42, spawned worker PID 249725, completed at 14:43 with self-summary: *"Smoke test passed — kanban dispatch, worker spawn, task claim, and heartbeat all functioning correctly."*

**Insights:**
- Hermes v0.12 deprecates the standalone `hermes kanban daemon`. The dispatcher is now embedded in `hermes-gateway.service`. Created the standalone systemd unit, then removed it after the deprecation warning.
- Rocky's "find keys in `/root/.openclaw-{rivet,susan,...}/` memory files" was a false lead — those dirs are skeletal post-hibernation. All keys were already in `/root/.hermes/.env` and got auto-cloned by `hermes profile create --clone`.
- The `cannot rename default profile` constraint stands. `default` IS the LFCS lane / opsman lane / "HQ_COO_BOSS" host (Rocky's preferred branding). Kanban assignee strings stay as `default` for LFCS work.
- Whatsapp bridge port 3500 keeps disconnecting + gateway auto-restarts (Restart=on-failure recovers within 30s). Pre-existing issue, doesn't affect dispatch. Logged for future debug.

**Action items:**
- Optional: Rocky creates `@hq_coo_boss` Telegram bot via @BotFather + drops token into `/root/.hermes/.env` (since default is the orchestrator host). Bot rename of existing watchdog bot is also an option. Not blocking — current `@opsman_lfcs_bot` works fine.
- Optional: wire coo profile as auto-triager via cron (poll unassigned tasks, set assignee). Currently Rocky/Cowork sets assignee manually. Add later if dispatch volume grows.
- Defer Phase 5 (OpenClaw → claw migration). OpenClaw OpsMan still actively used.

**Resume notes:**
- 4 profiles registered: `default` (LFCS, MiniMax) · `coo` (MiniMax) · `rr` (Kimi) · `siteops` (DeepSeek). All have 5 fallback keys.
- 5 Kanban boards: `default · lfcs · rr · siteops · infra`. Switch with `hermes kanban boards switch <slug>`. Add tasks: `hermes kanban create "<title>" --assignee <profile> [--safety-class real|routine]`.
- Dispatch happens automatically on the gateway's 60s tick. Watch with `hermes kanban tail` or check `journalctl -u hermes-gateway -f`.
- Revert anchor: `git checkout v0.11-pre-multiprofile-2026-05-07` + `hermes profile delete -y coo rr siteops`.

## Wins
- 

## Blockers
- 

## Tomorrow
- 
