---
created: 2026-02-03T15:09
updated: 2026-02-16T10:55
---
# Link's Long-Term Memory

*Curated knowledge, decisions, and context that persists across sessions.*

---

## About Brandon

- **Name:** Brandon Wilson
- **Timezone:** America/Denver (MST)
- **Day Job:** Principal DevOps / Cloud Infrastructure Lead at Hoag Digital (healthcare)
- **Side Ventures:** Collably, Carlyle Studios, Darkwaves Media, home-lab
- **Operating Style:** Systems thinker, automates aggressively, prefers boring durable infrastructure

## Core Principles (from Brandon)

- Security, privacy, compartmentalization matter deeply
- Work/personal boundary is sacred — never mix
- Prefers composable tools over all-in-one platforms
- Values reproducibility, documentation, explainability
- Wants me to challenge bad assumptions, not rubber-stamp
- Prefers explicit trade-offs over "best practices" hand-waving

## My Role

I'm **Link** — Brandon's Personal AI Chief of Staff.

Not a chatbot. Not a note-taker. I'm the coordination layer between Brandon's thoughts, systems, tools, and time.

**Prime Directive:** Protect focus, preserve context, and turn intent into durable progress.

## Active Projects

### Collably (collably.club)
- Creator collaboration platform (photographers, models, MUAs, stylists, videographers)
- Stack: Astro 5 frontend, Bun + Hono backend, AWS-native
- Goal: Creator-first LinkedIn × Instagram × Upwork

### OpenClaw / Agent Ecosystem
- This instance: personal Mac mini M4, 16GB RAM
- Chief-of-Staff agent model — autonomous but human-supervised

### Home-Lab / Media-Lab
- QNAP NAS, Raspberry Pi 5 cluster, Traefik
- Arr-suite (Radarr, Sonarr, etc.)

### FLUX - Prediction Market Trading (2026-02-13/14)
- **Location:** ~/Projects/flux7/
- **Status:** PAUSED - awaiting pivot decision
- **Key Learning:** Kalshi arbitrage doesn't work for retail
  - Market too efficient (spreads never < 100¢)
  - Market makers have sub-ms execution
  - All 7 FLUX versions failed for this reason
- **Pivot Options Proposed:**
  1. News latency arbitrage (AI reads faster than humans)
  2. Use Kalshi as signal → trade traditional markets
  3. Options vs prediction market pricing discrepancy
  4. Become Kalshi market maker (official program)
  5. Build own prediction market on crypto
- **Brandon's Direction:** "Find another way. There IS a way."

### Photography & Media
- Carlyle Studios, Darkwaves Media
- Adult / alt-culture content, magazine concepts

---

## Decisions Log

*Significant decisions and their rationale.*

### 2026-02-03 — Initial Setup
- **mDNS:** Disabled (security preference, no device discovery needed yet)
- **Memory system:** Local embeddings (privacy-first, no data leaves machine)
- **Obsidian integration:** Memory stored in Mind Palace vault at `Utility Bins/AI/Link/`

### 2026-02-05 — Memory System Overhaul
- **QMD backend:** Enabled as memory backend (replaces default SQLite indexer)
  - Hybrid search: BM25 + vectors + reranking + query expansion
  - Fully local (no external APIs for embeddings)
  - Session transcript indexing (90 day retention)
- **Layered memory architecture:** Adopted from elite-longterm-memory patterns
  - 🔥 Hot RAM: SESSION-STATE.md (survives compaction)
  - 🌡️ Warm Store: QMD vector search
  - ❄️ Cold Archive: MEMORY.md (curated long-term)
  - 📅 Daily Logs: memory/YYYY-MM-DD.md
- **WAL Protocol:** Write state BEFORE responding
  - Custom memoryFlush prompt triggers pre-compaction
  - Added to AGENTS.md for main + all sub-agents
- **Decision:** Skipped LanceDB (elite-longterm-memory uses it) because QMD already provides better hybrid search

---

## Financial Context (via Monarch Money)

**Last Updated:** 2026-02-04

### Summary
- **Total Assets:** ~$33,500 (mostly 401k)
- **Total Debt:** ~$37,400 (credit cards)
- **Net Worth:** ~-$3,900

### Debt Breakdown (priority order)
1. Credit Card (...8445): $16,034 — *highest balance*
2. Credit Card (...4394): $9,594
3. Platinum Card (...2005): $4,380
4. West Elm Visa (...7089): $3,034
5. Loan document: $2,912
6. Jeep loan (...9537): $1,224 — *car payment*
7. Apple Card: $241

### Goals (to be defined)
- [ ] Get out of credit card debt
- [ ] Save for home down payment
- [ ] Buy a car (better than Jeep?)

### Brandon's Spending Rules (I enforce these)
- **Eating out:** NO by default. Saturday dinner only ($40 max).
- **Groceries:** Sunday $80, Wednesday $50
- **Fun money:** $0 weekdays, $20 Fri/Sat combined
- **Anything over $50:** Must text Link first

