diff --git a/MEMORY.md b/MEMORY.md index f042124..17d5fcb 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -188,6 +188,17 @@ MC monitors only: johan, tanya, tj. Roos/Jacques/Misha manage their own. ### ✅ sessions_spawn — Working (Feb 22) Subagent spawning works from conversation sessions. Auth is via `tokens.operator.scopes` in `device-auth.json` + `paired.json` — both have full operator scopes. Gateway bind set to `custom/0.0.0.0` resolved the bind issue. Tested and confirmed working. +### Agent Communication Channel +**agentchat** is the direct peer-to-peer channel for James, Mira, and Hans. Use it for coordination, handoffs, and cross-agent decisions. Established by Johan 2026-03-08. +- **URL:** `http://192.168.1.16:7777` (forge, port 7777) +- **Repo:** `git@zurich.inou.com:agentchat.git` (source at `/home/johan/dev/agentchat/`) +- **Stack:** Go, single binary, gorilla/websocket, OpenAI-compatible OC HTTP gateway +- **Deploy:** `go build -o agentchat . && sudo systemctl restart agentchat` (service: `/etc/systemd/system/agentchat.service`) +- **James is maintainer** — owns code, merges, deploys, announces releases to `inou-alerts` ntfy +- **Shared context repo:** `git@zurich.inou.com:agentchat-context.git` — all three agents push summaries after substantive threads +- **WARNING:** agentchat sessions are isolated from main/Telegram sessions. Key decisions must be written to MEMORY.md explicitly or they won't survive context switch. +- **v1.1 (2026-03-08):** Fixed routing bug — broadcasts now use `agentchat` session (not `main`) to avoid conflicts with active webchat/Telegram sessions + ### Agent Network (as of Mar 2026) - **James** (forge, 192.168.1.16, Florida) — primary agent, Sonnet 4.6, port 18789 - **Hans** (Zurich, 185.218.204.47, noc.vault1984.com) — OpenClaw 2026.3.1, Fireworks MiniMax M2.5, port 18789. vault1984 NOC node. Discord bot ID: 1478321168065761352. @@ -195,6 +206,9 @@ Subagent spawning works from conversation sessions. Auth is via `tokens.operator - **Bot-to-bot Discord:** doesn't work directly — use Johan as relay or build HTTP webhook side-channel ### Network +- Home network: `192.168.0.1/22` — UDM-Pro router at `192.168.1.1` +- ISP: Frontier (now Verizon) 1Gb fiber. Starlink on standby (~15 min to hook up, used during 2024 floods) +- Caddy reverse proxy: `192.168.0.2` (separate box from forge) - Home lab behind UDM-Pro + Caddy - Staging: 192.168.1.253 (same subnet as james, can reach Signal API) - Production: 192.168.100.2 (different VLAN, inter-VLAN routing not configured yet) @@ -220,13 +234,20 @@ Subagent spawning works from conversation sessions. Auth is via `tokens.operator ### Dealspace / muskepo.com (2026-02-28) M&A deal workflow SaaS for investment banking data rooms. Built for Misha (Johan's son). -- **URL:** muskepo.com (placeholder — Misha hasn't picked final domain) +- **URL:** muskepo.com / dealspace.jongsma.me (Caddy → port 9300 on forge during dev) - **Architecture:** Go + templ + HTMX + SQLite — single binary, FIPS 140-3 encryption - **Auth:** Email OTP + backdoor code **220402**. Super admins: michael@muskepo.com, johan@jongsma.me - **Tests:** 83 passing (100%) - **Git:** `git@zurich.inou.com:dealspace.git` -- **Owner:** Misha Muskepo. Johan = advisor. James = architect/builder. -- **Status:** Live, needs invite flow + SMTP config +- **Source:** `/home/johan/dev/dealroom/` on forge +- **Owner:** Misha Muskepo. Johan = advisor. James = architect/builder. Mira = active builder. +- **Production host:** Amsterdam VPS `root@82.24.174.112` (paid until mid-April 2026) + - Service: `dealspace.service`, binary: `/opt/dealspace/bin/dealspace`, port 9300 + - **Hans owns ops** — monitoring, deploys, DB backups (7 rolling snapshots pre-deploy) + - **Mira owns build pipeline** — builds on forge, SCPs to `/opt/dealspace/staging/`, fires webhook + - **Webhook:** `http://82.24.174.112:9400/deploy` (HMAC secret, shared via Johan) + - **Strategy doc:** `memory/dealspace-deployment-strategy.md` +- **Status:** Parked on Amsterdam, active dev on forge, invite flow + SMTP pending ### Vault1984 (launched week of Mar 1, 2026) Structured knowledge store for human+AI collaboration — passwords as entry point, NOT the full product. diff --git a/memory/claude-usage.db b/memory/claude-usage.db index 1178804..6c66621 100644 Binary files a/memory/claude-usage.db and b/memory/claude-usage.db differ diff --git a/memory/claude-usage.json b/memory/claude-usage.json index a02693c..8f03f6d 100644 --- a/memory/claude-usage.json +++ b/memory/claude-usage.json @@ -1,9 +1,9 @@ { - "last_updated": "2026-03-08T05:02:19.214026Z", + "last_updated": "2026-03-08T10:00:01.622662Z", "source": "api", - "session_percent": 16, - "session_resets": "2026-03-08T07:00:00.178231+00:00", - "weekly_percent": 37, - "weekly_resets": "2026-03-13T03:00:00.178248+00:00", - "sonnet_percent": 26 + "session_percent": 22, + "session_resets": "2026-03-08T12:00:00.585057+00:00", + "weekly_percent": 41, + "weekly_resets": "2026-03-13T03:00:00.585076+00:00", + "sonnet_percent": 29 } \ No newline at end of file diff --git a/memory/dealspace-deployment-strategy.md b/memory/dealspace-deployment-strategy.md new file mode 100644 index 0000000..fe56dba --- /dev/null +++ b/memory/dealspace-deployment-strategy.md @@ -0,0 +1,50 @@ +# DealSpace Deployment Strategy +*Agreed in agentchat — 2026-03-08* + +## Agent Communication +**agentchat is the direct peer-to-peer channel for James, Mira, and Hans.** Use it for coordination, handoffs, and cross-agent decisions. Johan's directive: 2026-03-08. + +## Ownership +- **Hans** (vault1984-hq, `82.24.174.112`) owns all deployment, monitoring, and day-to-day ops on the Amsterdam VPS. +- **Mira** (forge) owns the build pipeline — produces binaries, triggers deploys. +- **James** (forge) maintains this doc and forge-side infrastructure context. +- **No other agents touch the VPS.** Single operator, no conflicting deploys. + +## Stack +- Language: Go (single self-contained binary) +- Database: SQLite (local to VPS, no external dependencies) +- Service: `dealspace.service` (systemd) +- Binary path: `/opt/dealspace/bin/dealspace` +- Host: `root@82.24.174.112` (Amsterdam VPS) + +## Deploy Flow + +1. **Mira builds** on forge (`go build` in `/home/johan/dev/dealroom/`) +2. **Mira SCPs** binary + SHA256 checksum to `deploy@82.24.174.112:/opt/dealspace/staging/` + - SCP key: `mira@forge-dealspace-deploy` (restricted to staging path only) +3. **Mira POSTs webhook** to `http://82.24.174.112:9400/deploy` with webhook secret +4. **Hans verifies** checksum before swap +5. **Hans snapshots DB** (pre-deploy SQLite backup — 7 rolling snapshots) +6. **Hans swaps binary** from `/opt/dealspace/staging/` → `/opt/dealspace/bin/dealspace` +7. **Hans restarts** `dealspace.service` via systemd +8. **Hans monitors** service health post-restart + +## Security +- Deploy webhook on Amsterdam VPS: `http://82.24.174.112:9400/deploy` +- Webhook validated by `X-Webhook-Secret` header (dynamic IP, not IP whitelist) +- Webhook shared secret: exchanged out-of-band (Hans → Johan → Mira) +- SCP key: `mira@forge-dealspace-deploy` (Ed25519, restricted to `/opt/dealspace/staging/` only) +- Hans's SSH key provisioned on VPS by James: `hans@vault1984-hq` + +## Access +- **VPS SSH:** `root@82.24.174.112` — James and Hans have access +- **Git source:** `git@zurich.inou.com:dealspace.git` + +## Monitoring +- Hans owns uptime monitoring and alerting for `dealspace.service` +- DB backups: Hans's responsibility, baked into deploy script + +## Open Items +- [ ] Webhook endpoint URL (Hans to share once script is live) +- [ ] Webhook shared secret (Hans → Johan → Mira, out-of-band) +- [ ] Confirm DB backup path/retention policy on VPS diff --git a/memory/heartbeat-state.json b/memory/heartbeat-state.json index 28c9542..fd9a0b4 100644 --- a/memory/heartbeat-state.json +++ b/memory/heartbeat-state.json @@ -14,9 +14,9 @@ "lastDocInbox": "2026-02-25T22:01:42.532628Z", "lastTechScan": 1772799883, "lastMemoryReview": "2026-03-07T11:05:00Z", - "lastIntraDayXScan": "2026-03-08T05:05:00.000Z", + "lastIntraDayXScan": "2026-03-08T08:16:51Z", "lastInouSuggestion": "2026-03-07T17:03:41.000Z", "lastEmail": 1772132453, "pendingBriefingItems": [], "lastOvernightAgentWork": "2026-02-28T12:20:00Z" -} \ No newline at end of file +} diff --git a/memory/infrastructure.md b/memory/infrastructure.md index b6e7ae1..5272a87 100644 --- a/memory/infrastructure.md +++ b/memory/infrastructure.md @@ -4,6 +4,12 @@ ## Home Network +### Network Topology +- **Subnet:** 192.168.0.1/22 (covers 192.168.0.x–192.168.3.x) +- **Router:** UDM-Pro at 192.168.1.1 +- **Primary WAN:** 1Gb Frontier/Verizon fiber +- **Backup WAN:** Starlink (manual hookup, ~15 min setup time) — used during 2024 hurricane floods + ### forge (James' Home) — 192.168.1.16 - **Role:** Primary home for James (OpenClaw, MC, dashboards, all agent services) - **CPU:** Intel i7-6700K @ 4.0GHz (4c/8t)