From b9076edc5b04bfd23584cf49958d724934bc99a8 Mon Sep 17 00:00:00 2001 From: James Date: Sun, 15 Mar 2026 06:02:46 -0400 Subject: [PATCH] chore: auto-commit uncommitted changes --- HEARTBEAT.md | 33 ++++++++++++++++++++++++++++++++ drafts/vault1984-pr-plan.md | 16 ++++++++++++++++ drafts/x-inou-promotion-plan.md | 20 +++++++++++++++++++ memory/claude-usage.db | Bin 69632 -> 73728 bytes memory/claude-usage.json | 10 +++++----- memory/updates/2026-03-15.json | 22 +++++++++++++++++++++ scripts/daily-updates.sh | 28 ++++++++++++++------------- 7 files changed, 111 insertions(+), 18 deletions(-) create mode 100644 memory/updates/2026-03-15.json diff --git a/HEARTBEAT.md b/HEARTBEAT.md index 29d882a..37e25ee 100644 --- a/HEARTBEAT.md +++ b/HEARTBEAT.md @@ -59,6 +59,39 @@ sessions_spawn(task="inou daily suggestion: review memory/inou-context.md and re --- +### Cron Job Failure Check (every heartbeat) +Check if systemd timers/services have failed since last run: +```bash +systemctl --user list-units --state=failed --no-legend 2>/dev/null +``` +Key timers to watch: `daily-updates.timer`, `k2-watchdog.timer` + +If any service shows `Result=exit-code` or `ActiveState=failed`: +1. Check logs: `journalctl --user -u -n 50 --no-pager` +2. If it's `daily-updates.service` failing: check `memory/updates/YYYY-MM-DD.json` for what ran (nightly maintenance may have covered it), then fix the script +3. **Alert via ntfy (forge-alerts)** — don't wait for Johan to notice + +```bash +# Quick check +systemctl --user show daily-updates.service --property=Result,ActiveState | grep -v "^$" +``` + +--- + +### Disk Usage Check (every heartbeat) +```bash +df -h / | awk 'NR==2 {print $5, $4}' +``` +- **< 70%:** Fine, no action +- **70–85%:** Note in next briefing +- **> 85%:** Alert via ntfy (forge-alerts) immediately +- **> 90%:** URGENT — ping Johan + +Current baseline: ~54% used (236G / 469G) as of 2026-03-15. +Top consumers to check if filling fast: ClickHouse (`/var/lib/docker`), Jellyfin media, doc inbox. + +--- + ### Memory Review (daily) Quick scan of today's conversations for durable facts worth remembering: - New people, relationships, preferences diff --git a/drafts/vault1984-pr-plan.md b/drafts/vault1984-pr-plan.md index 97acbdc..40ff1e8 100644 --- a/drafts/vault1984-pr-plan.md +++ b/drafts/vault1984-pr-plan.md @@ -35,6 +35,22 @@ Not a blog post. A letter. With the list of laws, the architecture argument, and --- +## High-value X targets + +**Peter Steinberger (@steipete)** +Founder of OpenClaw, just joined OpenAI to "bring agents to everyone." Actively amplifies tools built around OpenClaw. 5.3M views on his OpenAI announcement tweet. Not a cold pitch — engage when vault1984 is the natural answer to "my OpenClaw agent needs credentials." The connection: vault1984 is the credential layer for exactly what he's building. + +**Chao Huang (@huang_chao4969)** +CLI-Anything — "making ALL software agent-native." 11K GitHub stars in 5 days, 18.2K views on this tweet. The connection: CLI-Anything makes any software agent-controllable. Every agent controlling software needs credentials. vault1984 is the answer to the problem CLI-Anything creates at scale. Engage in the #clianything / #AIAgents threads when vault1984 ships. Natural reply, not a cold pitch. + +**Brian Krebs (@briankrebs)** +krebsonsecurity.com. Most read security journalist. Covered LastPass breach exhaustively. Pitch the LastPass page + architecture when product ships. + +**Troy Hunt (@troyhunt)** +HaveIBeenPwned.com. THE breach authority. One mention reaches every security professional. Architecture argument is his language. + +--- + ## Distribution plan (when ready) ### Anchor diff --git a/drafts/x-inou-promotion-plan.md b/drafts/x-inou-promotion-plan.md index 6e753aa..95b47d8 100644 --- a/drafts/x-inou-promotion-plan.md +++ b/drafts/x-inou-promotion-plan.md @@ -209,3 +209,23 @@ Example workflow: --- *Ready to discuss when you wake up.* + +--- + +## Pitch Angles — Strong Examples Found + +### Hans Amato thread (Mar 12, 2026) — 13k likes, 2k RTs +https://x.com/HansAmato/status/2032139819313480071 + +The story: $12k therapy for anger → real cause was gut leakage → inflammation → cortisol → low magnesium → no GABA. Fixed with data, not talk. +"3 practitioners. 2 years. $12,000+. Zero blood draws." + +**Why it works for inou:** +- Visceral, relatable (not a rare tragedy — everyday dysfunction) +- Demonstrates the fragmentation problem at scale +- Proves the market gets it — 13k people immediately understood +- Lower emotional barrier than origin stories involving serious injury +- The fix was data connection, not a new treatment — exactly inou's angle + +**Potential inou framing:** +"This is why we built inou. Your labs, your inflammation markers, your genome — in one place. The connection no single practitioner has time to make." diff --git a/memory/claude-usage.db b/memory/claude-usage.db index c26fad232f505954d73228b9ef7e3dc4f1a4c741..137de22a06301b939181e83a9f9f1e3ef600b33b 100644 GIT binary patch delta 637 zcmZozz|wGlWr8%TD+2?A&_o4$M%RrA^Yta2nSgvYejgyoAjJQO{|Nsw{to^uexJ>X z0_Oaz0+P(8Ow$8+7)4Z=egKv5f%rxSMrOJO#<~XPAqEy!21ZtfMo~;%Kv|y2I{TzH zFSCy>VB^zaXkdD_nSFyjXWGcZin zD)5-BcVWk5u8RsRd^(Ie8yl~Hb#Ptw{s9g zSNu7F9cVn`yN!*nK)NRfTx6YG`O9!}l|A2Nw~H>5!|oYR?!1^ex$Bn;8=8g~ zSc1K65ydAU+vWt4W<-%T2TPkq@v;Kt9Wmw2prOXg43u}kls5&*8(2p1G6~4bwAo|Y zZvs+aY!SsPuzeXbV-ybu7tjOV97&+CoVKy?2sWy`goyzQt9CsiYm@Ao`&}Crm gV|GNBfw_#?0bK^>BxZZ4%;u%PqFFcVeB8wd02*DR@&Et; delta 306 zcmZoTz|ydQWr8%T0|Ntt;6w#`Mu&|F^Yz8;n1Fm%{wyHLAi)2K{|Nsw{to`E&58oy z{EU2)d;Unt0cCh3nN69D42;Zl4UBaSj6w{}tqhE<42`0gq&6?Jk1k*Xs+q{>wwZl{ zJ>#Uyyqk0HO=jHuY?B-JzJM~ zonhLq|6?|}^{>z5_J2DkulOG^InQ2d(*s5UZlG%>G3qdIwQywtt(!D?&jgjp zS_N6#-Q*Z|F-{Hus`{M8J~`r#!}bpnjA5+oyg&^p%*&>-GoIYoc#UcMGG@jo9splR BXkGvS diff --git a/memory/claude-usage.json b/memory/claude-usage.json index b094115..1a8c4eb 100644 --- a/memory/claude-usage.json +++ b/memory/claude-usage.json @@ -1,9 +1,9 @@ { - "last_updated": "2026-03-15T04:00:01.760125Z", + "last_updated": "2026-03-15T10:00:01.976288Z", "source": "api", - "session_percent": 0, - "session_resets": null, - "weekly_percent": 13, - "weekly_resets": "2026-03-20T02:59:59.711524+00:00", + "session_percent": 3, + "session_resets": "2026-03-15T13:59:59.908041+00:00", + "weekly_percent": 14, + "weekly_resets": "2026-03-20T02:59:59.908059+00:00", "sonnet_percent": 16 } \ No newline at end of file diff --git a/memory/updates/2026-03-15.json b/memory/updates/2026-03-15.json new file mode 100644 index 0000000..bd28a33 --- /dev/null +++ b/memory/updates/2026-03-15.json @@ -0,0 +1,22 @@ +{ + "date": "2026-03-15", + "timestamp": "2026-03-15T05:31:14-04:00", + "openclaw": { + "before": "OpenClaw 2026.3.13 (61d171a)", + "latest": "2026.3.13", + "after": "OpenClaw 2026.3.13 (61d171a)", + "updated": true + }, + "claude_code": { + "before": "2.1.75", + "latest": "2.1.76", + "after": "2.1.75", + "updated": true + }, + "os": { + "available": "0\n0", + "updated": false, + "packages": [] + }, + "gateway_restarted": true +} \ No newline at end of file diff --git a/scripts/daily-updates.sh b/scripts/daily-updates.sh index cbeeeff..63ae590 100755 --- a/scripts/daily-updates.sh +++ b/scripts/daily-updates.sh @@ -53,27 +53,28 @@ echo "--- OpenClaw ---" OC_BEFORE=$(openclaw --version 2>/dev/null | head -1 || echo "unknown") OC_LATEST=$(npm show openclaw version 2>/dev/null || echo "unknown") echo "Current: $OC_BEFORE | Latest: $OC_LATEST" - update_json "openclaw.before" "\"$OC_BEFORE\"" update_json "openclaw.latest" "\"$OC_LATEST\"" -if [ "$OC_BEFORE" != "$OC_LATEST" ] && [ "$OC_LATEST" != "unknown" ]; then - echo "Updating OpenClaw..." +# Use LLM to decide if these refer to the same version — no fragile string parsing +OC_SAME=$(claude --print --permission-mode bypassPermissions "Do these two strings refer to the same software version? Answer only 'yes' or 'no'. String 1: '$OC_BEFORE' String 2: '$OC_LATEST'" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]') + +if [ "$OC_SAME" = "yes" ]; then + update_json "openclaw.updated" "false" + echo "Up to date: $OC_BEFORE" +else + echo "Update available, running npm update -g openclaw..." if npm update -g openclaw 2>&1; then OC_AFTER=$(openclaw --version 2>/dev/null | head -1 || echo "unknown") update_json "openclaw.after" "\"$OC_AFTER\"" update_json "openclaw.updated" "true" echo "Updated: $OC_BEFORE → $OC_AFTER" - # Reapply source patches /home/johan/clawd/scripts/openclaw-post-update-patches.sh 2>&1 else update_json "openclaw.updated" "false" update_json "openclaw.error" "\"npm update failed\"" echo "Update failed" fi -else - update_json "openclaw.updated" "false" - echo "Up to date" fi # --- Claude Code --- @@ -82,12 +83,16 @@ echo "--- Claude Code ---" CC_BEFORE=$(claude --version 2>/dev/null | sed 's/ (Claude Code)//' || echo "unknown") CC_LATEST=$(npm show @anthropic-ai/claude-code version 2>/dev/null || echo "unknown") echo "Current: $CC_BEFORE | Latest: $CC_LATEST" - update_json "claude_code.before" "\"$CC_BEFORE\"" update_json "claude_code.latest" "\"$CC_LATEST\"" -if [ "$CC_BEFORE" != "$CC_LATEST" ] && [ "$CC_LATEST" != "unknown" ]; then - echo "Updating Claude Code..." +CC_SAME=$(claude --print --permission-mode bypassPermissions "Do these two strings refer to the same software version? Answer only 'yes' or 'no'. String 1: '$CC_BEFORE' String 2: '$CC_LATEST'" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]') + +if [ "$CC_SAME" = "yes" ]; then + update_json "claude_code.updated" "false" + echo "Up to date: $CC_BEFORE" +else + echo "Update available, running npm update -g @anthropic-ai/claude-code..." if npm update -g @anthropic-ai/claude-code 2>&1; then CC_AFTER=$(claude --version 2>/dev/null | sed 's/ (Claude Code)//' || echo "unknown") update_json "claude_code.after" "\"$CC_AFTER\"" @@ -98,9 +103,6 @@ if [ "$CC_BEFORE" != "$CC_LATEST" ] && [ "$CC_LATEST" != "unknown" ]; then update_json "claude_code.error" "\"npm update failed\"" echo "Update failed" fi -else - update_json "claude_code.updated" "false" - echo "Up to date" fi # --- OS Packages ---