Files
workspace/memory/2026-02-10.md

124 lines
7.4 KiB
Markdown

# 2026-02-10 — Monday Night / Tuesday Morning
## KIPP Build Session
Major KIPP infrastructure session with D J.
### Completed
- **KIPP Gitea account** — user: kipp, repo: git.letsgetnashty.com/kipp/workspace (private)
- **KIPP switched to local LLM** — llamacpp/glm-4.7-flash as primary, Claude Sonnet as fallback
- **KIPP ChromaDB memory** — collection `kipp-memory` (ccf4f5b6-a64e-45b1-bf1b-7013e15c3363), seeded 9 docs
- **Ollama URL updated** — 192.168.86.40:11434 (same machine as llama.cpp, not the old 192.168.86.137)
- **KIPP model config tuned** — maxTokens 2048, contextWindow 32768, auto-recall 1 result
- **KIPP web UI v1** — thin client at https://kippui.host.letsgetnashty.com/
- WebSocket JSON-RPC protocol v3 working (connect handshake, chat.send, streaming)
- Weather widget, grocery list, timers, quick actions, mic button
- Served from kipp-ui.service on port 8080
- Gateway at kipp.host.letsgetnashty.com (port 18789)
- CORS handled in Caddy config
- **Meg added to USER.md** — "the boss"
- **@RohOnChain tweet analyzed** — Kelly Criterion / gabagool22 ($788K PnL), mostly legit math but misleading framing
### Key Findings
- GLM-4 Flash is a thinking model — burns ~200 tokens reasoning before responding
- 32K context split across 4 slots = 8K effective per conversation
- D J has 30GB free RAM on llama.cpp server — could bump to 128K context
- OpenClaw WebSocket protocol: JSON-RPC v3, needs connect with client{id,version,platform,mode}, auth{token}, minProtocol:3
- Event types: `agent` (stream:assistant for deltas, stream:lifecycle for start/end), `chat` (state:delta/final)
- Caddy reverse proxy handles both services: kippui→8080, kipp→18789
- `dangerouslyDisableDeviceAuth: true` still requires auth token in connect params
### KIPP Infrastructure
- **VM:** 192.168.86.100 (wdjones user, SSH key from Case)
- **llama.cpp:** 192.168.86.40:8080 (GLM-4 Flash 30B q4, 2 GPUs 12GB+10GB, 32GB RAM)
- **Ollama:** 192.168.86.40:11434 (nomic-embed-text for embeddings)
- **ChromaDB:** 192.168.86.25:8000 (kipp-memory collection)
- **Gitea:** kipp:K1pp-H0me-2026! @ git.letsgetnashty.com/kipp/workspace
- **Telegram:** @dzclaw_kipp_bot
- **Web UI:** https://kippui.host.letsgetnashty.com/ (port 8080)
- **Gateway:** https://kipp.host.letsgetnashty.com/ (port 18789)
- **Token:** kipp-local-token-2026
### Evening Session (D J back from work)
- **KIPP UI v2 chat confirmed working** — D J tested on Mac, chat end-to-end functional at 18:34
- **Voice input added** — mic button in chat overlay triggers browser Speech Recognition, auto-sends on final transcript
- **Piper TTS installed** on KIPP VM — `pip3 install piper-tts`, Amy medium voice model downloaded
- **TTS API server** built (port 8081, systemd kipp-tts.service) + proxy through UI server on port 8080
- **Piper voice quality confirmed** — sent D J audio sample via Telegram, not robotic
- **Caddy WebSocket issue** — persistent 503 on WSS through Caddy reverse proxy
- Direct WS to 192.168.86.100:18789 works perfectly every time
- Caddy returns 503 on WebSocket upgrade specifically
- Fixed gateway: added `192.168.86.0/24` to trustedProxies, added `http://192.168.86.100:8080` to allowedOrigins
- Gateway logs showed "origin not allowed" and "proxy headers from untrusted address"
- Even after gateway fix, Caddy still 503s — Caddy itself is the bottleneck
- Need to check Caddy logs on whatever machine it runs on (192.168.86.1?)
- D J's Caddyfile is clean: just `reverse_proxy 192.168.86.100:18789`
- Chat works intermittently — connects sometimes then drops
- **Caddy config** (D J's full Caddyfile): media→86.50:8096, vault→86.244:7080, git→86.244:3002, share→86.26:3000, kippui→86.100:8080, kipp→86.100:18789
- **@Argona0x tweet analyzed** — $50→$2,980 Polymarket bot claim, 90% likely fake (engagement farming)
- **Kelly Criterion explained** to D J
### Night Shift Work
- **Alexa+ UI research completed** — sub-agent produced comprehensive 200-line report at projects/kipp/research/alexa-plus-ui.md
- Key patterns: dashboard-first, ephemeral conversation overlay, widget grid, proximity-aware, ambient mode
- Verge/CNET screenshots downloaded for reference
- **KIPP UI v2 built and deployed** — Alexa-inspired dashboard:
- Hero card with greeting + status, weather with hourly forecast, shopping list, today/calendar, timers
- Chat overlay appears on mic button press, dashboard blurs behind it
- Dark theme, card-based, bottom bar with mic button
- WebSocket protocol fully working (connect, chat.send, streaming)
- **Systems check:**
- Leverage trader running: $9,987.40 (-0.13% from $10K), HYPE trade closed at -$15.63
- GARP portfolio: $100,055.90 (+0.06% from $100K), 6 positions
- All systemd timers healthy
- **Future UI improvements identified:**
- Ambient/photo mode when idle (slideshow + big clock)
- Blue waveform animation during listening state
- Results persistence (timer created in chat → appears on dashboard)
- Proximity-aware layout (different for close vs far viewing)
### KIPP HTTPS + Voice Fixed
- Self-signed cert generated (10yr, SAN for 192.168.86.100)
- UI server switched to HTTPS on port 8080
- socat WSS proxy on port 18790 → gateway 18789 (systemd kipp-wss-proxy.service)
- Browser TTS fallback removed — Piper only
- Double-voice mystery: D J had 2 tabs open 😂
- Gateway config fixed: `allowedOrigins` was at root level (invalid), moved to `gateway.controlUi.allowedOrigins`
- Added `https://192.168.86.100:8080` to allowedOrigins
### @milesdeutscher Tweet Analysis
- Polymarket copy-trading GitHub bot going viral (23K views)
- Our take: validates our kch123 approach but we're ahead — we have whale selection, they just have execution code
- Edge erodes with adoption; not actionable for us
### Night Shift — Ambient Mode
- Built ambient/idle mode for KIPP UI (sub-agent)
- Activates after 60s idle: large glowing clock, weather icon, dark gradient background
- Rotating content: tuxedo cat facts, quotes, trivia (every 30s)
- Tap anywhere to return to dashboard
- Verified with Playwright: both ambient and dashboard modes render correctly
### Late Night — KIPP Local-Only Switch
- **D J decided KIPP stays local-only** — no external exposure, direct IP access
- Switched UI WebSocket URL from `wss://kipp.host.letsgetnashty.com` to `ws://192.168.86.100:18789`
- UI renders visually at `http://192.168.86.100:8080/` (Playwright confirmed: green dot, weather, clock)
- **But WS still broken**: origin-allowed errors persist, old domain URLs not fully stripped from JS fallback/retry code
- Hundreds of failed reconnect attempts every ~3s in console logs
- TTS and weather fetch endpoints still referencing old HTTPS domain paths
- **Next**: fully clean UI JS code of all old domain refs, fix origin-allowed, re-test with Playwright
- **Network issue on Case's VM** (192.168.86.45): persistent "TypeError: fetch failed" every ~10s — Telegram polling, ChromaDB auto-recall broken. D J communicating via webchat as workaround.
### Caddy Config (D J's reverse proxy)
```
kippui.host.letsgetnashty.com {
reverse_proxy 192.168.86.100:8080
}
kipp.host.letsgetnashty.com {
header Access-Control-Allow-Origin "https://kippui.host.letsgetnashty.com"
header Access-Control-Allow-Methods "GET, POST, OPTIONS"
header Access-Control-Allow-Headers "Content-Type, Authorization"
@options method OPTIONS
handle @options { respond 204 }
reverse_proxy 192.168.86.100:18789
}
```