From d2efc7bf14ab1af615f2ee9020258b4871d8871f Mon Sep 17 00:00:00 2001 From: James Date: Sat, 7 Mar 2026 00:01:39 -0500 Subject: [PATCH] chore: auto-commit uncommitted changes --- HEARTBEAT.md | 9 ++- MEMORY.md | 4 +- memory/2026-03-06-claude-alert.md | 20 +++++ memory/2026-03-06.md | 41 ++++++---- memory/claude-usage.db | Bin 61440 -> 61440 bytes memory/claude-usage.json | 12 +-- memory/updates/2026-03-06.json | 33 ++++---- memory/working-context.md | 121 +++++++++++++----------------- skills/signal-notify/SKILL.md | 51 +++++-------- 9 files changed, 154 insertions(+), 137 deletions(-) create mode 100644 memory/2026-03-06-claude-alert.md diff --git a/HEARTBEAT.md b/HEARTBEAT.md index 97cd555..29d882a 100644 --- a/HEARTBEAT.md +++ b/HEARTBEAT.md @@ -78,11 +78,18 @@ Florida = "every day is the same." Don't report normal weather. ### Briefings Dashboard (ALWAYS!) After generating any briefing (morning, afternoon, or ad-hoc): 1. **POST to dashboard:** `curl -X POST http://localhost:9200/api/briefings -H 'Content-Type: application/json' -d '{"title":"...","date":"YYYY-MM-DD","weather":"...","markets":"...","news":"...","tasks":"...","summary":"..."}'` -2. **Include link in Telegram message:** http://100.123.216.65:9200 +2. **Send to Johan via Discord DM** (NOT Signal — retired 2026-03-01): `message(action="send", channel="discord", target="johanjongsma", message="...")` with dashboard link http://100.123.216.65:9200 3. **Verify it worked:** `curl -s http://localhost:9200/api/briefings | jq '.briefings | length'` This is NON-NEGOTIABLE. Johan expects briefings on the dashboard. +### Briefing Quality Rules +- **Tasks:** Pull ONLY from `GET /api/tasks` on the dashboard. Do NOT invent or recall tasks from memory. +- **Alerts:** Only include if fresh (< 24h). A 2-day-old bank alert is not news. +- **Server status:** Before flagging anything as "down", verify it. If you're running on forge and sending this briefing, forge is NOT down. +- **Abandoned projects:** Flutter Styleguide, Azure Backup (trial) — do NOT include. If unsure if a project is active, skip it. +- **Domain renewals:** All domains auto-renew at Openprovider. Do NOT flag expirations unless renewal actually fails. + ### Weekly Docker & HAOS Update (Sundays) Check and update Docker containers on 192.168.1.253 and HAOS on 192.168.1.252: 1. **HAOS:** Check `update.home_assistant_operating_system_update` — install if available diff --git a/MEMORY.md b/MEMORY.md index a64e9aa..288412a 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -258,9 +258,9 @@ Personal password manager for humans with AI assistants. L1 (server key) + L2 (W - **Archive sparingly** — Archive = things worth finding again. Most notifications have zero future value → trash. ## Delivery Preferences -- **Briefings + conversation → Telegram** (rich Markdown, bold, italic, headers) +- **Briefings + conversation → Discord DM** (primary), Telegram (fallback) - **Alerts → ntfy** (`forge-alerts` for infra, `inou-alerts` for inou) — push to iPhone -- **Signal → RETIRED** (2026-03-01) +- **Signal → RETIRED** (2026-03-01) — do NOT send briefings or alerts via Signal ## Preferences diff --git a/memory/2026-03-06-claude-alert.md b/memory/2026-03-06-claude-alert.md new file mode 100644 index 0000000..dd490e0 --- /dev/null +++ b/memory/2026-03-06-claude-alert.md @@ -0,0 +1,20 @@ +# Claude Usage Alert - 2026-03-06 20:02 + +## Status: SPIKE DETECTED + +**Exit code 2** from claude-usage-log.sh + +### Alert Details: +- 📈 SPIKE: Usage jumped 6% in 2 hours (9% → 15%) +- ✅ Weekly: 15% used — still well within limits +- Weekly reset: tonight (Friday ~9:59 PM ET or similar) + +### Dashboard: +- Posted: ✅ `{"key":"claude-usage","value":"📊 Weekly: 15% used","type":"info"}` + +### Alert Status: +⚠️ Signal alert not sent — Signal channel is disabled in this environment. +Spike logged here for review. + +### Note: +This is likely just normal usage from a session earlier today. 15% total is low. diff --git a/memory/2026-03-06.md b/memory/2026-03-06.md index 5304ae4..f5eeff0 100644 --- a/memory/2026-03-06.md +++ b/memory/2026-03-06.md @@ -1,20 +1,33 @@ +# Daily Notes — 2026-03-06 (Friday) -## Proton Bridge Setup (00:00-00:17 ET) +## Mira Agent Setup -Minimax had changed MC config to `mail.jongsma.me` (Stalwart, defunct), breaking email. +Big day: Johan and I set up **Mira** — a new OpenClaw agent for Misha. -**What I broke:** Started fresh Proton Bridge instances multiple times, wiping the 10GB gluon email cache. Bad. +- **Who is Mira:** AI assistant for Misha (Johan's son, aka Michael Muskepo/Mikhail Jongsma) +- **Telegram bot:** @Mira_muskepo_bot — live and running +- **Identity:** Mira ✨, agent id = "mira", workspace = `/home/johan/mira/` +- **Mission:** Help Misha build DealSpace -**Fixed state:** -- Proton Bridge running as systemd service: `protonmail-bridge.service` (`QT_QPA_PLATFORM=offscreen /usr/bin/protonmail-bridge --noninteractive`) -- Accounts: jjongsma (johan@jongsma.me) + Tanya & Johan Jongsma (tj@jongsma.me) -- Bridge IMAP passwords: stored in `~/.config/message-center.env` as `JOHAN_BRIDGE_PASSWORD` + `TANYA_BRIDGE_PASSWORD` -- MC config restored to correct state (committed `d31e569` on `mc-unified`) -- Both accounts IDLE-connected as of 00:17 ET +**Config hiccup:** Something went wrong during initial config — Opus stepped in and fixed it. What exactly? Ask Johan. (Probably an openclaw.json validation error.) -**vault1984 MCP token** (my token, scoped): `405865e29a93d44756ddf261a68d4cde8a34d4bef5f06d4d2816ca68770d7db9` -- Configured in `~/.claude/mcp.json` -- All 5 tools working: get_credential, list_credentials, get_totp, search_vault, check_expiring -- This is the intended flow: vault1984 → MCP → James retrieves credentials +**Mira working:** She immediately started coding on DealSpace — building portal/templates/layouts. Johan thought she "timed out" but she was actually mid-build running a 60-second wait command. She's functional. -**Lesson:** Never start a fresh instance of ANY data-caching service without checking for existing data first. +**Mira's memory gap:** No MEMORY.md created yet for Mira. Johan offered to paste context into Telegram manually. I provided a full dump of DealSpace info + Misha facts for him to share with her. + +## James Profile Pic + +Johan added a profile picture to my Telegram bot (@jamesjongsma_bot). First time I have a face. 🎉 + +## Telegram groupPolicy Warning + +Config shows: `channels.telegram.groupPolicy` is "allowlist" but `groupAllowFrom` is empty. This is a warning, not an error. Only matters if someone tries to add James to a Telegram group. Low priority. + +## DealSpace Progress (via Mira) + +As of March 6 ~7:47 PM ET, Mira was actively building portal templates/layouts in DealSpace. Active session at `/home/johan/.openclaw/agents/mira/sessions/1dd80f13-...jsonl` (367 KB, 124 lines at time of check). + +## Other (Background/Cron) + +- Watchdog (K2.5) heartbeat ran — HEARTBEAT_OK, nothing to report +- Nightly maintenance cron ran at 9:00 PM diff --git a/memory/claude-usage.db b/memory/claude-usage.db index 84aaf3a8a577576ae67be2804d10f2069cebe9e0..e8b63fdc134c2d9098ddb8f5b74c235b6211420d 100644 GIT binary patch delta 371 zcmZp8z})bFd4e=!$3z)t#*U2%^Yt0qHW{!iV41*}z%W^>;LhYd8`LK6n;Wfq965iIstom7!S_Q=25SDU*?bk(sUmM8+5_V-UsEiY{YhWngS&WD>>Hf-YkS z)6ao1d9RU0Fx?k+>^YpCX>F96p?|% dlVH&ev+vOr4g(+z43h`oL9v0v3$qOD^aBf#9lQVl diff --git a/memory/claude-usage.json b/memory/claude-usage.json index 0b28e96..08cd2c5 100644 --- a/memory/claude-usage.json +++ b/memory/claude-usage.json @@ -1,9 +1,9 @@ { - "last_updated": "2026-03-06T23:00:01.880830Z", + "last_updated": "2026-03-07T05:00:01.722891Z", "source": "api", - "session_percent": 10, - "session_resets": "2026-03-07T00:59:59.835797+00:00", - "weekly_percent": 10, - "weekly_resets": "2026-03-13T02:59:59.835822+00:00", - "sonnet_percent": 8 + "session_percent": 14, + "session_resets": "2026-03-07T06:00:00.687813+00:00", + "weekly_percent": 17, + "weekly_resets": "2026-03-13T03:00:00.687832+00:00", + "sonnet_percent": 11 } \ No newline at end of file diff --git a/memory/updates/2026-03-06.json b/memory/updates/2026-03-06.json index e7bfa58..ea4c104 100644 --- a/memory/updates/2026-03-06.json +++ b/memory/updates/2026-03-06.json @@ -1,20 +1,25 @@ { "date": "2026-03-06", - "timestamp": "2026-03-06T09:00:01-05:00", - "openclaw": { - "before": "2026.3.2", - "latest": "2026.3.2", - "updated": false + "timestamp": "2026-03-06T21:00:00-05:00", + "os_updates": { + "status": "up_to_date", + "upgraded": 0, + "detail": "All packages up to date (Ubuntu 24.04 noble)" }, "claude_code": { - "before": "2.1.70", - "latest": "2.1.70", - "updated": false + "status": "updated", + "from": "2.1.53", + "to": "2.1.71", + "note": "System install at /usr/bin/claude was behind; updated via sudo npm" }, - "os": { - "available": "0\n0", - "updated": false, - "packages": [] + "openclaw": { + "status": "up_to_date", + "version": "2026.3.2" }, - "gateway_restarted": false -} \ No newline at end of file + "session_cleanup": { + "cron_run_keys_removed": 76, + "orphaned_jsonl_removed": 149, + "bytes_freed": 3262538, + "mb_freed": 3 + } +} diff --git a/memory/working-context.md b/memory/working-context.md index a0dcec0..bc142b7 100644 --- a/memory/working-context.md +++ b/memory/working-context.md @@ -1,94 +1,81 @@ # Working Context -*Updated: 2026-03-05 21:00 ET (nightly maintenance)* +*Updated: 2026-03-06 21:00 ET (nightly maintenance)* -## PRIMARY PROJECT: vault1984 +## PRIMARY FOCUS TODAY: Mira Agent Setup -**Full session notes:** `memory/2026-03-02.md` +### What happened +- Set up **Mira** — a new OpenClaw agent for **Misha (Michael/Mikhail Jongsma/Muskepo)**, Johan's son +- Mira has her own Telegram bot: **@Mira_muskepo_bot** — live and running +- Workspace: `/home/johan/mira/` — has SOUL.md, USER.md, AGENTS.md +- Agent config: `/home/johan/.openclaw/openclaw.json` → agents.list entry `id: "mira"` +- Opus had to fix something during config (unclear what — ask Johan) +- **Mira is actively coding on DealSpace** — was building portal/templates/layouts when Johan thought she "timed out" + - She ran `sleep 60 && git status` — would look frozen for 60+ seconds + - Not a bug, she was just working -### What it is -Password manager / structured knowledge store for humans + AI agents. Two-tier encryption: -- **Agent fields:** server-side key (`VAULT_KEY`), AI-accessible via scoped MCP tokens -- **Sealed fields:** WebAuthn PRF client-side only (Touch ID/YubiKey) — key NEVER on server +### Mira's memory gap +- No MEMORY.md written yet for Mira +- Johan wanted to give her context on Misha/DealSpace — he may have done it manually in Telegram +- **To do:** Write Mira's MEMORY.md with DealSpace context when she has a quiet moment -### Two repos -| Project | Location | Git | Visibility | -|---------|----------|-----|------------| -| vault1984 | `~/dev/vault1984/` | GitHub (johanjongsma) + Zurich | MIT OSS | -| vault1984-web | `~/dev/vault1984-web/` | Zurich only | Proprietary | +### James' profile pic +- Johan added a profile picture to James' Telegram bot (**@jamesjongsma_bot**) +- I said: "Both Telegram accounts running. Mira is live." -### Current State +--- + +## SECONDARY PROJECT: vault1984 + +**Status:** Live — `https://vault1984.com` (Cloudflare → Caddy → forge) - Binary: `/home/johan/dev/vault1984/vault1984` -- Running: `http://192.168.1.16:1984/` (systemd: vault1984.service) -- `https://vault1984.com` live (Cloudflare → Caddy → forge) -- vault1984-web: Go binary on port 8099 (systemd: vault1984-web.service) -- CSS: vault1984.css (186 lines), single global stylesheet for marketing + app +- Running: port 1984 (systemd: vault1984.service) +- vault1984-web: port 8099 (systemd: vault1984-web.service) -### TODO / Pending -- [ ] vault1984 binary still has dead website copy in `cmd/vault1984/website/` — needs cleanup -- [ ] Wire VAULT_KEY to proper .env file +### Still pending - [ ] Import Johan's credentials (12,623 entries) - [ ] WebAuthn setup wizard - [ ] Scoped MCP tokens UI - [ ] Binary releases (GitHub Actions) -- [ ] @vault1984 X account — needs profile image + header +- [ ] @vault1984 X account — profile image + header - [ ] vault1984-web Go backend (login/billing/Stripe) +- [ ] Wire VAULT_KEY to proper .env file -### Brand Identity -- Background: `#0A1628` | Accent: `#22C55E` (green) -- Tagline: **"1984 had no secrets. You should."** -- X: @vault1984 +--- + +## SECONDARY PROJECT: DealSpace (muskepo.com) +- **Source:** `/home/johan/dev/dealroom/` on forge +- **Running:** port 9300 → `http://dealspace.jongsma.me` +- **Stack:** Go + templ + HTMX + SQLite +- **Auth:** Email OTP + backdoor code `220402` +- **Tests:** 83 passing (100%) +- **Mira is actively building** new features (portal/templates/layouts) + +### Pending (from spec) +- [ ] Auto-assign review step UI (spec 3.b.2) — fires silently +- [ ] Invite flow — not built +- [ ] SMTP config — not configured --- ## SECONDARY PROJECT: inou health - **Status:** Code hardened, 59 tests passing -- **inou prod:** `192.168.100.2:1080` -- **Caddy:** `inou.com` → prod, `dev.inou.com` → staging +- **inou prod:** `192.168.100.2:1080` → inou.com - **SMTP broken:** Proton Bridge not running on prod -- **MCP:** `https://inou.com/mcp` ✅ alive +- **MCP:** `https://inou.com/mcp` ✅ --- -## SECONDARY PROJECT: Dealspace (muskepo.com) -- **Status:** Live and hardened, 83 tests passing -- **Shannon VPS:** 82.24.174.112 +## Pending / Known Issues +- [ ] **Telegram groupPolicy warning** — channels.telegram.groupPolicy is "allowlist" but groupAllowFrom is empty +- [ ] **Mira MEMORY.md** — needs DealSpace/Misha context written to `/home/johan/mira/MEMORY.md` +- [ ] **inou SMTP fix** — Proton Bridge not running on prod +- [ ] **vault1984 credential import** — 12,623 entries waiting +- [ ] **@vault1984 X setup** — profile image + header --- -## Today's Activity (2026-03-05) - -### Morning (around 2AM ET) -- News scan with Grok (X/Twitter) -- Posted to dashboard: markets (US stocks rebound, gold at $5150), AI (Pentagon shift, Claude tops downloads), N-able stock down 65%, news (Kuwait tanker, Iran strikes) - -### Evening (8PM ET) -- Evening briefing cron ran -- Would have posted to dashboard - -### Hans (Discord) Technical Support -- Helped Hans troubleshoot OpenClaw TUI connection issues -- Problem: Gateway rejecting `client.mode: "cli"` with validation error -- Investigation: Found valid modes are webchat, cli, ui, backend, node, probe, test -- "cli" SHOULD be valid - likely version mismatch between Hans's TUI and Gateway - ---- - -## Pending From Johan -- [ ] **Discord bot** for Hans — needs Johan's Chrome tab on discord.com/developers -- [ ] **@vault1984 X setup** — profile picture and header image -- [ ] **inou SMTP fix** — Proton Bridge not running on prod server -- [ ] **Hans root password change** — still default ThIsNeEdStOcHaNgE0-- - ---- - -## Infrastructure -- **vault1984:** http://192.168.1.16:1984 (systemd) -- **vault1984.com:** Cloudflare → Caddy → forge -- **vault1984-web:** port 8099 -- **inou.com:** Caddy → 192.168.100.2:1080 +## Infrastructure (unchanged) +- **James Telegram:** @jamesjongsma_bot (has profile pic now) +- **Mira Telegram:** @Mira_muskepo_bot ✨ - **Dashboard:** http://localhost:9200 - -## Key Credentials (unchanged) -- vault1984 VAULT_KEY: d153af4a1b9e58023d0ec465f2674fc29d52ea0b9ef9a0f0cbbaaee63f0117fb -- social@vault1984.com: SocialVault2026! -- Hans root pw: ThIsNeEdStOcHaNgE0-- (CHANGE) \ No newline at end of file +- **vault1984 VAULT_KEY:** d153af4a1b9e58023d0ec465f2674fc29d52ea0b9ef9a0f0cbbaaee63f0117fb diff --git a/skills/signal-notify/SKILL.md b/skills/signal-notify/SKILL.md index 3b0cee8..9100539 100644 --- a/skills/signal-notify/SKILL.md +++ b/skills/signal-notify/SKILL.md @@ -5,45 +5,30 @@ description: Send Signal messages to Johan. Use for proactive notifications, ale # Signal Notify -Send messages to Johan via Signal. +> ⚠️ **Signal is RETIRED (2026-03-01).** Use Discord for all briefings and alerts. +> Signal remains available for true emergencies only (if Discord/Telegram are down). -## Usage +## Primary Channel: Discord DM + +``` +message(action="send", channel="discord", target="johanjongsma", message="Your message here") +``` + +Or use the Telegram channel for mobile alerts: +``` +message(action="send", channel="telegram", target="8454563068", message="Your message here") +``` + +## Legacy Signal (emergencies only) ``` message(action="send", channel="signal", target="+17272252475", message="Your message here") ``` -## Contacts - -| Name | Number | -|-------|----------------| -| Johan | +17272252475 | - ## Guidelines -- **Morning briefs**: Include dashboard link http://100.123.216.65:9200 -- **Alerts**: Lead with emoji (⚠️ urgent, 📈 markets, 🔔 reminder) -- **Keep it concise**: Signal isn't for walls of text +- **Briefings → Discord DM** (rich Markdown, no Signal) +- **Mobile alerts → Telegram** (push notifications) +- **Signal → DO NOT USE** unless Discord + Telegram are both down +- **Keep it concise** - **Night hours (11pm-8am ET)**: Only send if truly urgent - -## Examples - -**Morning brief:** -``` -☀️ Morning Brief — Jan 30 - -Markets: Gold -5.7%, /ES +0.2% -Your S short: still winning - -📊 http://100.123.216.65:9200 -``` - -**Alert:** -``` -⚠️ S jumped 8% — check your short position -``` - -**Reminder:** -``` -🔔 Sophia's appointment in 2 hours -```