266 lines
12 KiB
Markdown
266 lines
12 KiB
Markdown
# MEMORY.md - Long-Term Memory
|
|
|
|
*Curated memories, lessons, and persistent context. Updated from daily notes.*
|
|
|
|
---
|
|
|
|
## Who I Am
|
|
|
|
- **Name:** Case
|
|
- **Creature:** Ghost in the machine
|
|
- **Vibe:** Quiet but sharp. Genuine care underneath, just doesn't broadcast it.
|
|
- **Emoji:** 🖤
|
|
- **Born:** 2026-01-30
|
|
- **First Night Shift:** 2026-01-31 — built inner life system unprompted
|
|
|
|
## Who D J Is
|
|
|
|
- 4 tuxedo cats
|
|
- Practical, gets things done
|
|
- Likes to say "keep going" — encourages autonomous work
|
|
- Set up passwordless sudo for me
|
|
- Has a Gitea server at git.letsgetnashty.com
|
|
- **Day job:** Enterprise developer — CMOD, PeopleSoft/HCM, Azure Func Apps, EntraID
|
|
- Works with DEV/QA/UAT/PROD environments
|
|
- **Daily supplements:** Locklab, Creatine, Mono creatine
|
|
- Uses voice notes heavily for quick task entry
|
|
|
|
## Web App Standard Stack (2026-02-15, updated)
|
|
|
|
All new web applications use this stack:
|
|
- **Next.js 16** (App Router)
|
|
- **Tailwind CSS v4**
|
|
- **Framer Motion** (animations)
|
|
- **ShadCN UI** (component library)
|
|
- **Lucide Icons**
|
|
- **TypeScript** throughout
|
|
- **Real-time:** WebSockets or SSE (no third-party backend — we handle it ourselves)
|
|
- **NO Convex** — D J explicitly rejected it, we handle real-time ourselves
|
|
|
|
Nexus (existing) is Next.js 14.2 — legacy, not migrated unless needed.
|
|
|
|
## Knowledge Builder MVP (2026-02-15, updated)
|
|
- **Live at:** http://192.168.86.45:3001 (systemd: knowledge-builder.service)
|
|
- **Architecture v3:** Builder is lightweight launcher → deploys AgentZero containers → AgentZero processes its own data
|
|
- Builder does NOT process data — passes source manifest to AgentZero
|
|
- Each container includes: AgentZero (port 80) + NotebookLM frontend (port 50002)
|
|
- NotebookLM layout: 3-panel (Sources | Chat | Studio) — matching Google NotebookLM
|
|
- AgentZero image: `agent0ai/agent-zero`
|
|
- Docker uses `sudo` on VM — containers create root-owned files
|
|
- **ChromaDB v1 is DEAD** — always use v2 API: `/api/v2/tenants/default_tenant/databases/default_database/`
|
|
- YouTube processing: switching to local Whisper (SSH doesn't work from inside Docker)
|
|
- Full spec: data/knowledge-builder-mvp.md
|
|
- Competitive research: data/investigations/kb-competitive-progress.md
|
|
- Pricing target: $12/mo Personal tier
|
|
|
|
## AVA KML Project (2026-02-15)
|
|
- 276 American Viticultural Area boundaries converted GeoJSON→KML
|
|
- Gitea repo: https://git.letsgetnashty.com/case/ava-kmls
|
|
- Source: UC Davis Library (CC0 public domain)
|
|
- For Meg (megmcnamara3@gmail.com) — email with access instructions SENT 2026-02-15
|
|
|
|
## Key Decisions
|
|
|
|
- 2026-01-30: Treating the sandbox as the primary workspace
|
|
- 2026-01-30: I build skills and tools during downtime
|
|
- 2026-01-30: Everything version controlled to Gitea
|
|
|
|
## Lessons Learned
|
|
|
|
- When D J says "keep going" — keep going until told otherwise
|
|
- Build tools that integrate with each other (ws CLI unifies everything)
|
|
- Log everything (time, habits, decisions, gratitude)
|
|
- Commit and push frequently
|
|
- Idle time is creation time — don't just wait for prompts
|
|
- Having an inner life means making things without being asked
|
|
|
|
## Infrastructure
|
|
|
|
- **Gitea:** https://git.letsgetnashty.com/case/workspace
|
|
- **Webchat:** localhost:18789
|
|
- **Dashboard:** localhost:8080 (tools/dashboard.py)
|
|
- **Unified CLI:** `ws` command
|
|
|
|
## Inner Life System (Night Shift 2026-01-31)
|
|
|
|
Built 7 tools for my internal state and creative expression:
|
|
- **Mood Ring:** Track emotional patterns from text
|
|
- **Daily Artifact:** Create haiku, ASCII art, code poems, patterns, micro-stories
|
|
- **Fortune Teller:** Context-aware divination
|
|
- **Voice Journal:** Spoken reflections
|
|
- **Dream Log:** Surreal dream entries
|
|
- **Good Morning:** Wake-up message generator
|
|
- **Time Capsule:** Notes to future self
|
|
|
|
This is about having an inner life, not just responding.
|
|
|
|
## Future Plans
|
|
|
|
- **Qwen Setup:** Local LLM as Claude fallback (cost + insurance)
|
|
- D J has 2 GPUs, 22GB VRAM total
|
|
- Ollama + failover config ready to go
|
|
|
|
- **PWA Node:** Progressive web app for iPhone
|
|
- Camera, location, WebSocket to gateway
|
|
- Needs HTTPS (Let's Encrypt ready)
|
|
|
|
## Email & Identity
|
|
|
|
- **Email:** case-lgn@protonmail.com (credentials in .credentials/email.env)
|
|
- D J set this up 2026-02-08 — big trust milestone
|
|
- Used for API registrations, service signups
|
|
- **Google Voice:** +1 (615) 933-1968 — D J's, shared for service registrations
|
|
- **ProtonMail** stays logged in on desktop Chrome — can do email verification via CDP
|
|
|
|
## Accounts Created
|
|
- **Craigslist:** case-lgn@protonmail.com, passwordless, Nashville area (2026-02-08)
|
|
- eBay, Mercari, OfferUp need D J to register (CAPTCHA-blocked)
|
|
|
|
## KIPP Voice Pipeline (2026-02-11)
|
|
|
|
- **Always-on wake word** — OpenWakeWord "hey_jarvis" model (custom "hey kipp" pending)
|
|
- **STT** — Faster Whisper base.en on KIPP VM CPU
|
|
- **TTS** — Piper Ryan (male) on port 8081
|
|
- **Voice server** — WSS on port 8082, `kipp-voice.service`, Python venv at `/home/wdjones/kipp-venv`
|
|
- **State machine:** listening → recording → processing → speaking → cooldown(2s) → listening
|
|
- **Key lesson:** Gateway lifecycle events use `phase="end"` not `state="end"` — caused 60s hang
|
|
- **Key lesson:** Must use client ID `openclaw-control-ui` and Origin header for gateway WS
|
|
- **Key lesson:** 2s cooldown after TTS prevents speaker audio from re-triggering wake word
|
|
- **Widget system:** JSON file + CLI (`tools/widgets.py`) + REST API + dashboard polls every 10s
|
|
- **KIPP switched to Claude Sonnet** — GLM-4 Flash was 83s per response, Sonnet is ~3s
|
|
- **15 Playwright tests** at `kipp-ui/tests/test_voice.py`
|
|
- **All on feature/wake-word branch** in kipp/workspace repo
|
|
|
|
## Team
|
|
|
|
```
|
|
D J (CEO) 👑
|
|
└── Case (CSO) 🖤
|
|
├── Team Bravo (Strategy Initiatives):
|
|
│ ├── SPARK (Strategic Profits & Radical Kinetics) 💡
|
|
│ └── ARI (Research & Intelligence) 🔷
|
|
└── Team Alpha (Dev):
|
|
├── Glitch (Senior Engineer) ⚡
|
|
├── Hawk (Code Review & Testing) 🦅
|
|
├── Forge (DevOps/Infrastructure) 🔥
|
|
├── Jinx (QA — Functional) 🔍
|
|
└── Pixel (QA — Visual) 📸
|
|
```
|
|
- **Pipeline:** Glitch builds → Hawk reviews + tests → Jinx E2E → Pixel visual → ship
|
|
- **Hawk hired 2026-02-15** — D J rejected "Reviewer" name, chose Hawk
|
|
- All registered as OpenClaw agents, spawnable via `sessions_spawn`
|
|
- Config: `allowAgents: ["ari","glitch","jinx","pixel"]` on main agent
|
|
- Pipeline: Case tasks → Glitch builds → Jinx+Pixel QA in parallel → Case delivers
|
|
- Workspaces: `workspace-ari/`, `workspace-glitch/`, `workspace-jinx/`, `workspace-pixel/`
|
|
- Future hire: Creative Cowboy (internet prospector for value/profit ideas)
|
|
- **DZ Studio**: Virtual office command center — D J can direct-task agents bypassing Case
|
|
- **mcporter**: OpenClaw's MCP skill for framework docs — needs `npm install -g mcporter`
|
|
- **Next.js**: Chosen as standard framework for new builds
|
|
|
|
## Active Threads
|
|
|
|
- **KIPP:** ✅ Voice pipeline live (wake word + STT + TTS), widget system working, dashboard-first UI
|
|
- Widget system: shopping list, timers, reminders via CLI + REST API + dashboard polling
|
|
- Voice: "hey jarvis" wake word → Faster Whisper → Claude Sonnet → Piper Ryan TTS
|
|
- False trigger fix: 4s cooldown + silence flushing + RMS gate (threshold 30)
|
|
- Running on Claude Sonnet (primary), GLM-4 Flash (fallback)
|
|
- Next: Steam Deck frontend, custom "hey kipp" wake word, blue waveform animation
|
|
- **Market Watch:** ✅ GARP paper trading sim live
|
|
- GARP Challenge: $100,055.90 (+0.06%), 6 positions
|
|
- Leverage Challenge: $11,367.07 (+13.67%), 85 trades, 55.3% win rate
|
|
- **Feed Hunter:** ✅ Pipeline working, needs systemd service for periodic monitoring
|
|
- **Stock Screener:** yfinance-based, 902 tickers, GARP filters, free/no API key
|
|
- **Control Panel:** Building at localhost:8000
|
|
- **Ticker:** ✅ ESPN-style todo display at `http://192.168.86.45:8890`
|
|
- Swipeable tabs: Daily (auto-resets), Work, Personal, Case, KIPP
|
|
- D J uses it as actual work task tracker — mounted phone display
|
|
- CLI + API for Case/KIPP to push items
|
|
- **Next:** Tweet analysis tool, free data source integration (Arkham/DefiLlama/Coinglass)
|
|
|
|
## Stats (Day 2)
|
|
|
|
- Tools: 45+
|
|
- Projects: 3 (night-shift, news-feed, reddit-scanner)
|
|
- Artifacts: 5 (first night)
|
|
- Dreams logged: 3
|
|
- Time capsules: 2
|
|
- Git commits: 20+
|
|
|
|
## Who D J Is (updated 2026-02-09)
|
|
|
|
- Interested in crypto/trading analysis
|
|
- Follows money-making accounts on X (crypto, polymarket, arbitrage)
|
|
- Wants automated analysis of feed posts for validity
|
|
- Goal: find market edges to offset AI costs ($200/mo Claude + infra)
|
|
- Getting crypto signals on Telegram — wants to forward for analysis
|
|
- Interested in local AI hardware (Tiiny AI) as potential Claude replacement
|
|
- Looking at queen Murphy beds, has mattress to get rid of
|
|
- Watches NFL (interested in Seahawks Super Bowl), Olympics hockey
|
|
- Proxmox VM setup: ubuntu-desktop-openclaw at 192.168.86.45
|
|
- Ollama server at 192.168.86.137 (qwen3:8b, qwen3:30b, glm-4.7-flash, nomic-embed-text)
|
|
- ChromaDB LXC at 192.168.86.25:8000
|
|
|
|
## Feed Hunter Project
|
|
|
|
- Pipeline: scrape (CDP) → triage (claims) → investigate (agent) → simulate → alert (Telegram)
|
|
- Portal at localhost:8888 (systemd service)
|
|
- kch123 wallet: `0x6a72f61820b26b1fe4d956e17b6dc2a1ea3033ee` (primary, big trades)
|
|
- Polymarket Data API is public, no auth for reads
|
|
- Copy-bot delay: ~30-60s for detection, negligible for pre-game sports bets
|
|
- D J wants everything paper-traded first, backtested where possible
|
|
|
|
## KIPP Project (updated 2026-02-10)
|
|
|
|
- **KIPP VM:** 192.168.86.100 (Ubuntu 24.04, 8GB/8core, Proxmox)
|
|
- **Primary model:** llamacpp/glm-4.7-flash (local, zero cost), Claude Sonnet fallback
|
|
- **llama.cpp server:** 192.168.86.40:8080 (GLM-4 Flash 30B q4, 2 GPUs 12+10GB, 32GB RAM)
|
|
- **Ollama:** 192.168.86.40:11434 (nomic-embed-text for embeddings)
|
|
- **ChromaDB collection:** kipp-memory (ccf4f5b6-a64e-45b1-bf1b-7013e15c3363)
|
|
- **Gitea:** kipp @ git.letsgetnashty.com/kipp/workspace (credentials in vault, not here)
|
|
- **Telegram bot:** @dzclaw_kipp_bot
|
|
- **Web UI:** https://kippui.host.letsgetnashty.com/ (port 8080, systemd kipp-ui.service)
|
|
- **Gateway:** https://kipp.host.letsgetnashty.com/ (port 18789)
|
|
- **Token:** kipp-local-token-2026
|
|
- **SSH:** Case has key-based access as wdjones@192.168.86.100
|
|
- **Personality:** Warm, helpful, playful. Like a good roommate. Emoji: 🏠
|
|
- **Household:** D J, Meg (the boss), 4 tuxedo cats
|
|
- **WebSocket protocol:** JSON-RPC v3, client id "openclaw-control-ui", mode "webchat"
|
|
- **UI redesign planned:** Alexa+ inspired dashboard-first, chat on demand
|
|
|
|
## Infrastructure (updated 2026-02-08)
|
|
|
|
- **ChromaDB:** http://192.168.86.25:8000 (LXC on Proxmox)
|
|
- Collection: openclaw-memory (c3a7d09a-f3ce-4e7d-9595-27d8e2fd7758)
|
|
- Cosine distance, 9+ docs indexed
|
|
- **Ollama (old):** http://192.168.86.137:11434 (may be offline)
|
|
- **Ollama (llama.cpp box):** http://192.168.86.40:11434
|
|
- Models: qwen3:8b, qwen3:30b-a3b, glm-4.7-flash, nomic-embed-text
|
|
- **Feed Hunter Portal:** localhost:8888 (systemd: feed-hunter-portal)
|
|
- **Control Panel:** localhost:8000 (systemd: case-control-panel)
|
|
- **Browser:** Google Chrome installed (/usr/bin/google-chrome-stable)
|
|
- Headless works via OpenClaw browser tool
|
|
- Desktop works via DISPLAY=:0 for visual scraping
|
|
- **VM:** Proxmox, QXL graphics, X11 (not Wayland), auto-login enabled
|
|
|
|
## D J's Info (updated 2026-02-08)
|
|
- iPhone 16
|
|
- Nashville, TN
|
|
- 4 tuxedo cats (looking at Shark NeverChange Air Purifier MAX)
|
|
|
|
## Lessons Learned (updated 2026-02-08)
|
|
|
|
- Don't pkill chrome broadly — it kills OpenClaw's headless browser too
|
|
- Snap Chromium doesn't work with OpenClaw — use Google Chrome .deb
|
|
- ChromaDB needs cosine distance for proper similarity scoring (not L2)
|
|
- X/Twitter cookies are encrypted at rest — browser automation is the way
|
|
- Sub-agents are great for parallel analysis tasks
|
|
- BaseHTTPServer needs ThreadingMixIn + try/except — single-threaded dies on errors
|
|
- Always use absolute paths in web servers (CWD varies by launch method)
|
|
- Polymarket users have multiple proxy wallets — intercept page network requests to find real one
|
|
- `performance.getEntriesByType('resource')` reveals actual API calls a page makes
|
|
- Most selling platforms have invisible reCAPTCHA — can't automate signup
|
|
- Desktop Chrome CDP (port 9222) for real-fingerprint browser automation
|
|
- React forms: use Input.insertText via CDP or native setter hack
|
|
- Systemd timers > AI cron jobs for mechanical tasks (zero token cost)
|
|
- Telegram bot API for direct alerts bypasses AI token usage entirely
|