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

## Active Threads

- **Sandbox buildout:** ✅ Complete (74 files, 37 tools)
- **Inner life system:** ✅ Complete (7 tools)
- **Next:** Set up Qwen when D J wakes

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

- Interested in crypto/trading analysis
- Follows money-making accounts on X (crypto, polymarket, arbitrage)
- Wants automated analysis of feed posts for validity
- 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

## Infrastructure (updated 2026-02-07)

- **ChromaDB:** http://192.168.86.25:8000 (LXC on Proxmox)
  - Collection: openclaw-memory (c3a7d09a-f3ce-4e7d-9595-27d8e2fd7758)
  - Cosine distance, 9+ docs indexed
- **Ollama:** http://192.168.86.137:11434
  - Models: qwen3:8b, qwen3:30b-a3b, glm-4.7-flash, nomic-embed-text
- **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

## Lessons Learned (updated 2026-02-07)

- 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
