# 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

## 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)

## Active Threads

- **Market Watch:** ✅ GARP paper trading sim live at marketwatch.local:8889
  - Multiplayer game engine, "GARP Challenge" game running
  - Case trading autonomously — 7 positions opened 2026-02-09
  - Systemd timer Mon-Fri 9AM + 3:30PM CST
- **Feed Hunter:** ✅ Pipeline working, Super Bowl sim +72.8% on kch123 copy
  - Expanding into crypto and stock analysis
- **Stock Screener:** yfinance-based, 902 tickers, GARP filters, free/no API key
- **Control Panel:** Building at localhost:8000
- **Sandbox buildout:** ✅ Complete (74 files, 37 tools)
- **Inner life system:** ✅ Complete (7 tools)
- **Next:** Crypto signal analysis (D J forwarding Telegram signals), expanded Feed Hunter

## 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:K1pp-H0me-2026! @ git.letsgetnashty.com/kipp/workspace
- **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