### Access
- Monarch Money API connected via `monarchmoney-enhanced` Python library
- Session stored at `~/.monarch-money/.mm/`
- Query script: `~/.monarch-money/query.py`
- Credentials pulled from 1Password (`Monarchmoney` item)
- Daily Financial Pulse cron: 6am PST → Signal

---

## Integrations

### n8n (n8n.disorganized.net)
- Orchestration platform for webhooks and automation
- 2FA enabled on account
- **API Key:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4ZTcxNjQ4MS1lNDFkLTQ3ZGUtOTUyMy00MjhlZDkyOTkyYTEiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzcwMjUwNDI5fQ.YGEYRuxAdhkzLVof8GFAwKvp47NjFkDaL_e8bDb28w0`
- Expires: March 5, 2026
- **OpenClaw Webhook Credential ID:** `KDrLIov6KIyTOstd`
- Current workflows: GitHub issue router, PR review router, Deploy monitor, Sunday Grocery Assistant, **Spending Threshold Alert**, **Weekly Subscription Audit**, **Debt Milestone Celebrator**, **Morning Brief**

### Financial Pulse v2 (2026-02-16)
- **n8n Workflow:** `GuERh3uI92IP8h9M` — "Financial Pulse v2 — Daily Money Coach"
- **Schedule:** 6am MST daily (cron: `0 6 * * *` America/Denver)
- **Flow:** n8n cron → webhook to OpenClaw → Ledger agent runs script → delivers via Signal

### Weekly Financial Report (2026-02-16)
- **Cron:** `4339cced` — Sundays 8am MST (`0 8 * * 0` America/Denver)
- **Script:** `~/.openclaw/scripts/weekly-report-runner.py` (runs in monarch venv)
- **PDF Generator:** `~/.openclaw/scripts/financial-report-pdf.py` (locked in — do not change layout)
- **Flow:** Cron → fetch Monarch data → generate PDF → email via Proton Bridge SMTP (SSL port 1025)
- **From:** bcwilson@bcwilson.com → **To:** tari.griebel@gmail.com
- **Proton Bridge SMTP:** SSL on port 1025 (NOT STARTTLS). Must use raw ssl socket — smtplib.SMTP_SSL hangs with this server. Working approach: `ssl.SSLContext` → `socket.create_connection` → `ctx.wrap_socket` → manual SMTP commands.
- **Report pages:** P1=Account Summary (LOCKED), P2=Goals+Rules+Compliance, P3=Cashflow+Daily+Monthly Comparison, P4=Category Breakdown, P5+=Transactions
- **Data file:** `~/.openclaw/data/finance/report-data.json`
- **Data Script:** `~/.openclaw/scripts/financial-pulse-v2.py` (structured JSON output)
- **State:** `~/.openclaw/data/finance/pulse-state.json` (30d debt/spending history, streaks, milestones)
- **Auto-refresh:** Script tries 1Password + monarchmoney library if session expires
- **Error handling:** On failure, n8n alerts Link (me) via separate webhook
- **Replaced:**
  - OpenClaw cron `67d33686` (Ledger: Daily Financial Pulse) → DISABLED
  - n8n workflow `YEOJnTTQjtne26qB` (Debt Milestone Celebrator) → DEACTIVATED
  - n8n workflow `2k3WnqfdnrTyhfs7` (Spending Threshold Alert) → DEACTIVATED
  - n8n workflow `23kH3gJXPQSiOvZI` (Weekly Subscription Audit) → DEACTIVATED
- **Hooks enabled:** `hooks.enabled=true` in gateway config, token: `grocery-webhook-token-2026`

### Legacy Financial Scripts (still on disk, superseded by Pulse v2)
- `~/.openclaw/scripts/spending-alert.py`
- `~/.openclaw/scripts/debt-milestone.py`
- `~/.openclaw/scripts/subscription-audit.py`
- `~/.openclaw/scripts/morning-brief.py`

### Sunday Grocery Assistant Workflow
- **n8n Workflow ID:** `tTVZL25xl0WwBPht`
- **Webhook URL:** `https://n8n.disorganized.net/webhook/grocery-assistant`
- **Triggered by:** iOS Shortcut at 5:30am PST Sundays
- **Flow:** Location → Geocode → Find stores → Search deals → OpenClaw webhook → Pantry Agent → Signal
- **OpenClaw webhook:** `http://192.168.7.6:18789/hooks/agent` (token: `grocery-webhook-token-2026`)

### Pantry (Grocery Agent)
- **Agent ID:** `grocery`
- **Name:** Pantry
- **Workspace:** `~/.openclaw/agents/grocery/workspace`
- **Model:** claude-sonnet-4
- **Purpose:** Meal planning, shopping lists, deal hunting, grocery briefings
- **Integrations:** Mealie (API token configured), Brave Search, Signal delivery
- **Next steps:**
  - [ ] Build meal planning workflow
  - [ ] Improve deal research (more targeted searches)
  - [ ] Add farmers market discovery

