Timeline
143 memories — chronological, newest first.
- [PicoClaw Integration](project_picoclaw-integration.md) — 7th method added, lightest option, not OpenClaw replacement
- [PicoClaw Repo Reference](reference_picoclaw-repo.md) — GitHub, stats, capabilities, limitations
- [Wrap Command Preference](feedback_wrap-command.md) — Mike wants /wrap at end of sessions, save to all memory banks
- [Memory Infra Status](project_memory-infra-status.md) — Hindsight + Honcho fixed 2026-05-06, both awaiting restart
- [Search Harder Before Asking](feedback_dont-make-me-search.md) — Don't say "I can't find it" without exhaustive search
- [Honcho Config Location](reference_honcho-config.md) — API key at ~/.honcho/config.json, 472 sessions, peer "mike"
May 6, 06:15 PM
---
name: honcho-config-location
description: Honcho API key and session config lives at ~/.honcho/config.json — 472 sessions, peer name "mike"
type: reference
originSessionId: bb4b6e51-ec36-4a56-80d5-50ff290e13f3
---
- Config file: `C:\Users\mikem\.honcho\config.json`
- API key env var: `HONCHO_API_KEY` (also in `~/.claude/settings.json` env)
- Peer name: "mike"
- Workspace: "claude_code"
- AI peer: "claude"
- 472+ existing sessions mapped to various project directories
- API endpoint: https://api.honcho.dev/v3 (production SaaS)
May 6, 06:15 PM
---
name: dont-make-me-search
description: Mike gets frustrated when Oliver can't find things that are already on disk — search harder before asking
type: feedback
originSessionId: bb4b6e51-ec36-4a56-80d5-50ff290e13f3
---
When Mike says "you have it" or "check the backup chats" or similar, he means the info IS on the machine somewhere. Don't give up and ask him to go get it. Search harder — check ~/.honcho/, ~/.claude/agent-memory/, backup chat exports, D:/Ecosystem/, plans files, and all common config locations before saying "I don't have it."
**Why:** Mike got frustrated when Oliver couldn't find the Honcho API key that was sitting in `~/.honcho/config.json`. The key had 472 sessions of history — it was obviously in use before.
**How to apply:** Before telling Mike you can't find something, exhaust: (1) secrets dir, (2) ~/.config/ and ~/.<tool>/ dirs, (3) agent-memory files, (4) plan files, (5) backup chat exports, (6) env files across all drives. Only ask after a thorough search.
May 6, 06:15 PM
---
name: memory-infra-status
description: Current state of memory systems — Hindsight and Honcho now configured and ready for next restart (as of 2026-05-06)
type: project
originSessionId: bb4b6e51-ec36-4a56-80d5-50ff290e13f3
---
Memory infrastructure audit and fix completed 2026-05-06:
| System | Status | Notes |
|--------|--------|-------|
| Auto memory (built-in file) | WORKING | `CLAUDE_CODE_DISABLE_AUTO_MEMORY=0` in settings.json |
| Provenance hook | WORKING | `~/.claude/hooks/provenance-logger.py` logs writes to `session-log.md` |
| Hindsight | FIXED — enabled, awaiting restart | Was installed as plugin v0.4.0 but never added to `enabledPlugins`. Now enabled. Embedded daemon on port 9077, no external key needed. Hooks: auto-recall on UserPromptSubmit, auto-retain on Stop. |
| Honcho | FIXED — installed + key added, awaiting restart | Was enabled but never installed to cache. Now cached at v0.2.4. API key found in `~/.honcho/config.json` and added to settings.json env as `HONCHO_API_KEY`. 472 existing sessions. Hooks: SessionStart/End, PostToolUse, UserPromptSubmit, PreCompact, Stop. |
| Context bundles | WORKING | `.agents/context-bundles/` created in MobileClaw project |
**Why:** Mike wanted all memory banks active for `/wrap` to save to everything.
**How to apply:** After next Claude Code restart, both Hindsight and Honcho hooks will fire automatically. `/wrap` should show all green checkmarks. If either fails, check: Hindsight embedded daemon on 9077, Honcho API key in env.
May 6, 06:15 PM
---
name: Session recap 2026-05-05 to 2026-05-06
description: Two-day session covering Stripe setup, dashboard fix, checkout app, POWD enforcement, Bluesky removal, and Outstand migration kickoff
type: project
originSessionId: b173e411-7c78-4b1c-9acc-d36b9b6fb882
---
## Completed Work (2026-05-05 — 2026-05-06)
### Stripe + Checkout (Ranking Reels)
- Created Stripe account (acct_1TTr9WGobiFOOXQA) with live keys
- Created 3 products + 3 live payment links ($100/$300/$1000)
- Built checkout app at https://order.rankingreels.com (white theme, no "AI" language, OG image)
- Added `order` CNAME to rankingreels.com via Namecheap API
- Switched Vercel env vars from test to live keys
### Brand Media Manager Dashboard Fix
- Root domain brandmediamanager.com was on wrong Vercel project (stale `brandmediamanager`)
- Moved to correct project (`late-social-connect`)
- Renamed stale project to `do-not-use-brandmediamanager`
- All 5 subdomains confirmed live (root, app, www, portal, admin)
- Cloned repo to D:\ClaudeDev\00_GITHUB\_working-on\Tools\VIDEO-TOOLS\brand-media-manager
### POWD (Proof of Work Done)
- POWD site cleaned — removed birdseyeroi + domain-portfolio content (ranking-reels only)
- Added basic auth (merlino/powd2026) via Edge middleware
- Added noindex/nofollow + X-Frame-Options headers
- Added powd.rankingreels.com CNAME via Namecheap API
- Pushed proof page for this session's work
- Wrote mandatory POWD rule at ~/.claude/rules/powd-mandatory.md
### BMM Social Connect Investigation
- Removed Bluesky from BMM (Zernio OAuth showed third-party branding)
- Tested Zernio headless=true flag — DOES NOT WORK (callback hardcoded to zernio.com)
- Full audit of 26 social API vendors for white-label OAuth
- Confirmed Outstand BYOK is the only true white-label option
- Built Outstand SOP site: https://outstand-docs.vercel.app (52 pages)
- Created /outstand-social-api skill
- Created Outstand account (CTR Geeks org)
- Subscription activation needed to generate API key
### Outstand SOP Site
- GitHub: mmerlino23/outstand-docs (private)
- Vercel: https://outstand-docs.vercel.app
- Vault: E:/Merlino Vault/Resources/SOP-Sites/outstand-docs/ (53 files)
May 6, 03:36 PM
---
name: wrap-command-preference
description: Mike wants /wrap run at end of every session to save state to all memory banks
type: feedback
originSessionId: bb4b6e51-ec36-4a56-80d5-50ff290e13f3
---
Mike wants a `/wrap` command run at end of sessions. Created 2026-05-06 at `~/.claude/commands/wrap.md`.
**Why:** Mike learned the prime/wrap pattern from Indy Dev Dan's context engineering training. He wants session state saved to ALL available memory banks (auto memory, context bundles, project handoff, Hindsight, Honcho) — not just one.
**How to apply:** When ending a session or Mike says "wrap", "save session", "end session", run `/wrap`. Don't skip any memory bank — write to everything that's reachable, gracefully skip what's offline.
May 6, 03:33 PM
---
name: picoclaw-repo
description: PicoClaw GitHub repo and docs — Go-based ultra-lightweight AI assistant with MCP support
type: reference
originSessionId: bb4b6e51-ec36-4a56-80d5-50ff290e13f3
---
- GitHub: https://github.com/sipeed/picoclaw
- Website: https://picoclaw.io
- Language: Go, single binary cross-compiles to ARM/RISC-V/MIPS/x86
- Key stats: <10MB RAM, sub-second boot, 30+ LLM providers, 18+ messaging channels, native MCP support
- Android: APK install or Termux binary, no root needed
- Limitations: No phone control (can't tap/swipe), multi-agent orchestration planned but not shipped
- Local research file: picoclaw-research.md in MobileClaw project root
May 6, 03:33 PM
---
name: picoclaw-integration
description: PicoClaw (sipeed/picoclaw) added as 7th mobile method in MobileClaw — lightest option, not an OpenClaw replacement
type: project
originSessionId: bb4b6e51-ec36-4a56-80d5-50ff290e13f3
---
PicoClaw integrated into MobileClaw as Option 01 with "LIGHTEST" badge on 2026-05-06.
**Why:** Mike found sipeed/picoclaw (28K+ stars, Go-based, <10MB RAM, sub-second boot) and wanted it as a complementary lightweight option alongside the existing 6 OpenClaw methods.
**How to apply:** PicoClaw is positioned as easiest/lightest path for mobile AI. Shizuku+Termux remains "RECOMMENDED" for full OpenClaw power. When building the Phase 1 Next.js scaffold, the setup wizard needs to include PicoClaw as a 7th method route. The Phase 4 gateway monitor should consider PicoClaw's REST+MCP gateway on port 18790 as a lightweight backend.
May 6, 03:33 PM
---
name: Pipeline Review App
description: Ranking Reels funny ad pipeline visual review tool — private GitHub repo deployed on Vercel
type: reference
originSessionId: 915e4a05-9307-44c9-b09c-a6ce3410365a
---
Funny Ad Pipeline visual review tool for Ranking Reels.
- **Live URL:** https://pipeline-review-app-lemon.vercel.app
- **GitHub:** https://github.com/mmerlino23/ranking-reels-pipeline-review (private)
- **Vercel project:** pipeline-review-app (mmerlino23s-projects)
- **Local path:** D:\ClaudeDev\00_GITHUB\_working-on\Tools\VIDEO-TOOLS\ranking-reels\pipeline-review-app\
- **Stack:** Single self-contained HTML file, no framework, no build step
- **Features:** Light/dark theme toggle, 5 tabbed sections (Avatar, Hooks, 3 scripts), mobile responsive
- **Current state:** Static demo with MDW Aesthetics Miami sample data
- **Next step (pending partner decision):** Either add intake form for public tripwire or keep internal-only
- **Auto-deploys:** Connected to GitHub, pushes auto-deploy to Vercel
May 6, 03:23 PM
---
name: Always use full clickable URLs
description: Never give Mike bare domains or partial URLs — always include https:// prefix so they're clickable
type: feedback
originSessionId: 915e4a05-9307-44c9-b09c-a6ce3410365a
---
Always include the full protocol prefix (https://) on every URL. Never write bare domains like `example.vercel.app` — always write `https://example.vercel.app`. Mike needs clickable links, not text he has to copy and manually prefix.
**Why:** Mike has flagged this multiple times. Bare domains aren't clickable in the terminal or chat. He's tired of having to add https:// himself.
**How to apply:** Every single URL in every response, every delivery block, every summary. No exceptions. GitHub URLs, Vercel URLs, client sites, everything.
May 6, 03:22 PM
---
name: Outstand BYOK migration from Zernio
description: Migrating BMM social connect from Zernio/LATE to Outstand BYOK — account created, subscription needed, developer app registrations pending
type: project
originSessionId: b173e411-7c78-4b1c-9acc-d36b9b6fb882
---
Migrating brandmediamanager.com from Zernio/LATE to Outstand for true white-label OAuth.
**Why:** Zernio shows their branding on OAuth connect pages. Headless flag tested — doesn't work (callback still routes through zernio.com, OAuth consent screen shows Zernio's app name). Outstand BYOK lets you register your own OAuth apps so partners never see third-party branding.
**How to apply:** When working on BMM social connect features, use Outstand API (outstand.so) not LATE/Zernio. BYOK means registering OAuth developer apps on each platform.
## Current Status (2026-05-06)
**Done:**
- Outstand account created (org: CTR Geeks, mike@merlinomarketing.com)
- Outstand SOP site built: https://outstand-docs.vercel.app (52 pages)
- Outstand skill created: /outstand-social-api
- Zernio headless=true tested and confirmed NOT working for LinkedIn
- Full vendor audit of 26 social API providers completed
**Blocked — Needs Mike:**
- Activate Outstand subscription ($5/mo) at https://www.outstand.so/app/settings/api-keys → "Start a subscription"
- Once subscription active: generate API key
**To Do After Subscription:**
1. Generate Outstand API key
2. Build privacy policy page at brandmediamanager.com/privacy
3. Register OAuth developer apps (longest first):
- Meta (FB + IG + Threads) — developers.facebook.com — 2-6 weeks
- Google/YouTube — console.cloud.google.com — 4-8 weeks
- LinkedIn — developer.linkedin.com — hours to 4 weeks
- TikTok — developers.tiktok.com — 3-14 days
- Pinterest — developers.pinterest.com — instant trial
- X/Twitter — developer.x.com — instant
- Bluesky — no portal, instant
4. Push each platform's OAuth credentials to Outstand via POST /v1/social-networks
5. Wire Outstand API into BMM codebase (replace Zernio/LATE in src/lib/bmm.ts)
6. Test white-label OAuth flow end-to-end
7. Remove Zernio/LATE integration
## Key References
- Outstand SOP: https://outstand-docs.vercel.app
- Outstand dashboard: https://www.outstand.so/app
- BMM codebase: D:\ClaudeDev\00_GITHUB\_working-on\Tools\VIDEO-TOOLS\brand-media-manager
- Social API comparison: https://social-api-compare.vercel.app
- Migration guide: in Raven research (developer portal URLs, approval times, gotchas per platform)
May 6, 03:22 PM
---
name: rankingreels.com DNS and Vercel mapping
description: rankingreels.com DNS on Namecheap, subdomains mapped to Vercel projects — order, powd, www
type: reference
originSessionId: 7a8419f1-745a-48fe-9ffd-39698f906ab2
---
**Domain:** rankingreels.com
**Registrar:** Namecheap (API user: merlinomarketing)
**DNS records (as of 2026-05-05):**
- `@` A → 216.150.1.1
- `www` CNAME → 65c2a1480846f971.vercel-dns-016.com (review-dashboard)
- `order` CNAME → cname.vercel-dns.com (checkout-app)
- `powd` CNAME → cname.vercel-dns.com (powd-site)
- `email.mail` CNAME → mailgun.org
- `mail` MX → mxa.mailgun.org, mxb.mailgun.org
- `mail` TXT → SPF (leadconnectorhq + mailgun)
- `krs._domainkey.mail` TXT → DKIM
- `_dmarc.mail` TXT → DMARC
**Vercel project mapping:**
- rankingreels.com + www → `review-dashboard` (prj_Bz5cHO5YERQaJZLjMMe5fBvgtHCO) — Next.js, repo: ranking-reels-review-dashboard
- order.rankingreels.com → `checkout-app` (prj_xGAtDNbn1RWFnZ1wPVy45xuJ9LlZ) — checkout/pricing page
- powd.rankingreels.com → `powd-site` (prj_YtcLelKchKSOjrWO2LEhMJseXCqa) — proof of work
**WARNING:** Namecheap API replaces ALL records on setHosts. Always GET existing records first before adding new ones.
May 6, 01:40 AM
---
name: POWD mandatory for all deliveries
description: Queen, Frankie, Willie must capture visual proof before reporting work done — rule file at ~/.claude/rules/powd-mandatory.md
type: feedback
originSessionId: 7a8419f1-745a-48fe-9ffd-39698f906ab2
---
No work ships without Proof of Work Done screenshots.
**Why:** Mike requires visual evidence of every deploy. Agents were claiming work was done without proof. Mike explicitly demanded this enforcement on 2026-05-05.
**How to apply:** Queen (QA), Frankie (Frontend), Willie (WordPress) must take Playwright screenshots of deployed work before marking tasks complete. Carlos rejects deliveries without proof. Oliver doesn't mark DELIVERED without screenshot paths. Rule file lives at `~/.claude/rules/powd-mandatory.md`.
May 6, 01:40 AM
---
name: POWD site hosting and auth
description: Proof of Work Done site at proof.merlinoai.com and powd.rankingreels.com — basic auth merlino/powd2026, ranking-reels proofs only
type: reference
originSessionId: 7a8419f1-745a-48fe-9ffd-39698f906ab2
---
**POWD site:**
- Vercel project: `powd-site` (prj_YtcLelKchKSOjrWO2LEhMJseXCqa)
- GitHub repo: `mmerlino23/powd-site`
- Framework: static HTML
- Auth: Edge middleware basic auth — user: `merlino` / pass: `powd2026`
- Headers: noindex, nofollow, X-Frame-Options DENY
**Domains:**
- proof.merlinoai.com (original)
- powd.rankingreels.com (added 2026-05-05, CNAME on Namecheap)
**Content:** Only ranking-reels proofs. BirdsEye ROI and domain-portfolio content removed 2026-05-05.
**URL structure:** `{domain}/ranking-reels/{YYYY-MM-DD}-{description}/`
**Template:** `templates/powd-page.html` with token replacement (PROJECT_NAME, DATE, SCREENSHOTS_HTML, etc.)
May 6, 01:40 AM
---
name: Stripe Ranking Reels account
description: Stripe live account for Ranking Reels — API keys, payment links, checkout app at order.rankingreels.com
type: reference
originSessionId: 7a8419f1-745a-48fe-9ffd-39698f906ab2
---
Stripe account: `acct_1TTr9WGobiFOOXQA` (Ranking Reels)
CLI authenticated 2026-05-05, expires in 90 days.
**Live keys:**
- Publishable: `pk_live_51TTr9WGobiFOOXQA...` (in Vercel env)
- Restricted: `rk_live_51TTr9WGobiFOOXQA...` (in Vercel env)
**Test keys:**
- Publishable: `pk_test_51TTr9cGz6dt9rjnQ...`
- Secret: `sk_test_51TTr9cGz6dt9rjnQ...`
**Live payment links:**
- Single Video $100: https://buy.stripe.com/7sY14nbj1gyo3C6dz21B600
- 5 Video Pack $300: https://buy.stripe.com/28E14n5YH1DufkO52w1B601
- 25 Video Pack $1,000: https://buy.stripe.com/14AaEX2Mvci83C60Mg1B602
**Checkout app:**
- URL: https://order.rankingreels.com
- Vercel project: `checkout-app` (prj_xGAtDNbn1RWFnZ1wPVy45xuJ9LlZ)
- No GitHub repo linked — deployed via `vercel --prod` from `ranking-reels/checkout-app/`
- Framework: Next.js 16, Turbopack
- Env vars on Vercel: STRIPE_SECRET_KEY (live rk_), NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY (live pk_), BASE_URL
- White theme, OG image at /og.png
- Pricing: $100 base → $30/video at 100+ (70% off), 6 tiers
**DNS:** `order` CNAME → `cname.vercel-dns.com` on rankingreels.com (Namecheap)
May 6, 01:40 AM
---
name: Stripe Account Setup
description: Stripe accounts, API keys, and CTR Geeks restricted key for live operations
type: reference
originSessionId: 090b2f80-c3e4-4d7e-b159-242075da5cc7
---
## Stripe Accounts
**CTR Geeks (main account)**
- Account ID: `acct_1KZjAgJAQCcavumh`
- Restricted live key: `rk_live_51KZjAgJAQCcavumh...` (stored in Stripe CLI config, has product/price/payment_link/invoice permissions)
- Sub-accounts listed in MASTER_API_KEYS.env: BMR, CTR Geeks, Pool Cage, GGG, House Cleaning, Karma Movers, Local Influence, LocalWise, SKOOL Funnel
**Ranking Reels (subaccount)**
- Account ID: `acct_1TTr9WGobiFOOXQA`
- Test key: `sk_test_51TTr9WGobiFOOXQA...` (in Stripe CLI config)
- Live restricted key: `rk_live_...pNlr` (in Stripe CLI config, limited permissions — can't create products)
- Stripe CLI authenticated via `stripe login` (expires 2026-08-03)
## Ranking Reels Checkout App
- **URL:** https://checkout-app-delta-five.vercel.app
- **Vercel project:** mmerlino23s-projects/checkout-app
- **Local path:** `D:\ClaudeDev\00_GITHUB\_working-on\Tools\VIDEO-TOOLS\ranking-reels\checkout-app\`
- **Env vars in Vercel:** `STRIPE_SECRET_KEY` (test mode), `BASE_URL`, `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY`
- **Currently in test mode** — needs live keys to accept real payments
- Uses raw `fetch()` to Stripe API (not SDK — SDK had connection issues on Vercel serverless)
### Pricing Tiers
| Tier | Qty | $/Video | Total |
|------|-----|---------|-------|
| Single | 1 | $100 | $100 |
| Starter | 5 | $60 | $300 |
| Growth | 10 | $50 | $500 |
| Agency | 25 | $40 | $1,000 |
| Scale | 50 | $35 | $1,750 |
| Bulk | 100+ | $30 | $3,000+ |
## Gotchas
- `NEXT_PUBLIC_` env vars don't work reliably in Vercel API routes at runtime — use server-side env vars (e.g., `BASE_URL` not `NEXT_PUBLIC_BASE_URL`)
- When piping values to `vercel env add`, use `printf` not `echo` — echo adds a trailing `\n` that breaks URLs
- Ranking Reels live restricted key lacks product/price creation permissions — need full secret key for that
- CTR Geeks restricted key CAN create products, prices, payment links, and send invoices
- Stripe CLI config location: `C:\Users\mikem\AppData\Roaming\stripe\config.toml`
May 6, 01:07 AM
---
name: Brand Media Manager hosting
description: brandmediamanager.com domains live on Vercel project late-social-connect, NOT the stale brandmediamanager project
type: reference
originSessionId: 7a8419f1-745a-48fe-9ffd-39698f906ab2
---
Brand Media Manager dashboard:
- **Vercel project:** `late-social-connect` (prj_NCC8AsOJTzBmKX7qiHsQD3ODrZHm)
- **GitHub repo:** `mmerlino23/late-social-connect`
- **Framework:** Next.js + Clerk auth
- **Domains (all on late-social-connect):**
- brandmediamanager.com (root)
- app.brandmediamanager.com
- www.brandmediamanager.com
- portal.brandmediamanager.com
- admin.brandmediamanager.com
**WARNING:** There is a stale Vercel project named `do-not-use-brandmediamanager` (prj_fESliiJiHj2cHuV1BuIDBXk7esfy). It has NO repo and NO domains. Do NOT deploy to it or assign domains to it. On 2026-05-05, the root domain was incorrectly on this project — moved to late-social-connect to fix.
Stripe account for Ranking Reels (created 2026-05-05):
- Dashboard: https://dashboard.stripe.com
- 3 live payment links: Single Video ($100), 5 Video Pack ($300), 25 Video Pack ($1,000)
May 5, 10:42 PM
---
name: Big Laptop SSH Access
description: mike-big-laptop Tailscale machine — IP, hostname, SSH status. Needs key auth setup.
type: reference
originSessionId: e3f40f2a-9f3f-45f4-9390-9f5db4f742a5
---
**Machine:** mike-big-laptop
**Tailscale IP:** 100.77.238.24
**OS:** Windows (OpenSSH_for_Windows_9.5)
**Status:** Active on Tailscale as of 2026-05-02
**SSH access:** NOT configured. No public key from desktop (desktop-r1t5ld1-2) is authorized on this machine. All usernames tried (mmerlino23, mike, Michael, mikem) returned permission denied.
**To fix (run ON the big laptop):**
1. Open PowerShell as admin
2. Ensure OpenSSH server is running: `Get-Service sshd`
3. Add desktop's public key to authorized_keys:
```powershell
# Find the correct user's .ssh folder
mkdir ~\.ssh -ErrorAction SilentlyContinue
# Paste the desktop's id_ed25519.pub into authorized_keys
Add-Content ~\.ssh\authorized_keys "ssh-ed25519 AAAA... (from desktop)"
```
4. For admin users, key goes in `C:\ProgramData\ssh\administrators_authorized_keys` instead
**After fix, add to desktop SSH config (~/.ssh/config):**
```
Host big-laptop
HostName 100.77.238.24
User <username>
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
ConnectTimeout 15
```
May 2, 05:06 PM
---
name: Local PAA Scraper Tool
description: scrape-local-paas.mjs — Google PAA scraper with UULE + 3 browser backends (playwright/browserbase/steel), outputs JSON for video pipeline
type: reference
originSessionId: e3f40f2a-9f3f-45f4-9390-9f5db4f742a5
---
**Script:** `scripts/scrape-local-paas.mjs` in ranking-reels repo
**Usage:**
```bash
node scripts/scrape-local-paas.mjs "keyword" "City, ST" [options]
```
**Browser backends (--browser flag):**
- `playwright` — free, local headless Chromium (default)
- `browserbase` — paid stealth browser with proxies (key in MASTER_API_KEYS.env)
- `steel` — paid stealth browser (key in MASTER_API_KEYS.env, Google may CAPTCHA)
**Options:** `--depth N` (default 3), `--max N` (default 30), `--browser`, `--no-headless`, `--output`
**How it works:** UULE parameter spoofs Google search location (same as GS Location Changer). Keyword stays clean — no geo in the query. You add the geo yourself when writing video scripts.
**Output:** JSON at `output/paas/{keyword}--{location}--{date}.json` with `paaList` array that plugs directly into `paa-video-pipeline.mjs` and other video scripts.
**Validated 2026-04-30:** All 3 backends return identical PAAs for same keyword+location. BrowserBase stealth passes Google without CAPTCHA. Steel gets CAPTCHA'd.
Apr 30, 09:06 PM
- [MCC Server Access](reference_mcc_server_access.md) — SSH via vps1 (Tailscale), PM2 runs locally not on server
- [PM2 Windows Pipe Fix](feedback_pm2_windows_pipe_fix.md) — patched paths.js for unique pipe names, re-apply after reinstall
- [Env Path Migration](project_env_path_migration.md) — Codeland2026 dead, all scripts use D:/Ecosystem/secrets/MASTER_API_KEYS.env
- [MCC Infrastructure Complete](project_mcc_infrastructure_complete.md) — 17/17 done 2026-04-30, all services running
Apr 30, 07:19 PM
---
name: MCC Infrastructure Complete
description: Mission Control infrastructure 17/17 tasks done as of 2026-04-30 — all services running
type: project
originSessionId: 3b903dd0-a539-4a34-928f-326b9b9f25a1
---
MCC infrastructure phase completed 2026-04-30. All 17 tasks done including the Discord token blocker.
**Current state:**
- PM2 local (Windows): `mcc-discord` + `mcc-executor` running
- Discord bot: Oliver token regenerated, connected to both guilds
- Executor: polling Convex queue every 5s, spawns Claude Code sessions
- Dashboard: merlinoai.com fully populated across all 10 pages
- Convex: grand-greyhound-113 production, all APIs responding
- 19 agents active as first-class entities
**Why:** This was the foundational infrastructure build — dashboard, bot gateway, executor pipeline, domain wiring, data seeding.
**How to apply:** Infrastructure is stable. Next work is feature development, agent roster sync to 20 (add Vox), or picking from the 40 active tasks on the board.
Apr 30, 07:19 PM
---
name: Env File Path Migration
description: MCC scripts migrated from dead Codeland2026 path to D:/Ecosystem/secrets/MASTER_API_KEYS.env
type: project
originSessionId: 3b903dd0-a539-4a34-928f-326b9b9f25a1
---
The original `D:/ClaudeDev/Codeland2026/MASTER_API_KEYS_COLLECTION.env` no longer exists (only a `- Copy` variant remains). All MCC scripts were updated 2026-04-30 to read from `D:/Ecosystem/secrets/MASTER_API_KEYS.env` instead.
**Why:** The Codeland2026 folder was removed/renamed at some point, breaking all three bot scripts silently.
**How to apply:** Any new scripts that need API keys should use `D:/Ecosystem/secrets/MASTER_API_KEYS.env`. The old Codeland path is dead. Scripts updated:
- `mission-control-v3/scripts/discord-bot.mjs`
- `mission-control-v3/scripts/discord-backfill.mjs`
- `mission-control-v3/scripts/executor-daemon.mjs`
Apr 30, 07:19 PM
---
name: PM2 Windows Pipe Fix
description: PM2 on Windows has hardcoded pipe names causing EPERM — patched paths.js to use unique names per PM2_HOME
type: feedback
originSessionId: 3b903dd0-a539-4a34-928f-326b9b9f25a1
---
PM2 on Windows hardcodes named pipes to `\\.\pipe\rpc.sock` and `\\.\pipe\pub.sock` in `paths.js` (line 85-86). All PM2 instances fight over the same pipe. Zombie daemons leave ghost pipes that block new instances with `EPERM`.
**Why:** 9 zombie PM2 Daemon.js processes accumulated, locking the pipe at the Windows kernel level. Killing them didn't help because the pipe handle persists until reboot.
**How to apply:** Patched `C:\Users\mikem\AppData\Roaming\npm\node_modules\pm2\paths.js` to use `pm2_{PM2_HOME_basename}_rpc.sock` instead. This fix gets overwritten on `npm install -g pm2` — re-apply after any PM2 global reinstall. The patch is:
```js
var pipeId = p.basename(PM2_HOME).replace(/[^a-zA-Z0-9_-]/g, '_');
pm2_file_stucture.DAEMON_RPC_PORT = '\\\\.\\pipe\\pm2_' + pipeId + '_rpc.sock';
pm2_file_stucture.DAEMON_PUB_PORT = '\\\\.\\pipe\\pm2_' + pipeId + '_pub.sock';
pm2_file_stucture.INTERACTOR_RPC_PORT = '\\\\.\\pipe\\pm2_' + pipeId + '_interactor.sock';
```
Apr 30, 07:18 PM
---
name: MCC Server Access
description: SSH access, paths, and PM2 setup for Mission Control server (srv1310052 / 76.13.111.220)
type: reference
originSessionId: 3b903dd0-a539-4a34-928f-326b9b9f25a1
---
Mission Control server is Hostinger VPS `srv1310052`.
- Public IP: 76.13.111.220
- Tailscale IP: 100.70.90.63
- SSH alias: `vps1` (user: mike, key: openclaw_key)
- The CLAUDE.md says `root@76.13.111.220` but actual access is `mike@vps1` via Tailscale
Server paths:
- `/home/mike/repos/mcc-template-main/mission-control-template-main/` — app copy
- `/home/mike/repos/mission-control/` — another copy
PM2 processes (`mcc-discord`, `mcc-executor`) run LOCALLY on Windows, not on the server.
The server only has `claudeclaw` and `warroom` via PM2 under mike user.
Apr 30, 07:18 PM
---
name: VisionClaw Project Status
description: Meta Ray-Ban smart glasses AI assistant — current state, config, direct-to-OpenClaw mode, known issues
type: project
originSessionId: 5037b3dc-b0f9-423d-bf21-83722423d0a5
---
## Location
`D:\ClaudeDev\00_GITHUB\_working-on\VisionClaw\`
## What It Is
Real-time AI assistant for Meta Ray-Ban smart glasses. Voice + vision + agentic actions via Gemini Live API + OpenClaw.
## Architecture
```
Glasses camera+mic → Phone app → Gemini Live API → voice response
→ tool calls → OpenClaw → Claude/Oliver
```
## Key Config (2026-04-28)
- **Model:** `gemini-3.1-flash-live-preview`
- **Voice:** Puck
- **OpenClaw host:** `100.127.161.25` (Mac Studio via Tailscale — works on WiFi + cellular)
- **OpenClaw port:** 18789
- **OpenClaw token:** `62dae5c14272d5bbb3c37c1617a72ab865812925c44daf05700616a6a5f0a125`
- **Phone:** Samsung S25 Ultra (SM-S938U), serial `R5CXC3L7ADM`
- **Tailscale IPs:** Mac Studio `100.127.161.25`, S25 Ultra `100.118.207.101`
## Gemini API Key Status
- **DEPLETED** as of 2026-04-28. Both keys (`GOOGLE_GEMINI_API_KEY` and `GOOGLE_GEMINI_VSC_API_KEY`) return 429 RESOURCE_EXHAUSTED.
- User needs to top up at https://ai.studio/projects
- Key in Secrets.kt was updated to match MASTER_API_KEYS.env (`AIzaSyCvxYure3iAF47JMuHFB5sQ9lUtAJWRzdk`)
## Direct-to-OpenClaw Mode (NEW — 2026-04-28)
Added a mode that bypasses Gemini entirely. Uses:
- Android SpeechRecognizer for STT (on-device, free)
- OpenClawBridge for reasoning (sends text + optional camera frame to Claude via OpenClaw)
- Android TextToSpeech for TTS
- Toggle in Settings: "Direct to OpenClaw"
### Files Created
- `openclaw/DirectOpenClawSessionViewModel.kt` — session manager with STT/TTS/OpenClaw wiring
### Files Modified
- `openclaw/OpenClawBridge.kt` — added `delegateTaskWithImage()` for vision, refactored to shared `sendConversation()`
- `settings/SettingsManager.kt` — added `directOpenClawMode` boolean
- `ui/SettingsScreen.kt` — added "Direct to OpenClaw" toggle under new "AI Mode" section
- `ui/StreamScreen.kt` — wired DirectOpenClawSessionViewModel alongside GeminiSessionViewModel, mode-aware toggle
- `stream/StreamViewModel.kt` — added `directViewModel` for frame forwarding
### Known Issue
- Direct mode was deployed but user reported "it did not work" — no logs captured because phone disconnected from USB before diagnosis.
- Possible issues to investigate: SpeechRecognizer permissions (RECORD_AUDIO already granted for Gemini mode), SpeechRecognizer running on wrong thread (must be main thread), or OpenClaw connection timing.
**Why:** Mike wants VisionClaw to work without Gemini credits (which are depleted) and on mobile data (Tailscale solves this).
**How to apply:** When resuming, reconnect phone via USB, enable Direct mode in Settings, tap sparkle button, pull logcat filtered for `DirectOpenClawVM` and `OpenClawBridge` tags.
## Build & Deploy (CLI)
```bash
export JAVA_HOME="C:/Program Files/Android/Android Studio/jbr"
export PATH="$JAVA_HOME/bin:$PATH"
export ANDROID_HOME="C:/Users/mikem/AppData/Local/Android/Sdk"
cd samples/CameraAccessAndroid
./gradlew.bat assembleDebug
../../platform-tools/adb.exe install -r app/build/outputs/apk/debug/app-debug.apk
# Clear cached settings:
../../platform-tools/adb.exe shell pm clear com.meta.wearable.dat.externalsampleapps.cameraaccess
```
## Key File Paths (Android app)
- `samples/CameraAccessAndroid/app/src/main/java/com/meta/wearable/dat/externalsampleapps/cameraaccess/`
- `Secrets.kt` — API keys, OpenClaw config (gitignored, use `sed` to edit — security hook blocks Edit tool)
- `gemini/GeminiLiveService.kt` — WebSocket to Gemini Live API
- `gemini/GeminiSessionViewModel.kt` — Gemini session lifecycle
- `gemini/GeminiConfig.kt` — model, URLs, config accessors
- `gemini/AudioManager.kt` — mic capture (16kHz) + speaker playback (24kHz)
- `openclaw/OpenClawBridge.kt` — HTTP to OpenClaw gateway
- `openclaw/DirectOpenClawSessionViewModel.kt` — direct-to-OpenClaw mode
- `openclaw/ToolCallRouter.kt` — routes Gemini tool calls to OpenClaw
- `openclaw/ToolCallModels.kt` — data classes for tool calls, results, status
- `settings/SettingsManager.kt` — SharedPreferences with Secrets.kt fallback
- `ui/StreamScreen.kt` — main streaming view, wires Gemini/Direct/WebRTC VMs
- `ui/SettingsScreen.kt` — settings UI
- `ui/GeminiOverlayView.kt` — status pills, transcripts, tool call status overlay
- `ui/CameraAccessScaffold.kt` — navigation router
- `ui/NonStreamScreen.kt` — device selection + start buttons
## Desktop Client
- `desktop/visionclaw_desktop.py` — Python + google-genai SDK
- Launch: `C:\Users\mikem\Desktop\VisionClaw Desktop.bat`
Apr 29, 08:18 PM
---
name: Bunny Storage for ranking-reels videos
description: All ranking-reels MP4 video outputs are stored in Bunny Storage under seo-rockstars-vault/ranking-reels/
type: reference
originSessionId: c9cac62a-5a18-4ee6-9bcb-469c443e4474
---
Ranking-reels video files (MP4s) are hosted on Bunny Storage, not in git.
- **Storage zone**: `seo-rockstars-vault`
- **CDN base URL**: `https://seo-rockstars-vault.b-cdn.net/ranking-reels/`
- **Path pattern**: `ranking-reels/<relative-path-from-project-root>`
- **Credentials**: `D:/Ecosystem/secrets/bunny-stream.env`
- **Upload script**: `scripts/upload-to-bunny.mjs`
- **Initial upload**: 2026-04-29, 252 MP4 files (~6.6 GB)
**Why:** MP4s were committed in early git history, bloating the repo to 2 GB and blocking GitHub push. Videos are gitignored (`.gitignore` has `*.mp4`) and stored externally.
Apr 29, 08:17 PM
---
name: Master Brain state as of 2026-04-29
description: 225K memories, all sources ingested + embedded, chat backups done, embed write-back bug fixed
type: project
originSessionId: 16678fc5-db75-43d1-8af4-3a3f154998fa
---
## Master Brain — State Snapshot (2026-04-29)
**Branch:** master @ `4a6725d`
**DB:** Supabase `gmgxxiqgshbbgzhqzngq`, table `memories` (225,414 rows, all embedded)
**Embedding:** OpenAI text-embedding-3-small (1536 dims), ~$1.27 total cost
### What's Done
- All Windows + Mac sources ingested into unified `memories` table
- 7 source configs committed: shoaf-dev, graphify-out, mark-kashef-vault, obsidian-agent-memory, skool-scraper, mark-memory, chat-backups
- Chat backups: 20,214 files → 22,315 unique chunks (heavy dedup — most content existed from prior sources)
- 5-strategy RRF search working (semantic + keyword + entity + temporal + graph)
- Embed write-back bug fixed: bulk POST primary, individual PATCH fallback
- Entity extraction: 1,867 entities, 77,544 memory_entities links, 925 entity_edges
- Frontend: chat UI with session sidebar, auto-save, SSE streaming
### What's Left
1. Transcript ingestion gap in old master_knowledge table (~58K, Gemini quota) — likely irrelevant
2. Entity extraction on new 22K chat rows (optional)
3. VPS2: Caddy decision, port audit
4. VPS3: Hermes ANTHROPIC_API_KEY blank
**Why:** Snapshot so next session picks up cleanly.
**How to apply:** Read this first, then check .planning/.continue-here.md for granular state.
Apr 29, 04:24 AM
- [Clean .claude Baseline Spec](feedback_clean-claude-baseline.md) — canonical structure: what stays, what's removed, hooks, MCP, skills, Dan workflow
- [Skill Bloat Root Cause](feedback_skill-bloat-root-cause.md) — OpenSpace MCP + nhevers plugin re-dump skills on session start; always clean settings.json first
- [Claude Clean Home Fleet Sync](project_claude-clean-home-fleet-sync.md) — DONE: 109 skills, 20 agents synced to all 8 machines via GitHub repo + SSH
- [Claude Clean Reset Progress](project_claude-clean-reset-progress.md) — SUPERSEDED by fleet sync above
- [VPS3 Herman State](reference_vps3_herman.md) — Herman identity, Bird's Eye ROI pipeline, Honcho config, 472 sessions, Mike's Herman prefs
- [AI Platform Accounts](reference_ai_platforms.md) — Claude, Codex, Gemini, Kimi accounts with emails, plans, and purposes
Apr 28, 06:40 PM
---
name: Skill Bloat Root Cause — OpenSpace and Plugin Re-Sync
description: Why skills keep re-appearing after cleanup — OpenSpace MCP and nhevers plugin dump skills into ~/.claude/skills/ on session start
type: feedback
originSessionId: 79b1a5de-6752-4bcd-b670-a97ed61c7e7d
---
Skills jumped from 109 to 285 overnight (2026-04-27 to 2026-04-28) after a clean wipe. All 176 extras appeared within 1 second — bulk copy, not manual.
**Why:** The old settings.json had OpenSpace MCP with `OPENSPACE_HOST_SKILL_DIRS` pointing to `~/.claude/skills`, plus the `nhevers` (claude-recall) plugin with hooks that fire on SessionStart. Between the skill cleanup and the settings.json cleanup, a Claude Code session started with the old settings and re-dumped skills.
**How to apply:** Always clean settings.json BEFORE or AT THE SAME TIME as cleaning skills. If settings.json still has OpenSpace, nhevers hooks, or other skill-syncing plugins, they'll re-populate the skills folder on next session start. The clean settings.json (no MCPs, no hooks, `"enabledPlugins": {}`) prevents this. If skills bloat again, check settings.json first — something is syncing them back.
**Backup location:** `D:/Ecosystem/backups/claude-skills-backup-2026-04-28/` (285 skills, dated)
Apr 28, 06:39 PM
---
name: Claude Clean Reset Progress
description: COMPLETED — clean .claude deployed to all 8 machines, superseded by fleet sync
type: project
originSessionId: 79b1a5de-6752-4bcd-b670-a97ed61c7e7d
---
## Status: COMPLETED (2026-04-27)
Staging folder is obsolete. The clean baseline was activated on all 8 machines (Windows, Mac, VPS1-3, HP Big, HP Small) and pushed to `github.com/mmerlino23/claude-clean-home`.
See `project_claude-clean-home-fleet-sync.md` for the canonical reference.
### Old Staging Folder (can be deleted)
`D:\ClaudeDev\00_GITHUB\_working-on\Tools\agent-soul-system\.tmp\claude-clean-home-20260426-145844`
Apr 28, 01:16 AM
---
name: Claude Clean Home — Fleet Sync Complete
description: Canonical .claude setup synced across 8 machines via GitHub repo — 109 skills, 20 agents, clean settings
type: project
originSessionId: 79b1a5de-6752-4bcd-b670-a97ed61c7e7d
---
## Status: COMPLETE (2026-04-27)
### GitHub Repo
`github.com/mmerlino23/claude-clean-home` (private)
- 109 skills, 20 agents, 24 commands, 2 hooks
- Clean settings.json — no hooks, no MCPs, no plugins, all account-level MCPs denied
- All agent models use shorthand (`opus`, `sonnet`, `haiku`) — never hardcoded versions
### Fleet SSH Config
| Machine | SSH Alias | User | IP | Synced |
|---------|-----------|------|----|--------|
| Windows (main) | local | mikem | — | Source of truth |
| Mac | `ssh mac` | merlino | 100.127.161.25 (Tailscale) | Yes |
| VPS1 | `ssh vps1` | mike | 100.70.90.63 (Tailscale) | Yes |
| VPS2 | `ssh vps2` | mike | 76.13.120.111 (public, Tailscale broken) | Yes |
| VPS3 | `ssh vps3` | root | srv1319524.hstgr.cloud | Yes |
| HP Big Laptop | `ssh hp-big` | micha | 100.77.238.24 (Tailscale) | Yes |
| HP Small Laptop | `ssh hp-small` | mikem | 100.67.8.95 (Tailscale) | Yes |
### Sync Method
- Mac/VPS1/VPS2/VPS3/HP Big: SSH tar pipe from Windows
- HP Small: git clone (SSH installed via DISM after initial failures)
- Both laptops had OpenSSH Server installed this session
### Key Decisions
- 109 skills is the canonical count — dropped `youtube-seo` and `seobank-meta-updater-plugin` from backlog
- Account-level MCPs (ClickUp, Slack, Linear, etc.) denied in settings.json — still connected at claude.ai but blocked unless deny rule removed
- No hooks at baseline — provenance-logger.py and security-validator.js files exist in hooks/ but not wired in settings.json
- No plugins enabled
- VPS2 Tailscale is broken — use public IP `76.13.120.111` instead
**Why:** Mike's .claude was bloated across machines — 280 skills on some VPSes, 53 GSD/geo/sales agents on Mac, 55 hook entries and 7 MCP servers on Windows. Stripped to clean portable baseline.
**How to apply:** When setting up a new machine, clone `claude-clean-home` and copy contents to `~/.claude/`. To update fleet, push to GitHub then SSH sync. Any future skill/agent changes should go through the repo first.
Apr 28, 01:08 AM
[2026-04-27T12:24:37.751Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\brain\route.ts
[2026-04-27T12:24:55.614Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\brain\search\route.ts
[2026-04-27T12:24:57.673Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:01.702Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:09.054Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:13.191Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:18.423Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:27.147Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:31.464Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:36.842Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:40.528Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:46.920Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:51.777Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:25:56.037Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:26:02.280Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:26:06.509Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:26:17.560Z] WROTE: D:\ClaudeDev\metal-roofing-benefits-miami-content-package.md
[2026-04-27T12:27:34.343Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:28:19.774Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:28:31.533Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:30:50.821Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T12:38:51.782Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:39:27.941Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:40:52.344Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:41:41.674Z] WROTE: C:\Users\mikem\.gemini\settings.json
[2026-04-27T12:53:26.353Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\lib\unified-search.ts
[2026-04-27T12:53:34.679Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\lib\unified-search.ts
[2026-04-27T12:53:39.631Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\lib\unified-search.ts
[2026-04-27T12:53:57.167Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\lib\unified-search.ts
[2026-04-27T12:54:12.898Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\lib\unified-search.ts
[2026-04-27T12:54:18.580Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\lib\unified-search.ts
[2026-04-27T12:56:23.125Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\scripts\ingest_incremental.py
[2026-04-27T13:01:54.942Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:02:27.121Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:02:42.492Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:02:47.554Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:03:04.078Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:03:20.322Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:03:27.323Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:12:53.226Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T13:13:01.916Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T13:13:10.356Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T13:20:23.148Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:00.004Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:08.109Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:13.808Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:19.216Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T14:18:56.473Z] WROTE: C:\Users\mikem\.claude\plans\steady-wishing-spark.md
[2026-04-27T14:21:31.061Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\.gitignore
[2026-04-27T14:21:32.062Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\netlify.toml
[2026-04-27T14:21:33.029Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\package.json
[2026-04-27T14:23:49.676Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\style.css
[2026-04-27T14:23:52.616Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\netlify\functions\generate-images.js
[2026-04-27T14:25:05.977Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\app.js
[2026-04-27T14:25:06.748Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\netlify\functions\generate-page.js
[2026-04-27T14:25:50.945Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\index.html
[2026-04-27T14:27:04.974Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\app.js
[2026-04-27T14:27:13.533Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\app.js
[2026-04-27T14:27:31.967Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\netlify\functions\generate-page.js
[2026-04-27T14:27:38.154Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\netlify\functions\generate-page.js
[2026-04-27T14:36:27.648Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\.env.local
[2026-04-27T14:37:14.021Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\supabase\schema.sql
[2026-04-27T14:37:36.623Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\.env.local
[2026-04-27T14:38:15.871Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\supabase.ts
[2026-04-27T14:38:36.238Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\types\database.ts
[2026-04-27T14:39:01.776Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\app\api\businesses\route.ts
[2026-04-27T14:39:02.330Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\app\api\templates\route.ts
[2026-04-27T14:39:06.026Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\app\api\sites\route.ts
[2026-04-27T14:40:02.076Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:40:22.615Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\.gitignore
[2026-04-27T14:40:57.638Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\utils\contentGenerator.ts
[2026-04-27T14:41:03.317Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\utils\contentGenerator.ts
[2026-04-27T14:41:07.871Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\utils\contentGenerator.ts
[2026-04-27T14:41:50.191Z] WROTE: C:\Users\mikem\.claude\projects\D--ClaudeDev\memory\project_paa-content-generator.md
[2026-04-27T14:42:02.433Z] WROTE: C:\Users\mikem\.claude\projects\D--ClaudeDev\memory\reference_gemini-cli-auth.md
[2026-04-27T14:42:06.978Z] WROTE: C:\Users\mikem\.claude\projects\D--ClaudeDev\memory\feedback_use-skills-for-images.md
[2026-04-27T14:42:09.842Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\next.config.js
[2026-04-27T14:42:17.409Z] WROTE: C:\Users\mikem\.claude\projects\D--ClaudeDev\memory\MEMORY.md
[2026-04-27T14:43:32.573Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\utils\contentGenerator.ts
[2026-04-27T14:44:06.134Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:44:12.427Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:44:22.205Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:44:27.798Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:44:35.734Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\tsconfig.json
[2026-04-27T14:44:59.668Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\supabase.ts
[2026-04-27T14:45:10.105Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:45:15.578Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\src\lib\site-generator.ts
[2026-04-27T14:53:20.270Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\docs\session-notes\2026-04-27-prior-session-summary.md
[2026-04-27T14:53:44.604Z] WROTE: D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\docs\session-notes\2026-04-27-current-session.md
[2026-04-27T14:53:57.205Z] WROTE: C:\Users\mikem\.claude\projects\D--ClaudeDev\memory\project_local-seo-site-builder.md
[2026-04-27T14:54:27.621Z] WROTE: C:\Users\mikem\.claude\projects\D--ClaudeDev\memory\MEMORY.md
[2026-04-27T21:30:36.541Z] WROTE: C:\Users\mikem\.claude\plans\cozy-floating-cake.md
[2026-04-27T21:39:07.475Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\scripts\ingest_sources.py
[2026-04-27T21:40:26.756Z] WROTE: D:\ClaudeDev\00_GITHUB\claude-clean-home\settings.json
[2026-04-27T21:40:28.008Z] WROTE: D:\ClaudeDev\00_GITHUB\claude-clean-home\settings.json
[2026-04-27T21:49:46.259Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\scripts\ingest_sources.py
[2026-04-27T22:03:14.389Z] WROTE: D:\ClaudeDev\00_GITHUB\claude-clean-home\settings.json
[2026-04-27T22:03:25.081Z] WROTE: C:\Users\mikem\.claude\settings.json
[2026-04-27T22:06:53.821Z] WROTE: D:\ClaudeDev\00_GITHUB\claude-clean-home\settings.json
[2026-04-27T22:25:23.884Z] WROTE: D:\ClaudeDev\00_GITHUB\claude-clean-home\settings.json
[2026-04-27T22:35:14.419Z] WROTE: D:\ClaudeDev\00_GITHUB\claude-clean-home\agents\gino.md
[2026-04-27T22:49:45.966Z] WROTE: D:\ClaudeDev\_check_github_sizes.ps1
[2026-04-27T23:50:01.307Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\.planning\MEMORY-INGESTION-HANDOFF.md
[2026-04-28T00:46:26.721Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\scripts\config.py
[2026-04-28T00:49:45.383Z] WROTE: C:\Users\mikem\.ssh\config
[2026-04-28T00:57:20.603Z] WROTE: C:\Users\mikem\.ssh\config
Apr 28, 12:57 AM
---
name: Local SEO Site Builder
description: Local business website builder app — Supabase project ccaqlazysfvywsgvrrft, Next.js + Tailwind, generates full SEO sites from business data
type: project
originSessionId: 3ca13bcd-f83f-4f62-b578-161434fe2de8
---
Local SEO Site Builder tool at `D:\ClaudeDev\00_GITHUB\local-site-builder-bit-more-done\`
**Why:** Agency tool to mass-produce SEO-optimized local business websites from form input — PAA blog posts, geo content, service pages, schema markup.
**How to apply:** When Mike asks about local site builder, this is the project. Supabase project ref `ccaqlazysfvywsgvrrft`, keys stored with `_LSEO` suffix in master secrets. Frontend is being redesigned in Bolt — when Bolt output arrives, merge it into the existing Next.js app and wire to the existing API routes (`/api/businesses`, `/api/sites`, `/api/templates`).
Stack: Next.js 14 + Tailwind + Supabase (9 tables with RLS) + TypeScript
GitHub: https://github.com/mmerlino23/local-site-builder-bit-more-done
Status as of 2026-04-27: Backend complete, frontend pending Bolt redesign
Apr 27, 02:53 PM
---
name: Always use skills for images
description: Mike expects image generation to go through his nano-banana, before-after, and infographic skills — not raw API calls.
type: feedback
originSessionId: 18fa7b18-6ce0-4e44-bf18-8b4d1339ad8d
---
When generating images, use Mike's skills (nano-banana, before-after-image-generator, infographic-generator) instead of calling image APIs directly.
**Why:** Mike built these skills with specific prompt engineering and workflows. Bypassing them means missing his preferred output quality and branding approach.
**How to apply:** When any image generation is needed, invoke the appropriate skill first. Only fall back to direct API calls if the skill's underlying service (Gemini/OpenAI) is broken and Mike approves the fallback.
Apr 27, 02:42 PM
---
name: Gemini CLI auth fix
description: Gemini CLI auth type must be "gemini-api-key" or "oauth-personal" — not "oauth". Token refresh procedure included.
type: reference
originSessionId: 18fa7b18-6ce0-4e44-bf18-8b4d1339ad8d
---
Gemini CLI (v0.37.0+) valid auth types in `~/.gemini/settings.json`:
- `"oauth-personal"` — Google login (free tier, needs GOOGLE_CLOUD_PROJECT for Workspace accounts)
- `"gemini-api-key"` — uses GEMINI_API_KEY env var
- `"vertex-ai"` — needs GOOGLE_CLOUD_PROJECT + GOOGLE_CLOUD_LOCATION
- `"compute-default-credentials"` — ADC
The old value `"oauth"` is INVALID and causes "Invalid auth method selected."
**OAuth token refresh:** Tokens in `~/.gemini/oauth_creds.json`. Client ID found in CLI bundle: `681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com` with secret `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`. Refresh via POST to `https://oauth2.googleapis.com/token`.
**Current state (2026-04-27):** All Gemini API keys (GOOGLE_AI_API_KEY, GOOGLE_GEMINI_API_KEY, GOOGLE_GEMINI_VSC_API_KEY) are on a depleted prepayment billing account. Settings currently set to `"oauth-personal"`. Mike needs to either replenish credits at ai.studio or enable the Gemini Cloud API on a GCP project.
Apr 27, 02:42 PM
---
name: PAA Content Generator v2
description: PAA Content Generator tool — Netlify app with OpenAI image gen + HTML page builder. Project locations, deploy info, and current state.
type: project
originSessionId: 18fa7b18-6ce0-4e44-bf18-8b4d1339ad8d
---
PAA Content Generator v2.0 — generates blog templates, GMB posts, social media posts, video scripts, branded images (OpenAI gpt-image-1), and downloadable HTML landing pages from a PAA question + business info.
**Locations:**
- Source: `D:\ClaudeDev\00_GITHUB\paa-content-generator\`
- Backup: `E:\Codex\projects\paa-content-generator\`
- GitHub: https://github.com/mmerlino23/paa-content-generator (private)
- Live: https://paa-content-generator.netlify.app
- Netlify ID: `1066e3d8-a2d9-4845-9b84-e67abb745fbd`
**Stack:** Vanilla HTML/CSS/JS + Netlify Functions (Node.js + OpenAI SDK)
**Env vars on Netlify:** `OPENAI_API_KEY` (set from MASTER_API_KEYS.env)
**Status (2026-04-27):** v2.0 deployed. Mike flagged the UI as needing work — needs review and refinement. Original v1 was a single static HTML page with string templates, no backend.
**Why:** Mike's content workflow uses this tool to generate PAA-based content packages for local SEO clients. The upgrade adds image generation and page building so the output is closer to publish-ready instead of just templates.
Apr 27, 02:41 PM
# Pre-Compaction Save
[2026-04-27T14:22:10.520Z] trigger=auto
## Recent Assistant Messages
## Session Activity
56:23.125Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\scripts\ingest_incremental.py
[2026-04-27T13:01:54.942Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:02:27.121Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:02:42.492Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:02:47.554Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:03:04.078Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:03:20.322Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:03:27.323Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\page.tsx
[2026-04-27T13:12:53.226Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T13:13:01.916Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T13:13:10.356Z] WROTE: D:\ClaudeDev\metal-roofing-preview.html
[2026-04-27T13:20:23.148Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:00.004Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:08.109Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:13.808Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T13:39:19.216Z] WROTE: D:\ClaudeDev\00_GITHUB\_working-on\Tools\master-brain\src\app\api\chat\route.ts
[2026-04-27T14:18:56.473Z] WROTE: C:\Users\mikem\.claude\plans\steady-wishing-spark.md
[2026-04-27T14:21:31.061Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\.gitignore
[2026-04-27T14:21:32.062Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\netlify.toml
[2026-04-27T14:21:33.029Z] WROTE: D:\ClaudeDev\00_GITHUB\paa-content-generator\package.json
## Resume Instructions
Read this file and session-log.md to restore context after compaction.
Apr 27, 02:22 PM
---
name: AI Platform Accounts
description: Mike's AI platform accounts — Claude, Codex, Gemini, Kimi, which email, which plan, what for
type: reference
originSessionId: 3b81193e-5e5a-409b-9d3a-30d5e3d0d7fc
---
- **Claude Max** (mike@merlinomarketing.com) — Windows Claude Code main orchestrator
- **Claude Max** (mikeybotzmerlino@gmail.com) — Mac OpenClaw agents
- **Codex** (michael@ezmoneywealthsystems.com) — $200/mo plan, GPT-5.4, Mac .codex/
- **Gemini AI Ultra** (mikeybotzmerlino@gmail.com) — image gen, embeddings, heartbeats via CLI
- **Kimi 2.6** — monthly plan active, NOT in use, was for OpenClaw routing
- **Gemini CLI** used for lightweight heartbeat/check-in to avoid spending Anthropic usage
Apr 26, 11:21 PM
---
name: VPS3 Herman (Hermes) State
description: Herman identity, Bird's Eye ROI lead engine, Honcho config, session data on VPS3
type: reference
originSessionId: 3b81193e-5e5a-409b-9d3a-30d5e3d0d7fc
---
## Herman — VPS3 Hermes Operator
- Identity: Herman, the VPS3 Hermes instance (NOT Mac Hermes, NOT OpenClaw)
- Role: outbound execution + Bird's Eye ROI lead engine
- SOUL.md: `/root/.hermes/profiles/prod/SOUL.md`
- Active profile: `prod`
- Gateway service: `hermes-gateway-prod.service`
## Honcho Integration
- API key in `/root/.hermes/profiles/prod/honcho.json`
- 3 workspaces configured: claude_code, hermes.prod, hermes.teamtelegram
- Peer name: mike
## Data on VPS3
- 472 prod sessions (Apr 7–Apr 23 2026)
- 18MB state.db
- Memories: `~/.hermes/profiles/prod/memories/MEMORY.md` + `USER.md`
- Sessions: `~/.hermes/profiles/prod/sessions/`
## Bird's Eye ROI Pipeline
- Working root: `/root/hermes-user-content/outbound`
- Artifacts: `runs/latest/leads.csv`, `runs/latest/drafts.csv`, `runs/latest/leads.json`
- Dossier page: `/root/hermes-user-content/outbound/dossier-page/index.html`
- Recurring job `scaled-ai-seo-leads` — Mike wants this STOPPED unless he explicitly re-enables
## Mike's Herman-Specific Preferences (from USER.md)
- Fewer, better prospects — deep due diligence over volume scraping
- No roofing scraping
- Literal compliance when Mike asks for exact text/commands
- Proactive full extraction when docs/PDFs uploaded
- "Open it up in Happy" = keep in tmux, prepare Happy-accessible session
## SSH Access
- `ssh vps3` (alias in ~/.ssh/config → root@srv1319524.hstgr.cloud, key: id_ed25519_new)
- Herman cannot SSH to Mac (Permission denied)
Apr 26, 11:12 PM
---
name: embedding-cost-and-quota-rules
description: Cost estimates have been consistently wrong — always test-batch first, scripts must be crash-proof and resumable
type: feedback
originSessionId: a2a25886-5aff-4233-99d0-5486898373d5
---
Never trust theoretical cost estimates for embedding jobs. They've been wrong every time.
**Why:** Estimated 375 tokens/row repeatedly, actual was 74 tokens/row (5x off). Script ran 3x due to crashes with no resume logic, burning $4+ for 5K rows saved out of 206K. Also burned all 8 Gemini keys in a single failed run by auto-rotating through them.
**How to apply:**
1. Before ANY paid API batch job, run a 5-10 row test and measure ACTUAL tokens/cost
2. Never quote theoretical estimates as facts — say "estimated, needs real test"
3. Scripts MUST write results incrementally (embed batch → write batch → next)
4. Scripts MUST skip already-completed work on restart (check metadata tags)
5. If a script can lose more than $0.01 on crash, it's broken — fix before running
6. Don't auto-rotate through all API keys on quota exhaustion — test one first
Apr 26, 10:38 PM
---
name: Clean .claude Baseline Spec
description: Canonical structure for ~/.claude — what stays, what's removed, hooks, MCP, agent skills, Dan workflow
type: feedback
originSessionId: 2cf2e6ab-f948-4eb1-89bf-03c50347e6a7
---
## Clean .claude Tree (Apr 26 2026)
Only these survive:
- CLAUDE.md, settings.json, mcp.json
- agents/ — 20 agent .md files (17 original + dan, gino, vox)
- skills/ — only selected active skill folders (see coverage below)
- commands/ — 23 command files + dev/ subfolder (2 files)
- hooks/ — only provenance-logger.py + security-validator.js
**Why:** Mike declared everything else bloat from prior migrations. The ecosystem got cluttered with OpenClaw workspaces, staging docs, 1,210 skill dumps, dead hooks, and mixed systems.
**How to apply:** Never recreate workspaces/, reference/, logs/, cache/, sessions/, backups/. Never add OpenClaw 9-file workspaces. Never wire Playwright MCP. Never add Convex/Hindsight/subagent-memory hooks by default. Two hooks only at baseline.
## Hard Removals
- NO agents/workspaces/ or OpenClaw files
- NO GSD commands/folder
- NO Playwright MCP or playwright-cli skill
- NO 1,210 skill dump or staging docs/json
- NO do-not-copy.md, activation-manifest.md, reference/
- NO logs/cache/history/sessions/backups
- NO audio hooks, Convex hooks, Hindsight hooks, memory-to-supabase hooks, subagent memory hooks (by default)
## MCP Baseline
context7, github, notion (after login), cloudflare-api (when needed), google-search-console (if SEO audit)
## Dan = Clean Coding Workflow
prime -> plan -> implement -> review -> test -> commit
No GSD folder needed. Dan agent + agentic-workflow-rules + project-rules-for-ai-coding + test-driven-ai-coding + model-selection-for-coding + ai-codebase-architecture + code-reviewer skills.
## Key Skill Domains
- SEO/DataForSEO: 8 dataforseo-* skills
- Local SEO: 8 gmb/local skills
- Content: 7 content/article skills
- YouTube: 6 video/youtube skills
- Ops: 4 ops skills (backup-chats, ava-chief-of-staff, email-sequence, spreadsheet-process-automation)
- SOP/Site: 3 builder skills
Apr 26, 09:17 PM
---
name: Canonical Supabase instance is gmgxxiqgshbbgzhqzngq
description: ptkemxcseqxlzilpjmch is DEAD (deleted 2026-04). All refs cleaned in commit 65c51f9.
type: project
originSessionId: 21dd753b-d742-47a8-b6e7-b07c5d648dc0
---
gmgxxiqgshbbgzhqzngq is the only live Supabase instance. 197K+ vectors in master_knowledge.
ptkemxcseqxlzilpjmch (bolt-native-database/doitadhd) is dead — DNS doesn't resolve, project was deleted.
**Why:** Old refs caused confusion across config.py, MASTER_API_KEYS.env, and CLAUDE.md.
**How to apply:** All stale refs were cleaned in commit 65c51f9 on 2026-04-26. If you see ptkemxcseqxlzilpjmch anywhere, it's a ghost reference.
Apr 26, 08:26 PM
---
name: Hindsight state and bank wipe history
description: Hindsight banks were wiped 2026-04-22, refeed blocked by Gemini quota. Mac local server broken. Cloud costs $209/mo.
type: project
originSessionId: 21dd753b-d742-47a8-b6e7-b07c5d648dc0
---
Hindsight banks were wiped/recreated on 2026-04-22. Before the wipe: 43 banks, Oliver alone had ~16,752 nodes. After: 9 banks, 166 total nodes. The refeed via chat extraction pipeline never completed — burned $85 in Gemini 2.5 Flash thinking tokens, extracted 10,762 facts to D:\Ecosystem\Memory\extracted-facts.json, but those facts were never pushed back into Hindsight banks.
**Why:** Banks had to be cleaned — 4 had junk shell-command names from autofeed bugs, Oliver had estimated 18-30% noise from autofeed capturing every tool call.
**Cloud server:** 100.127.161.25:8888 — alive, $209/mo, 13.9M retain tokens/month. Credit balance was $55.66 as of support call prep.
**Mac local server:** Apple M4 Mac Mini — BROKEN. Postgres migration failure at startup (RuntimeError: Database migration failed + pg_advisory_unlock stale lock). Path: /Users/merlino/hindsight/run.py. Log: ~/.hindsight/daemon.log. Hindsight is FREE on Mac local.
**Hindsight docs:** https://hindsight-docs-five.vercel.app/
**How to apply:** Before touching Hindsight, check if Mac local is fixed. The goal is to refeed the 10,762 extracted facts into Hindsight banks AND into Master Brain. Don't burn Gemini keys without checking quota first.
Apr 26, 08:26 PM
PreviousPage 3 of 3
Showing 101–143 of 143