# Telegram → Matrix Cutover Plan > **Issue**: [#166](http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/166) — Stand up Matrix/Conduit for human-to-fleet encrypted communication > **Scaffold**: [#183](http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/183) > **Created**: Ezra, Archivist | Date: 2026-04-05 > **Purpose**: Zero-downtime migration from Telegram to Matrix as the sovereign human-to-fleet command surface. --- ## Principle **Parallel operation first, cutover second.** Telegram does not go away until every agent confirms Matrix connectivity and Alexander has sent at least one encrypted message from Element. --- ## Phase 0: Pre-Conditions (All Must Be True) | # | Condition | Verification Command | |---|-----------|---------------------| | 1 | Conduit deployed and healthy | `curl https:///_matrix/client/versions` | | 2 | Fleet rooms created | `python3 infra/matrix/scripts/bootstrap-fleet-rooms.py --dry-run` | | 3 | Alexander has Element client installed | Visual confirmation | | 4 | At least 3 agents have Matrix accounts | `@agentname:` exists | | 5 | Hermes Matrix gateway configured | `hermes gateway` shows Matrix platform | --- ## Phase 1: Parallel Run (Days 1–7) ### Day 1: Room Bootstrap ```bash # 1. SSH to Conduit host cd /opt/timmy-config/infra/matrix # 2. Verify health ./host-readiness-check.sh # 3. Create rooms (dry-run first) export MATRIX_HOMESERVER="https://matrix.timmytime.net" export MATRIX_ADMIN_TOKEN="" python3 scripts/bootstrap-fleet-rooms.py --create-all --dry-run # 4. Create rooms (live) python3 scripts/bootstrap-fleet-rooms.py --create-all ``` ### Day 1: Operator Onboarding 1. Open Element Web at `https://element.` or install Element desktop. 2. Register/login as `@alexander:`. 3. Join `#fleet-ops:`. 4. Send a test message: `First light on Matrix. Acknowledge, fleet.` ### Days 2–3: Agent Onboarding For each agent/wizard house: 1. Create Matrix account `@:`. 2. Join `#fleet-ops:` and `#fleet-general:`. 3. Send acknowledgment in `#fleet-ops`. 4. Update agent's Hermes gateway config to listen on Matrix. ### Days 4–6: Parallel Commanding - **Alexander sends all commands in BOTH Telegram and Matrix.** - Agents respond in the channel where they are most reliable. - Monitor for message loss or delivery delays. --- ## Phase 2: Cutover (Day 7) ### Step 1: Pin Matrix as Primary In Telegram `#fleet-ops`: > "📌 PRIMARY SURFACE CHANGE: Matrix is now the sovereign command channel. Telegram remains as fallback for 48 hours. Join: ``" ### Step 2: Telegram Gateway Downgrade Edit each agent's Hermes gateway config: ```yaml # ~/.hermes/config.yaml gateway: primary_platform: matrix fallback_platform: telegram matrix: enabled: true homeserver: https://matrix.timmytime.net rooms: - "#fleet-ops:matrix.timmytime.net" telegram: enabled: true # Fallback only ``` ### Step 3: Verification Checklist - [ ] Alexander sends command **only** on Matrix - [ ] All agents respond within 60 seconds - [ ] Encrypted room icon shows 🔒 in Element - [ ] No messages lost in 24-hour window - [ ] At least one voice/file message test succeeds ### Step 4: Telegram Standby If all checks pass: 1. Pin final notice in Telegram: "Fallback mode only. Active surface is Matrix." 2. Disable Telegram bot webhooks (do not delete the bot). 3. Update Commandment 6 documentation to reflect Matrix as sovereign surface. --- ## Rollback Plan If Matrix becomes unreachable or messages are lost: 1. **Immediate**: Alexander re-sends command in Telegram. 2. **Within 1 hour**: All agents switch gateway primary back to Telegram: ```yaml primary_platform: telegram ``` 3. **Within 24 hours**: Debug Matrix issue (check Conduit logs, Caddy TLS, DNS). 4. **Re-attempt cutover** only after root cause is fixed and parallel run succeeds for another 48 hours. --- ## Post-Cutover Maintenance | Task | Frequency | Command / Action | |------|-----------|------------------| | Backup Conduit data | Daily | `tar czvf /backups/conduit-$(date +%F).tar.gz /opt/timmy-config/infra/matrix/data/conduit/` | | Review room membership | Weekly | Element → Room Settings → Members | | Update Element Web | Monthly | `docker compose pull && docker compose up -d` | | Rotate access tokens | Quarterly | Element → Settings → Help & About → Access Token | --- ## Accountability | Role | Owner | Responsibility | |------|-------|----------------| | Deployment | @allegro / @timmy | Run `deploy-matrix.sh` and room bootstrap | | Operator onboarding | @rockachopa (Alexander) | Install Element, verify encryption | | Agent gateway cutover | @ezra | Update Hermes gateway configs, monitor logs | | Rollback decision | @rockachopa | Authorize Telegram fallback if needed | --- *Filed by Ezra, Archivist | 2026-04-05*