# PRD — Hermes Decommission & Tenant-1 Migration · Workstream X > **Status:** DRAFT for ratification · **Goals:** X1–X3 · **Doctrine:** NS-13, ASM-8 (Hermes untouched until verified parity) > Ratified direction (D2, 2026-07-09): Mosaic absorbs **all four** Hermes functions — messaging bridge, task board, permission relay, multi-platform reach. ## Deployment scope (D12/ASM-9) The trial runs in the **homelab**. Hermes and the primitive-era stack (`mos-claude.service`, jarvis-brain boards) live in the **USC/web1 environment**, which is untouched during the trial. This workstream therefore lands in two stages: **X-in-homelab** (prove parity where the fleet is native — mainly K/P/Q verification plus tenant-1 migration) and **X-at-USC** (post-trial adoption: apply the parity checklist to web1, migrate Mos-on-web1 to `mosaic-agent@orchestrator`, then decommission Hermes there, with `/src/infrastructure` GitOps updates in the same delivery set). ## Mission Retire Hermes entirely. Mosaic becomes the platform for transport (Matrix connector), task board (native backlog + webUI/adapters), approvals (permission relay), and multi-platform reach (mautrix bridges). In the same arc, Jason's jarvis-brain flat-file data migrates into the product as **tenant #1**, making the product's PA feature set the dogfooded default. ## Parity map (what replaces what) | Hermes function | Mosaic replacement | Workstream | |---|---|---| | Messaging bridge (Discord/Telegram/…) | Matrix connector + mautrix bridges | K1, K2 | | Kanban / task board | Native Mosaic Backlog + webUI board + provider adapters | A*, Q, W3 | | Permission relay (`permissions_*`) | Guard-rails engine + approval queue (Matrix + webUI) | P1–P3 | | Cross-platform user reach | mautrix bridges (agents speak Matrix only) | K2 | | Hermes MCP tools in agent sessions | Mosaic-native equivalents (gateway API / MCP) | J2, Q1 | ## Requirements ### Parity checklist + cutover plan (X1) | ID | Requirement | |---|---| | X-R1 | A written, testable parity checklist per row above; each item verified in production before its Hermes counterpart is disabled. | | X-R2 | Cutover is staged with rollback at every stage; Hermes runs untouched until AC-NS-11 is verified (ASM-8). | | X-R3 | The Matrix charter's live-cutover rules apply: stated window, announce before/after, rollback ready. | ### Tenant-1 migration (X2) | ID | Requirement | |---|---| | X-R4 | One-shot migrator: `data/projects/*.json`, `data/tasks/*.json`, `data/events/*.json`, `data/tickets.json`, and knowledge-worthy docs → the Jason workspace (Project/Task/Event/KnowledgeEntry entities), preserving ids in metadata for traceability. | | X-R5 | Dry-run mode with a diffable report; Jason ratifies the report before the real run (canonical-data gate — this is the one migration step that is his call). | | X-R6 | External sync jobs (GLPI, Google Calendar, ICS, Gmail) are re-pointed to product integrations; each re-point verified before the flat-file sync job is retired. | | X-R7 | jarvis-brain repo is archived read-only after cutover (history preserved); generated views and brain.py retire. Agent meta-observation flow (OpenBrain/OpenViking) is unaffected — it was never Hermes. | ### Decommission (X3) | ID | Requirement | |---|---| | X-R8 | Hermes services stopped, disabled, and removed from infra (GitOps: `/src/infrastructure` updated in the same delivery set); credentials revoked; MCP registrations removed from agent runtimes. | | X-R9 | 30-day observation window between stop and removal; any regression flips back per X-R2 rollback. | ## Acceptance criteria 1. AC-NS-11: with Hermes stopped, no fleet or main-agent capability regresses. 2. `python tools/brain.py today`'s information content is fully answerable by Jarvis from the product workspace post-X2. 3. Zero references to Hermes MCP tools in any active agent runtime config after X3. ## Sequencing note X depends on the longest chains (K1→K2, P2, Q1, J2). Expected order of value delivery: J1–J4 (Jarvis on existing transport interim) → K1/J5 (Matrix room) → P2, W1–W3, Q1 in parallel → X1 checklist → X2 migration → K2 bridges → X3 decommission. - ASSUMPTION (interim transport): until K1 lands, Jarvis may run against the tmux connector (CLI/`agent send`) rather than standing up any Discord channel — keeps D1 (Matrix-first, no #jarvis Discord) intact.