Files
workspace/MEMORY.md

8.9 KiB

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

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

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
  • 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: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