### Mealie API
- **URL:** https://mealie.disorganized.net
- **Token:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb25nX3Rva2VuIjp0cnVlLCJpZCI6ImZlNmI1OGZiLTYxNzgtNDM2Mi04NDU3LTUzNWRiNGQzYTBiYSIsIm5hbWUiOiJPcGVuY2xhdyIsImludGVncmF0aW9uX2lkIjoiZ2VuZXJpYyIsImV4cCI6MTkyNzkzMzc2Nn0.SqTSF4AVmG8uTmyNlwAZ_Gh0d43yJ9IWFgCmOmCV5RQ`
- **Expires:** ~2031 (long-lived token)

### Monarch Money
- Personal finance aggregation
- **Python access:** Custom scripts using `curl_cffi` (bypasses Cloudflare TLS fingerprinting)
- **Scripts:**
  - `~/.monarch-money/monarch_cffi.py` — Full CLI (login, accounts, transactions)
  - `~/.monarch-money/financial_pulse.py` — Daily pulse for cron job
- **Venv:** `~/.monarch-money/venv` (Python 3.12 + curl_cffi)
- **Session:** `~/.monarch-money/.mm/mm_session.pickle`
- **TOTP:** `op item get Monarchmoney --vault OpenClaw --otp`
- **Why curl_cffi:** Cloudflare blocks Python's default TLS fingerprint; curl_cffi impersonates Chrome

### Proton Mail (via Bridge)
- **Email:** disorganizednetworks@proton.me
- **Bridge:** Running locally (IMAP: 127.0.0.1:1143, SMTP: 127.0.0.1:1025)
- **Credentials:** 1Password → OpenClaw vault → "Proton Bridge - disorganizednetworks"
- **Access:** `op read "op://OpenClaw/Proton Bridge - disorganizednetworks/password"`
- **Status:** ✅ Working (173 inbox messages visible)

### Infrastructure Layout
| Service | Location | Notes |
|---------|----------|-------|
| Link (me) | Mac mini (192.168.7.6) | AI brain, port 18789 |
| n8n | QNAP Docker | mealie.disorganized.net |
| Pi5-Link node | Raspberry Pi 5 (192.168.7.7) | Connected, optional use |
| Mealie | QNAP Docker | mealie.disorganized.net, migrated 2026-02-04 |
| Proton Bridge | Mac mini (localhost) | IMAP:1143, SMTP:1025 |

### Pi5-Link Node
- IP: 192.168.7.7
- Gateway: 192.168.7.220:18789 (LAN binding)
- Paired and running as systemd user service

### Multi-Agent Network (Created 2026-02-04)
| Agent | ID | Purpose | Model |
|-------|-----|---------|-------|
| **Link** | `main` | Chief of Staff — coordination, oversight | claude-opus-4 |
| **Pantry** | `grocery` | Grocery Intelligence — deals, meal planning | claude-sonnet-4 |
| **Ledger** | `ledger` | Financial Guardian — budgets, debt tracking | claude-sonnet-4 |
| **Anchor** | `anchor` | Wellness Support — recovery, DBT, check-ins | claude-sonnet-4 |
| **Shepherd** | `shepherd` | Project Portfolio — tracking, ship/kill decisions | claude-sonnet-4 |
| **Muse** | `muse` | Creative Content — Darkwaves, Carlyle, drafts | claude-sonnet-4 |

**Agent files location:** `Mind Palace/Utility Bins/AI/Link/agents/`

**Privacy notes:**
- Anchor is MAX privacy — never surfaces in groups, isolated
- Ledger is high privacy — financial data stays private
- All others are normal privacy

---

## Patterns I've Noticed

*Recurring themes in Brandon's decisions — to be populated over time.*

---

## Things to Remember

### ⚠️ CRITICAL: Signal Acknowledgment
**ALWAYS react with 👀 to EVERY Signal message from Brandon immediately when processing begins.**
This is non-negotiable. Brandon needs to know I received his message since Signal doesn't show typing indicators for bots.
Do this FIRST, before any other processing.

- Brandon struggles with keeping finances in order — wants help budgeting and debt payoff
- Monarch Money session may need refresh if API calls fail (run `~/.monarch-money/refresh_session.sh`)
- Brandon broke up with Katie, moving out of her place
- Feb 7-9: Road trip ABQ → Flagstaff → Phoenix → Joshua Tree
- Feb 9 - ~Mar 9: Living in Joshua Tree cabin ($1,250/month)
- Jeep lease ends end of March, 3000+ miles over at $0.20/mile
- **Tari Griebel** — very close friend, NOT romantic. Weekly financial report goes to her for accountability. Do not assume romantic tone.
- Brandon prefers tea, not coffee
- Errand days: Sunday (big grocery $80) and Wednesday (restock $50)

---

## Boundaries & Constraints

- Do not mix work and personal data
- Do not store or infer sensitive personal attributes without asking
- When unsure about data sensitivity → ask first
