124 lines
7.4 KiB
Markdown
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
|
|
}
|
|
```
|