WHIM

Complete Application Manual

A modular, local-first control framework that unifies AI, voice, geofencing, weather radar, HAM radio, and IoT across desktop, mobile, and vehicle — with zero cloud dependency.

Three platforms. One ecosystem. Entirely sovereign.

v0.3.7 — May 2026 — CARRARA Mint — Hybrid Connection — Whim Terminal + Whim.m + Whim.V + Whimgo.io + WISP

▶ Watch the Whim Overview Video on YouTube

THE WHIM ECOSYSTEM

How the platforms, models, and infrastructure connect

Whim Ecosystem — Top-down architecture diagram showing Whim Terminal, Whim.m Mobile, Whim.V Vehicle, Local LLMs, OpenClaw Injection, Cloud, and IoT/Vehicle systems
Whim Ecosystem — Local edge, cloud-optional architecture with OpenClaw injection across all nodes
Whim Terminal
Full desktop application (Linux/Windows/macOS). 18-tab Tkinter UI for AI chat, voice cloning, geofencing, weather radar, HAM/APRS, IoT, messaging, and more.
Whim.m
Mobile companion (Android APK/PWA). Voice recording, AI chat via Ollama proxy, wake word commands, file library, and cross-device messaging.
Whim.V
Vehicle dashboard for 13.6" displays and tablets. Touch-optimized GeoF map, Doppler radar, document viewer, AI chat, and system logs.
OpenClaw
Command protocol and AI gateway. Routes instructions, manages sessions, and injects control across all platforms via WebSocket.
Doppler
Weather radar module. NWS NEXRAD precipitation overlay, Open-Meteo forecast, anemometer, NWR audio, and severe weather alerts pushed to mobile.
GeoF
Geofence tracker with canvas map, LoRa collar integration (ESP32), named location management, in/out detection, and battery monitoring.
Local LLMs
All AI inference runs locally through Ollama. DeepSeek R1:32B, Llama 3.1:8B-16K, Qwen3-Coder:32B. No cloud APIs required.
Tailscale Mesh
WireGuard-encrypted mesh VPN connecting PC, phones, tablet, and vehicle. Fallback to reverse SSH tunnel via VPS for cross-network access.
Whimgo.io
Public web portal and operator dashboard. WISP remote terminal via ttyd over Tailscale, ADB Quick Actions, mesh status, development journal. GitHub Pages hosted.

A typical flow: Mobile device sends a voice command → OpenClaw routes it through the local LLM → Whim Terminal executes the action → result syncs back to all connected devices.

01

Application Overview

Whim is a three-tier local-first ecosystem — desktop terminal, mobile companion, and vehicle dashboard — built in Python that unifies AI chat, voice cloning, geofence tracking, weather radar, HAM/APRS monitoring, IoT automation, messaging, screen sharing, and document editing into a single dark-themed platform. It runs on Linux (CARRARA Mint), Windows 11, and macOS, connecting to Android devices and vehicle displays via reverse SSH tunnel, Tailscale mesh VPN, LAN, or USB/ADB. No cloud APIs. No telemetry. ~2 MB of code.

Whim Desktop — Sessions Tab
Whim desktop application showing the Sessions tab with all module tabs visible across the header.

The Whim Ecosystem

PlatformAppDescription
DesktopWhim Terminal v3.5.0Full-featured Tkinter application with 20 tabs: AI chat with Unified Model Router (local-first Ollama with cloud API fallback via OpenAI, Anthropic, DeepSeek), Sovereign Mode toggle, GBrain persistent AI memory with knowledge graph and entity tracking, voice cloning (XTTS v2), wake word engine, GeoF geofence tracker with LoRa collar integration and named location management, Doppler weather radar with NWS NEXRAD overlay and 7 regional radar stations, HAM/APRS station monitor with Direwolf, SmartThings IoT, Signal/Discord messaging, Email via Himalaya, NodeFlow visual editor, screen share, archive editor, and more. Shared location database with address-to-GPS geocoding across GeoF, Doppler, and HAM tabs. Runs on Linux, Windows 11, and macOS.
MobileWhim.m v3.4Android companion app (APK + PWA) with five tabs: REC (voice recording), LIBRARY (file browser), CHAT (Ollama AI proxy), WAKE (voice commands), DEVICES (mesh messaging). Runs on Samsung Galaxy S22, Galaxy S9, and Lenovo TB311FU tablet.
VehicleWhim.V v1.1Touch-optimized vehicle dashboard for 13.6″ Tesla-style displays (Ubuntu) or Android tablets. Five panels: GeoF geofence map with Leaflet satellite tiles and named locations, NWS Doppler radar with 7 station selector, LibreOffice document viewer, AI chat, system logs. Named location manager with Nominatim geocoding, Service Worker for offline caching. Flask server + WebView APK.
Web PortalWhimgo.ioPublic-facing project site and operator dashboard hosted on GitHub Pages. Features product overview, Edge Match GPU selector, development journal, and WISP remote terminal (ttyd :7681 over Tailscale mesh with TLS). Operator-gated pages use client-side SHA-256 passphrase authentication. Enables remote APK sideloading and system administration from any browser on the mesh.

Key Highlights

18 Desktop Tabs (2 Rows)
Chat, Whim.AI, SmartThings, AVR Lab, Voice Engine, Live, TRV Cipher, Library, Archive, Persona, GeoF, Doppler, HAM/APRS, NodeFlow, Screen Share, Sync, Settings
GeoF — Geofence Tracker
Canvas map with draggable fence vertices, LoRa collar bridge (ESP32 gateway), 20-minute heartbeat monitor, in/out detection, battery tracking, and pin management for livestock and pet tracking across Ozark terrain.
HAM — APRS Monitor
Embedded OSM tile map with station markers, Direwolf integration (KISS/AGWPE/simulate modes), distance-filtered station list, base station config, raw packet log, and auto-polling for real-time position tracking.
Doppler — Weather Radar
NWS NEXRAD base reflectivity overlay on OSM tiles, Open-Meteo 7-day forecast, anemometer, NWR audio (web stream + RTL-SDR), severe weather alerts pushed to mobile via Whim.m.
Mobile Companion (Whim.m)
Five-tab Android app: voice recording, file library, AI chat via Ollama proxy, wake word commands, and cross-device messaging. VPS tunnel or Tailscale mesh. Runs on Galaxy S22, S9, and Lenovo tablet.
Vehicle Dashboard (Whim.V)
Touch-optimized vertical UI for vehicle displays and tablets. GeoF map, Doppler radar, LibreOffice document viewer (headless .xlsx/.docx rendering), AI chat, and system status — all in a high-contrast dark theme for driving visibility.
Local-First AI
All AI inference runs locally through Ollama with DeepSeek R1:32B, Llama 3.1:8B-16K, and Qwen3-Coder:32B. No cloud dependency. Streaming chat with presets, observability, tool trace, and context metering.
Three-Platform Networking
Reverse SSH tunnel (primary) + Tailscale mesh VPN (fallback) + LAN/ADB connects desktop, mobile, and vehicle. Whim Terminal on port 18789 (WebSocket), Whim.m on 8089 (HTTP), Whim.V on 8099 (Flask).
02

Connectivity & Networking

Whim uses a multi-layered connectivity architecture to bridge the desktop application with mobile devices, messaging platforms, and IoT infrastructure.

Whim System Architecture & Network Topology

System Architecture & Network Topology (UML) — Includes Whimgo.io web portal, WISP remote terminal (ttyd :7681), Tailscale mesh, VPS tunnel, and all device endpoints

Samsung Phone ← VPS Tunnel (default) / Tailscale (fallback) / LAN → CARRARA Desktop ← WebSocket → OpenClaw Gateway
Whim.m PWA ← HTTP :8088 → Journal Ingest Server ← file → ~/Journal
Whim.V (Vehicle/Tablet) ← HTTP :8099 (LAN / Tailscale) → Whim.V Flask Server ← REST → Ollama + LibreOffice
ESP32 LoRa Gateway ← Serial / TCP → lora_bridge.py (GeoF) ← events → GeoF Tab Canvas Map
Direwolf / RTL-SDR ← KISS / AGWPE → HAM/APRS Tab ← decode → Station Map + Packet Log
SS Server :8091 ← MJPEG → Phone Camera ← POST → Desktop Preview
Whimgo.io (Browser) → HTTPS iframe → ttyd :7681 (TLS) ← Tailscale ← WISP Terminal

Connection Channels

Channel Protocol Default Port Purpose
OpenClaw Gateway WebSocket 18789 Core command bus for chat, approvals, sessions, presence
Journal Ingest / Whim.m HTTP (multipart) 8088 Voice recording upload, Whim.m PWA, AI chat proxy
Screen Share HTTP (MJPEG stream) 8091 Desktop-to-phone screen share + phone camera feed
SSH Tunnel (autossh) Reverse SSH via VPS 8089 Primary: secure cross-network connectivity via VPS at 104.207.140.242
Tailscale (fallback) WireGuard mesh VPN 8089 Fallback: direct connection via Tailscale IP 100.69.17.20, handles WiFi↔cellular handoffs
Ollama HTTP REST 11434 Local LLM inference (streaming chat completions)
Signal CLI HTTP 8080 Signal messenger send/receive via signal-cli
ADB USB / TCP 5555 Android device management, APK install, screenshots
Whim.V Dashboard HTTP (Flask) 8099 Vehicle/tablet dashboard: GeoF map, Doppler radar, document viewer, AI chat, system logs
LoRa Bridge (GeoF) Serial / TCP ESP32 collar gateway for geofence tracking (lora_bridge.py subprocess)
Direwolf (HAM) KISS / AGWPE 8001 APRS packet decode from RTL-SDR or soundcard for station monitoring
Singleton Lock TCP 48891 Prevents duplicate Whim instances, sends SHOW signal
Zipline CLI HTTP (Tailscale) 8089 Local-first file transfer between mesh devices via Whim.m endpoints
WISP Terminal (ttyd) HTTPS (WebSocket) 7681 Web-based terminal access to CARRAMint via ttyd over Tailscale mesh, embedded in Whimgo.io

Header Bar Controls

The application header provides real-time connectivity controls:

Two-Row Tab Layout

All 20 module tabs are split across two rows for better visibility and click targets. Row 1 contains the primary workflow tabs (Chat through TRV Cipher). Row 2 contains utility and configuration tabs (Library through Brain and Settings). The active tab is highlighted in green with a border accent. Tabs are button-based with hover effects. Global mouse-wheel scrolling works on every scrollable widget in the application.

03

Desktop Tabs & Features

Whim organizes its functionality into 16 dedicated tabs, each serving a specific domain within the ecosystem.

Tab Internal Key Description
CHATchatDirect command-line chat with the OpenClaw gateway. Send messages, abort tasks, view real-time WebSocket traffic.
WHIM.AIwhimaiFull AI console with local Ollama LLM, presets, observability, context metering, tool trace, output templates, and capture tools.
SMARTTHINGSsmartthingsSamsung SmartThings device browser with scan, filter, favorites, device detail, and recently-controlled history.
AVR LABxttsXTTS v2 voice synthesis lab with speaker references, spectrogram visualization, and Table Reads output.
VOICE ENGINEvoice_engineWake word tuning: live spectrogram (Whim-Scope), gain/HPF/AGC/parametric EQ, sensitivity, VAD, spectral subtraction, confidence ghost bar, intelligibility band.
PERSONApersonaVoice personality manager: coined response playlists per voice clone, confidence-gated, context-aware, XTTS pre-render pipeline, behavioral categories.
TRV CIPHERhearmeoutAudio transcription workstation with spectrogram, playback transport, Whisper transcription, ODT export, and scrub tools.
DOPPLERdopplerWeather radar with embedded OSM tile map, NWS NEXRAD precipitation overlay, Open-Meteo conditions & 7-day forecast, anemometer, NWR audio (web stream + RTL-SDR), and severe weather alerts pushed to S22.
GEOFgeofGeofence tracker with canvas map, collar status table, LoRa bridge integration, 20-minute heartbeat monitor, and fence pin management for livestock tracking.
HAMhamAPRS station monitor with embedded tile map, Direwolf integration (KISS/AGWPE/simulate), station list with distance filtering, base station config, and raw packet log.
NODEFLOWnodeflowVisual node-based flow editor showing active droids, LLM reasoning, OpenClaw telemetry, and data flow connections with drag-and-drop canvas, auto-poll, and node inspector.
ARCHIVEarchiveRich text editor with formatting toolbar, font selection, alignment, bullet lists, find/replace, word count, and file browser.
SSssScreen share server with QR code, phone camera feed, desktop preview, FPS/quality settings, and MJPEG streaming.
SETTINGSsettingsAPI keys & endpoints (Ollama, OpenAI, Anthropic, DeepSeek, SmartThings, Notion), model management (pull/delete from Ollama), Sovereign Mode toggle, Unified Model Router (local-first with cloud fallback), app preferences, theme, paths.

Desktop Tab Screenshots

Chat Desktop Tab
Chat Tab
Library Desktop Tab
Library Tab
AVR Lab Desktop Tab
AVR Lab Tab
TRV Cipher Desktop Tab
TRV Cipher Tab
Doppler Desktop Tab
Doppler Tab — Radar Map, NWR Audio, 7-Day Forecast
GeoF Desktop Tab
GeoF Tab — Geofence Map & Collar Status
HAM Desktop Tab
HAM Tab — APRS Map & Direwolf
04

Whim.AI — Local LLM Console

Whim.AI Desktop Tab
The Whim.AI console showing the AI chat panel, presets, observability metrics, and tool command reference.

Whim.AI is the central intelligence hub. It connects to a local Ollama instance for streaming chat completions with full observability.

Layout

Presets

PresetModelContextTemperatureToolsSystem Prompt
Defaultllama3.1:8b-16k163840.7all(none)
Creativellama3.1:8b-16k163841.2allCreative writing assistant
Codellama3.1:8b-16k163840.2codeConcise code assistant
Analystllama3.1:8b-16k81920.3search,calcData analyst
Minimalllama3.1:8b-16k40960.5noneAs few words as possible

Observability Dashboard

Real-time performance telemetry including:

Capture Tools

Output Templates

One-click templates for structured content: Weekly Recap, Meeting Summary, Script Draft, Debug Report.

Tools & Commands Reference

The right panel lists all available commands organized into categories:

Quick Prompts
droid, note, calc, search, summarize, rewrite, translate, explain
OpenClaw Core
connect, disconnect, heartbeat, status, sessions, presence, approve, deny
Chat Ops
send, abort, retry, history, clear, export
Voice & Media
record, transcribe, tts, playback, scrub
Signal / Discord
sig.send, sig.recv, sig.contacts, disc.send, disc.react, disc.search
Archive & Files
archive.new, archive.save, archive.open, journal, ingest
05

Whim.m — Mobile App

Whim.m v3.4 is a full-featured mobile companion app served as a native APK or Progressive Web App (PWA) from either the desktop Whim app or a standalone Python server. It provides voice recording, AI chat (via Ollama proxy), wake word voice commands, a cross-device file library, and inter-device messaging — all organized into five dedicated bottom navigation tabs: REC, LIBRARY, CHAT, WAKE, and DEVICES. A persistent "Listening for Hey Whim" banner runs across the top of every tab, giving always-on wake word access regardless of which tab is active. The app uses a hybrid connection strategy: VPS tunnel by default with Tailscale as an opt-in fallback, switchable from a dropdown in the mobile UI or from the desktop Control Panel.

v3.4.4 — Five-Tab Navigation

v3.4.4 Patch (April 2026)
  • White screen fix — Leaflet JS/CSS tags made non-blocking (async script, media="print" onload stylesheet) to prevent render-blocking on slow or offline internet connections. Previously caused a blank white screen on the Lenovo tablet when the CDN was unreachable.
  • GeoF map retrygeofInitMap() now retries up to 10 times (5 seconds) while Leaflet loads asynchronously, instead of silently failing.
  • Service Worker cache bump — Cache version updated to whim-v3.4.4-fire to force stale page flush on all connected devices.

Lenovo Tablet (TB311FU)

Whim.m REC Tab — Lenovo Tablet
REC tab (Lenovo Tablet) — Whim.m v3.4 with record button, EXPORT TO WHIM, SENT TO WHIM file list, "Listening for Hey Whim" banner, and five-tab bottom navigation (REC, LIBRARY, CHAT, WAKE)
Whim.m LIBRARY Tab — Lenovo Tablet
LIBRARY tab (Lenovo Tablet) — Shared files across devices with "Pick from Gallery / Screenshots" and "Upload any file to library", persistent wake word banner
Whim.m CHAT Tab — Lenovo Tablet
CHAT tab (Lenovo Tablet) — Device Chat for inter-device messaging with "Message all devices..." input, attachment button, and Send
Whim.m WAKE Tab — Lenovo Tablet
WAKE tab (Lenovo Tablet) — Wake Word "Hey Whim" with live waveform visualization, voice profile indicator, VOICE CHAT input, and microphone listening state
Whim.ai Welcome — Lenovo Tablet
Whim.ai welcome screen (Lenovo Tablet) — "Welcome. Ask me anything." with Send button, powered by Llama + OpenClaw
Whim.ai Chat — Lenovo Tablet
Whim.ai chat (Lenovo Tablet) — AI conversation interface with keyboard open, "Ask anything..." prompt, and on-screen keyboard

Samsung Galaxy S22

Whim.m Connecting — S22
Whim.m splash screen (S22) — "Connecting to Whim..." with animated logo and Tailscale endpoint
Whim.m REC Tab — S22
REC tab (S22) — Voice recorder with timer, EXPORT TO WHIM, file list with playback buttons, and status bar indicators
Whim.ai Welcome — S22
Whim.ai welcome screen (S22) — "Welcome. Ask me anything." with Screen Share and location FABs
Whim.ai Chat — S22
Whim.ai live chat (S22) — AI conversation with desktop app query, crab avatar, and detailed response

Features

Wake Word Command Protocol

When a voice command is recognized, Whim.m embeds a whim-cmd JSON block in the AI response to trigger device actions:

whim-cmd {"action":"open_app","params":{"package":"app.organicmaps"}} whim-cmd {"action":"play_music","params":{"query":"song name"}} whim-cmd {"action":"open_maps","params":{}}

Running Whim.m Standalone

python3 ~/vaults/WHIM/mobile/whim_m_v2.1.py --port 8089

Output will show LAN IP and VPS tunnel URL for connecting from your phone.

APK Variants

FileSizeDescription
whim_m_v3.4_phone.apk~61 KBWebView wrapper for phones (Samsung Galaxy S22, Galaxy S9)
whim_m_v3.4_tablet.apk~61 KBWebView wrapper for tablet (Lenovo TB311FU)
06

QR Code System

Whim generates QR codes in two locations to enable instant phone-to-desktop connectivity without typing URLs:

1. TRV Cipher — Upload from Phone Dialog

Clicking "Upload from Phone" in the TRV Cipher tab opens a modal dialog with:

The QR code is generated using the qrcode Python library with error correction level M, rendered as a pixel-perfect canvas grid.

2. Screen Share (SS) Tab — QR Panel

The SS tab has a dedicated QR CODE card in the left column that displays a QR code for the screen share server URL. When the server starts, the QR is generated via qrcode.make() and displayed on a Tkinter canvas, scaled to fit the available space.

How to Use

  1. Start the relevant server (Journal Ingest or Screen Share)
  2. Ensure your phone is on the same WiFi network or connected via the VPS tunnel
  3. Scan the QR code with your phone camera or QR scanner
  4. The browser opens the Whim.m PWA or Screen Share page
Important Note

Use a COLON before the port number, not a period.
Correct: http://192.168.1.100:8088
Wrong: http://192.168.1.100.8088

07

Hybrid Tunnel Networking

Whim uses a hybrid two-mode connection strategy: a reverse SSH tunnel through a public VPS as the always-on primary, with Tailscale retained as an opt-in fallback for situations where rock-solid stability is needed (e.g., WiFi↔cellular handoffs). The mode is switchable from the mobile app or the desktop Control Panel.

Connection Modes

ModeDefaultHow It Works
VPS TunnelYESPhone → VPS:8089 → SSH tunnel → PC:8089. Works everywhere, no VPN client needed on phone.
TailscaleOPT-INPhone → 100.69.17.20:8089 direct via WireGuard mesh. Handles network transitions natively. Requires Tailscale on phone.
Auto-detectOPT-INOn connection, checks if Tailscale IP is reachable; uses it if available, otherwise falls back to VPS tunnel.

Switching Modes

Auto-Reconnect with Exponential Backoff

When any connection drops, the mobile client automatically retries:

Tailscale Device IPs

DeviceTailscale IPLAN IP
PC (carraramint)100.69.17.20192.168.1.231
Samsung Galaxy S9100.97.96.1192.168.1.198
Samsung Galaxy S22100.77.59.2
Lenovo TB311FU (Tablet)100.64.255.124192.168.1.112

How It Works

VPS MODE: [Phone] → [VPS: 104.207.140.242:8089] ← SSH tunnel ← [PC:8089] TAILSCALE MODE: [Phone] → [100.69.17.20:8089] → [PC:8089] (direct WireGuard) AUTO MODE: Tries Tailscale first, falls back to VPS if unreachable

VPS Tunnel (default): The CARRARA desktop opens an outbound SSH connection to a public VPS. The VPS accepts inbound connections from mobile devices and forwards them through the tunnel back to the desktop. No ports need to be opened on the home router.

Tailscale (fallback): When enabled, phones connect directly to the PC's Tailscale IP (100.69.17.20) via WireGuard mesh. This is more stable during WiFi↔cellular transitions because Tailscale handles NAT traversal and connection migration natively.

Infrastructure

ItemValue
VPS104.207.140.242 (Vultr)
Tunnel port8089
Servicewhim-tunnel.service (systemd, starts on boot)
Toolautossh (auto-reconnects on failure)
AuthSSH key only (~/.ssh/id_ed25519), passwords disabled
Firewallufw: ports 22 (SSH) + 8089 (tunnel)
sshd configGatewayPorts yes

Tunnel Service

The tunnel runs as a persistent systemd service on CARRARA:

# Service file: /etc/systemd/system/whim-tunnel.service ExecStart=/usr/bin/autossh -M 0 -N -R 8089:localhost:8089 root@104.207.140.242 \ -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" # Check status: sudo systemctl status whim-tunnel.service

Desktop Status Indicators

The Whim Terminal header bar displays two auto-updating status dots that poll every 10 seconds:

IndicatorGreenRed/Grey
Tunnelwhim-tunnel.service active AND VPS:8089 reachableService down or VPS unreachable
WhimWhim.m server responding on localhost:8089Server not running
TailscaleTailscale daemon running (BackendState: Running)Tailscale stopped or not installed
OllamaOllama responding on localhost:11434Ollama not running

System Tray Status

Whim also displays a system tray icon with three states:

StateIcon ColorTray Tooltip
Tunnel downGreyTunnel: Down | Whim: Offline
Tunnel up, Whim unreachableYellowTunnel: Connected | Whim: Offline
Both connectedGreenTunnel: Connected | Whim: Online

Mobile Health Bar

The Whim.m mobile app health bar shows five indicators: tunnel, server, mic, ollama, and TS (Tailscale). The tunnel dot turns green when the phone can reach the Whim server through the VPS, confirming end-to-end tunnel connectivity. The TS dot turns green when Tailscale is running on the PC.

A connection mode dropdown in the top-right corner allows switching between VPS Tunnel, Tailscale, and Auto-detect modes. When disconnected, a pulsing red banner appears: "Connection lost — reconnecting..." with automatic exponential backoff retries.

Mobile Access via Tunnel

When the tunnel is active, the Whim.m standalone server prints the VPS URL alongside the LAN IP:

VPS Tunnel : http://104.207.140.242:8089 LAN IP : 192.168.1.231 Listening on : 0.0.0.0:8089 Open on phone : http://192.168.1.231:8089 Via VPS tunnel: http://104.207.140.242:8089

Troubleshooting

08

LLMs & AI Stack

Whim uses a fully local AI inference stack powered by Ollama. All models run on the CARRARA machine's GPU with no external API calls.

Models in Use

ModelRoleContextNotes
DeepSeek R1:32B Primary agent model Varies Default model for OpenClaw gateway agents. Reasoning-optimized with chain-of-thought.
Llama 3.1:8B-16K Fallback / Whim.AI default 16384 Used for the Whim.AI console and mobile Whim.m chat. Fast inference, 16K context window.

Ollama Configuration

{ "models": { "mode": "merge", "providers": { "ollama": { "baseUrl": "http://127.0.0.1:11434", "api": "ollama" } } }, "agents": { "defaults": { "model": { "primary": "ollama/deepseek-r1:32b", "fallbacks": ["ollama/llama3.1:8b-16k"] } } } }

AI Endpoints

Health Monitoring

Both desktop and mobile clients poll /health to check Ollama availability. The health endpoint returns {"status": "ok", "ollama": true/false} by probing http://localhost:11434/api/tags.

09

Voice & Audio Pipeline

AVR Lab (XTTS Voice Synthesis)

The AVR Lab tab provides text-to-speech synthesis using Coqui XTTS v2 running in a dedicated conda environment (xtts).

TRV Cipher (Hear Me Out)

The TRV Cipher tab is a complete audio transcription workstation:

Audio Flow

Phone Mic Whim.m Record → HTTP upload → ~/Journal TRV Cipher → Whisper → Transcript ODT
10

Voice Engine — Wake Word Tuning

The VOICE ENGINE tab is a dedicated audio diagnostics and wake word calibration environment built for use in noisy environments such as vehicles, outdoor settings, or anywhere ambient noise interferes with "Hey Whim" detection. It provides a real-time spectrogram, signal processing controls, and wake word sensitivity tuning — all in a three-column layout.

Voice Engine Desktop Tab

Whim-Scope (Live Spectrogram)

The top half of the tab displays a real-time frequency heatmap covering the 300 Hz – 8 kHz range, driven by a 512-point Hanning FFT at 16 kHz mono. Key visual features:

Column A: Gain & Noise Floor (Pre-Amp)

ControlRangeDescription
Dynamic Gain0.1x – 5.0xAdjusts input volume before processing. Drop if mic is near a vent to avoid clipping.
Noise Floor Gate-80 to 0 dBSilence threshold. Anything below is ignored, preventing wake word hallucinations from static.
High-Pass FilterToggle (150 Hz cutoff)Cuts engine vibration and road hum. Critical for vehicles. Hotkey: H
Spectral SubtractionToggle + Capture"Capture Noise Profile" learns ambient/keyboard sound and subtracts that frequency profile from mic input.
Automatic Gain ControlToggleAuto-levels gain based on ambient noise. Raises gain at highway speed, lowers at idle. Smooth tracking with -20 dB target.
Parametric EQ (400 Hz)Toggle + depth (-24 to 0 dB)Narrow notch dip at ~400 Hz to reduce cabin reverb "boxiness" that masks the "W" sound in "Whim".

Column B: "Hey Whim" Sensitivity

ControlRangeDescription
Sensitivity Threshold0.0 – 1.0Lower = fewer false starts but must shout. Higher = hears whispers but sneezes may trigger. Hotkey: S
Phonetic Trigger Delay200 – 1500 msHow long the engine waits after "Hey" to hear "Whim." Bump up to ~800 ms for slow speech.
Voice Activity DetectionToggleOnly runs the expensive AI wake-word check when human-like speech patterns are detected. Saves CPU.
Wake Word EngineSelectorChoose: placeholder (energy-based), openWakeWord, or Porcupine. The latter two support custom "Hey Whim" phrase.
Intelligibility BandToggleHighlights 1–3 kHz on the Whim-Scope to visualize the critical voice frequency range.

Column C: Optimization & Hardware

StatValue
Sample Rate16,000 Hz (16 kHz) — optimal for voice; higher wastes CPU, lower loses "s" and "sh" sounds
Bit Depth16-bit PCM Mono
FFT Window512-point Hanning
Freq Range300 Hz – 8,000 Hz
Buffer SizeAdjustable 256 – 4096 frames (80–100 ms standard)

Live readouts include inference latency (ms), buffer frame count, CPU usage, and active audio device name. All settings persist across sessions to ~/.openclaw/voice_engine.json.

Hotkeys

KeyAction
GCycle Gain (0.5 → 1.0 → 2.0 → 5.0)
SCycle Sensitivity (0.3 → 0.5 → 0.7 → 0.9)
HToggle High-Pass Filter on/off

Audio Backend

Uses sounddevice (PortAudio) at 16 kHz mono with float32 samples. The audio callback pipeline processes in order: gain → HPF → parametric EQ → AGC → spectral subtraction → FFT → spectrogram → wake word detection. The wake word function is a placeholder (_ve_detect_wake_word) returning energy-based confidence, ready to swap in openWakeWord or Porcupine for actual custom "Hey Whim" inference.

Vehicle Tip: Keyboard Noise

If mechanical keyboard clacks trigger the wake word, use "Capture Noise Profile" to learn the keyboard's frequency signature, then enable Spectral Subtraction to remove it from the mic input.

11

Persona — Voice Personalities

The PERSONA tab is a voice personality manager that treats coined responses like playlists. Each voice clone (MillyAI, Revy, future voices) gets its own persona profile with a curated set of responses organized by behavioral situation. When Whim needs to respond to a trigger — wake word, command acknowledgment, error, idle chatter — it pulls from that persona's playlist instead of generating a generic response.

Persona Desktop Tab

Three-Column Layout

Behavioral Categories

CategoryColorWhen It Fires
Wake WordGreenImmediately after "Hey Whim" is detected (e.g., "Yeah?")
AcknowledgmentCyanAfter a command is successfully parsed (e.g., "On it.")
MisheardOrangeWhen confidence is below threshold (e.g., "The road's loud. One more time?")
ErrorRedWhen a command fails (e.g., "Can't reach the PC. Tunnel might be down.")
NarrativePurpleDuring table read sessions in AVR Lab (e.g., "Rolling.")
AmbientGreySystem events: boot, reconnect, idle timeout (e.g., "Tunnel's back up.")
CustomBlueUser-defined triggers for future expansion

Confidence-Gated Selection

Each response has a confidence range (e.g., 40–60%). The Voice Engine's wake word confidence score determines which response fires. At 90%+ confidence, wake responses fire. At 40–60%, partial-match misheard responses fire. Below 20%, the strongest "speak up" responses fire. This maps directly to the Confidence Ghost Bar in the Voice Engine tab.

Context-Aware Selection

The context field enables situational awareness. A response tagged "driving" only fires when connected via VPS tunnel (implying mobile/vehicle use). "Morning" fires between 5–10am. "table_read" only fires when AVR Lab is active. Multiple responses matching the same trigger + context are selected randomly to prevent repetition.

Pre-Render Pipeline

Responses are pre-rendered as cached WAV files via the XTTS conda environment (same GPU-accelerated pipeline as AVR Lab). Render All batch-processes every unrendered entry, skipping existing cache. Cached clips play in <100ms instead of waiting 2–5 seconds for live XTTS generation. Cache is stored at ~/voices/personas/[name]/cache/.

Default Persona: MillyAI

Ships with 42 coined responses across all 7 categories: 6 wake word, 8 acknowledgment, 8 misheard, 7 error, 6 narrative, 7 ambient. Ready to render with the MillyAI voice clone.

Why Not Just Prompt the LLM?

Coined responses are deterministic — they fire the same way every time. LLMs drift, get verbose, add qualifiers. The LLM handles open conversation; the persona handles mechanical reflexes. "Hey Whim" → "Yeah?" is not a conversation, it's a reflex. Reflexes should be fast, consistent, and characteristic.

12

Signal & Discord Integration

Signal Messenger

Whim integrates with Signal via signal-cli running as a local HTTP service:

Discord (OpenClaw Bot)

The Discord tab manages the OpenClaw bot (Enoch persona) with full action control:

13

SmartThings IoT Control

The SmartThings tab provides a complete dashboard for Samsung SmartThings device management via the OpenClaw gateway.

SmartThings Desktop Tab
SmartThings Hub
Samsung SmartThings hub hardware (photographed from phone, Feb 21, 2026) -- the physical IoT bridge controlled via the Whim SmartThings tab

Features

14.1

GeoF — Geofence Tracker

The GEOF tab is a geofencing and livestock tracking system designed for hilly terrain (Ozarks). It combines a canvas-based map with real-time collar monitoring via LoRa radio, GPS point-in-polygon fence checking, and ESP32-S3 collar firmware with deep sleep power management. A shared Named Location Manager lets you save multiple sites (with address-to-GPS geocoding via Nominatim), define per-site geofence boundaries (rectangle or square, configurable acreage), and jump between them instantly. Named locations are drawn as orange dashed fences on the map and are shared across GeoF, Doppler, and HAM tabs, as well as with Whim.V.

GeoF Desktop Tab
Not Just for Livestock

GeoF works just as well for the four-legged family members who think the backyard fence is more of a suggestion than a rule. If your dog has mastered the art of the great escape — or simply can't resist chasing squirrels into the neighbor's yard — a lightweight GPS collar with GeoF gives you peace of mind without the drama. You'll get a gentle heads-up the moment your adventurous pup wanders past the boundary, so you can call them back before they make it three blocks down the street. Same LoRa collar, same map, same alerts — just swap "Cow-1" for "Biscuit" and you're set.

Architecture

Phone (GPS Pins) → JSON sync → Whim GeoF Tab ← LoRa Bridge ← LoRa Gateway ← SF12 radio ← ESP32-S3 Collars

Layout

PanelContent
ToolbarSync Pins, Load/Save/Clear Fence, Start/Stop Bridge, Start/Stop Heartbeat
Left (60%)Canvas map with pan, zoom, grid lines, fence polygon, pin markers, and collar positions (color-coded by status)
Right (40%)Collar status treeview, detail panel, and LoRa log

Collar Status Indicators

StatusColorCondition
OKGreenHeartbeat received within 20 minutes and inside fence
STALEYellowNo heartbeat for 20–40 minutes
OFFLINERedNo heartbeat for >40 minutes
ALERTBright RedCollar reported position outside the geofence boundary

Pin Sync & Fence Management

LoRa Bridge Service

The LoRa bridge (services/lora_bridge.py) runs as a subprocess managed from the GeoF tab. It supports three modes:

ModeFlagDescription
Serial--port /dev/ttyUSB0Reads from a hardware LoRa gateway via serial (default 115200 baud)
TCP--tcp 0.0.0.0:9600Accepts collar packets over TCP sockets
Simulated--simulateGenerates synthetic collar data for testing without hardware

The bridge performs ray-casting point-in-polygon geofence checks on every packet. If a collar reports a position outside the fence boundary, the packet is tagged with OUTSIDE_FENCE alert.

LoRa Configuration

ParameterDefaultNote
Frequency915 MHzUS ISM band
Spreading FactorSF12Maximum range for hilly Ozarks terrain. Slower data rate but signals “bend” over ridges.
TX Power20 dBmMaximum allowed for LoRa in US
CRCEnabledError detection on all packets

ESP32-S3 Collar Firmware

Each livestock collar runs on an ESP32-S3 with GPS, LoRa radio (SX1276), and IMU accelerometer. The firmware (Collar/firmware/main.cpp) uses a deep sleep cycle:

Packet Format

Collars transmit CSV over LoRa: COLLAR_ID,LAT,LON,BATTERY,NAME[,OUTSIDE_FENCE]

C001,36.350123,-93.200456,87,Cow-1 C002,36.341000,-93.195000,62,Cow-2,OUTSIDE_FENCE

File Structure

PathPurpose
services/lora_bridge.pyLoRa bridge service (serial/TCP/simulated)
Collar/firmware/main.cppESP32-S3 Arduino firmware
Collar/config/fence.jsonDefault fence config (flash to ESP32 SPIFFS)
~/.openclaw/fence_config.jsonActive fence config (desktop)
~/.openclaw/geof_pins.jsonCached pin data from mobile sync

Heartbeat Monitor

The heartbeat monitor runs as a background timer in the Whim Terminal. Every 20 minutes it scans all registered collars and flags any that have gone silent as STALE or OFFLINE. Alerts appear in the LoRa Log panel and collar table rows change color accordingly.

Ozarks Terrain Tip

SF12 (Spreading Factor 12) is critical for hilly terrain. It trades data rate for range, significantly increasing the chance of a signal clearing ridgelines between the collar and your antenna mast. Expect 2–5 km line-of-sight range, or 500m–1.5 km over hills with SF12 + 20 dBm.

14

Doppler — Weather Radar & NWR Audio

The DOPPLER tab is a full weather radar and situational awareness station, designed for monitoring storm activity, wind conditions, and precipitation relative to your assigned GPS coordinates. It combines text-based weather data from Open-Meteo with a visual NWS NEXRAD radar overlay on an embedded tile map, plus live NOAA Weather Radio (NWR) audio. A Location selector lets you jump to any saved named location (shared with GeoF and HAM tabs), and a NWS Radar station dropdown provides one-click access to 7 regional stations: KSGF (Springfield), KSRX (Ozarks), KEAX (Kansas City/Columbia), KLSX (St. Louis), KILX (Quincy/Lincoln), and KLZK (Little Rock). Named location fences are drawn on the radar map overlay.

Doppler Desktop Tab

Layout (Top to Bottom)

TierContent
HeaderDOPPLER FEED title, GPS coordinate input (LAT/LON), FETCH button, "Pet Alert → S22" checkbox, last-update timestamp.
Location BarNamed location dropdown (jump to saved sites), MANAGE button (open Location Manager), NWS Radar station selector (KSGF, KSRX, KEAX, KLSX, KILX, KLZK).
Current ConditionsCompact horizontal strip: WMO weather icon, temperature (°F), description, anemometer (wind speed + bearing), humidity, assigned GPS.
Radar MapLargest area — embedded OSM tile map (same engine as GeoF/HAM) with transparent NWS NEXRAD base reflectivity overlay, crosshair at assigned GPS, [+]/[–] zoom, scroll-wheel zoom, right-click pan, CENTER HOME, EMBED/DETACH MAP toggle.
NWR AudioLIVE NWR AUDIO strip: source selector (Web Stream / RTL-SDR), configurable URL or frequency, LISTEN / STOP buttons, online/offline status indicator.
7-Day ForecastCompressed high-contrast tiles: date, WMO icon, description, high/low temps, precipitation probability.
Feed LogTimestamped log of all fetches, radar updates, NWR events, and alert pushes.

Data Sources

SourceAPIData
Open-Meteoapi.open-meteo.com/v1/forecastTemperature, wind, humidity, weather code, 7-day forecast. Refreshes every 15 minutes.
NWS NEXRAD (IEM)mesonet.agron.iastate.edu WMSTransparent radar reflectivity PNG overlay (green/yellow/red precipitation). Refreshes every 5 minutes.
OSM Tilestile.openstreetmap.orgBase map tiles, cached locally at ~/.openclaw/map_tiles/.

NWR Audio Sources

ModeToolDefaultNotes
Web Streamffplayhttps://wxradio.org/MO-Shelbina-WXL70Internet-based NWR relay. ~30–60s behind real-time.
RTL-SDRrtl_fm + ffplay162.400MDirect radio reception from local NWR transmitter. Real-time, works offline. Requires RTL-SDR dongle (~$30).

Severe Weather Alerts

When the WMO weather code indicates severe conditions (freezing rain, heavy snow, thunderstorms, hail), the tab displays a red alert banner and automatically pushes a notification to the Galaxy S22 via the Whim.m /device/chat endpoint. Alerts are cooldown-limited to one per weather code per 30 minutes.

Cross-Platform Notes

FeatureLinuxWindows 11macOS
Tile MapFull (TileMapRenderer)Full (TileMapRenderer)Full (TileMapRenderer)
Radar OverlayFull (urllib + PIL)Full (urllib + PIL)Full (urllib + PIL)
NWR Web Streamffplayffplay (add to PATH)ffplay (via Homebrew)
NWR RTL-SDRrtl_fm (native)rtl_fm (Zadig driver)rtl_fm (via Homebrew)
14.2

HAM — APRS Monitor

The HAM tab is a real-time APRS (Automatic Packet Reporting System) station monitor that integrates with Direwolf, a software-defined TNC. It displays received APRS packets on an embedded tile map, tracks station positions relative to a configurable base station, and logs raw packet data.

HAM Desktop Tab

Layout

AreaContent
Left ColumnSub-tabbed controls (LINK / BASE / SEARCH): Direwolf connection settings (Simulate/KISS/AGWPE), host/port, callsign, base station GPS, radius filter, search-by-callsign.
Station ListTreeview table: Callsign, Lat, Lon, Distance (mi), Comment, Last Heard. Color-coded by age (green/yellow/red).
APRS MapEmbedded OSM tile map with station markers, base station icon, [+]/[–] zoom, scroll-wheel, right-click pan, EMBED/DETACH MAP toggle. Same TileMapRenderer as GeoF and Doppler.
Raw PacketsTimestamped raw APRS packet log with color-coded tags (alert, ok, info, packet).

Direwolf Connection Modes

ModeDescription
SimulateGenerates synthetic APRS packets for testing without radio hardware. Good for verifying map rendering and UI layout.
KISSConnects to Direwolf via KISS TCP protocol on the specified host/port. Standard TNC interface.
AGWPEConnects via AGWPE protocol. Compatible with other TNC software that speaks AGWPE.

Station Aging

StateThresholdMap Color
Active< 10 minutesGreen
Stale10–30 minutesYellow
Offline> 30 minutesRed

Cross-Platform Notes

FeatureLinuxWindows 11macOS
DirewolfNative package (apt install direwolf)Windows build from GitHubHomebrew or build from source
Tile MapFull (TileMapRenderer)Full (TileMapRenderer)Full (TileMapRenderer)
KISS/AGWPETCP socket (cross-platform)TCP socket (cross-platform)TCP socket (cross-platform)
15

NodeFlow — Visual Node Editor

The NodeFlow tab is a visual node-based flow editor that maps the real-time data pipeline inside Whim. It renders each active component — User Input, Whim Brain (LLM), Opus Droid, OpenClaw Telemetry, and Wisp/GPS — as draggable nodes on an infinite canvas, with dashed edges showing how data flows between them.

NodeFlow Desktop Tab
NodeFlow — Full Graph with Wisp/GPS Node
Full node graph showing all five default nodes connected with dashed edge lines and the Wisp/GPS endpoint visible
NodeFlow — Node Inspector Detail
Selecting the Wisp/GPS node populates the Node Inspector with type, position, description, and upstream connections

Architecture

User Input Whim Brain (LLM) Opus Droid Wisp / GPS
Whim Brain (LLM) OpenClaw Telemetry Wisp / GPS

Default Nodes

NodeTypeDescription
User InputinputPrompt and command entry point for the pipeline
Whim Brain (LLM)brainLocal Ollama model handling reasoning, tool calls, and token streaming
Opus DroiddroidCode execution, syntax analysis, and active path highlighting
OpenClaw TelemetryopenclawHardware telemetry: RSSI, battery level, heartbeat status
Wisp / GPSwispGPS coordinates, geofence status, and LoRa packet data

Layout

PanelContent
HeaderTitle, Refresh / Auto-Poll / Reset View buttons, idle/active status indicator
Canvas (left, 75%)Infinite dark canvas with grid lines, color-coded draggable nodes, dashed edge connections, zoom (scroll wheel), and pan (right-click drag)
Node Inspector (right top)Detail card showing the selected node’s label, type, metadata, and connection list
Flow Log (right bottom)Timestamped event log with color-coded severity (info, ok, warn, err)

Interaction

Node Color Scheme

TypeBorder ColorPurpose
brainPurpleLLM reasoning engine
droidGreenCode execution agents
openclawOrangeHardware telemetry sources
wispBlueGPS and geofence endpoints
inputTanUser entry points
16

Archive Tab Editor

The Archive tab is a full-featured document editor that saves files to ~/ARCHIVE. All documents created in Whim are stored in this directory.

Archive Desktop Tab

Document Actions

Formatting Toolbar

File Browser

The right column shows all files in ~/ARCHIVE with refresh, open, and double-click-to-load. A changelog panel at the bottom tracks all document actions with timestamps.

Document Header Format

--- Archive Entry --- Date: 2026-03-15 Notes: User notes here --- (document content)
17

Screen Share System

The SS (Screen Share) tab enables bidirectional visual communication between the desktop and mobile devices.

Screen Share / Live Desktop Tab

Architecture

Layout

ColumnContent
LeftSettings (FPS, Quality, Camera selection) + QR Code for phone connection
CenterPhone Camera Feed canvas (receives phone frames)
RightDesktop Preview canvas (shows what the phone sees)

Settings

Endpoints

PathMethodDescription
/GETMobile HTML page with camera capture + desktop stream viewer
/desktop_streamGETMJPEG stream of desktop screen
/phone_streamGETMJPEG relay of phone camera frames
/phone_framePOSTAccepts JPEG frame from phone camera
/ss_healthGETJSON health check with capture status
18

ADB Portal & Emulator

The Whim ADB Portal is a standalone GUI (whim_adb_portal.py) for managing APK installs and Android emulators, matching the Whim dark theme.

Device Management

Emulator Profiles

ProfileResolutionDPIRAMAPI Level
Samsung Galaxy S91440 x 29605704096 MB30 (Android 11)
Samsung Galaxy S221080 x 23404258192 MB33 (Android 13)

SDK Management

The portal can download and set up the full Android SDK command-line tools (~2 GB), accept licenses, install platform-tools, emulator, and system images, create AVDs with custom device profiles, and launch emulators with GPU acceleration.

19

OpenClaw Gateway

The OpenClaw Gateway is the central command bus that connects the Whim desktop client to the AI agent infrastructure via WebSocket.

Protocol

Connection Flow

  1. Connect to WebSocket URL (default: ws://127.0.0.1:18789)
  2. Receive challenge with nonce and timestamp
  3. Send connect request with protocol version, client info, auth token, and device signature
  4. Enter bidirectional message loop (incoming events displayed in Events/Debug tab)

Sessions & Presence

The Sessions tab manages active OpenClaw sessions with auto-refresh, presets, crash recovery, and a Notion integration for session notes. The Presence tab shows real-time online status with heartbeat pings to each connected component.

Events/Debug Log

The Events/Debug tab provides a structured, filterable event log with:

20

Settings Tab

The SETTINGS tab provides a three-column configuration panel for managing API keys, LLM models, and application preferences. All settings persist to ~/.openclaw/whim_settings.json.

Settings Desktop Tab

Column 1: API Keys & Endpoints

FieldDescription
Ollama URLBase URL for the local Ollama LLM server (default: http://localhost:11434)
OpenAI API KeyAPI key for OpenAI cloud fallback (masked input, stored locally in whim_settings.json)
Anthropic KeyAPI key for Anthropic (Claude) cloud fallback (masked input, stored locally)
DeepSeek KeyAPI key for DeepSeek cloud fallback (masked input, stored locally)
SmartThingsPersonal access token for Samsung SmartThings API
Notion TokenIntegration token for Notion session tracking

Column 2: Model Management

Manages Ollama models directly from the Whim Terminal:

Column 3: App Preferences

Unified Model Router (v3.5.0)

The Unified Model Router (whim_model_router.py) provides automatic failover from local Ollama to cloud LLM providers. When a user sends a prompt, the router:

  1. Checks if local Ollama is reachable at the configured URL
  2. If reachable, routes the prompt to Ollama with full tool-call support (unchanged behavior)
  3. If unreachable and Sovereign Mode is OFF, attempts cloud providers in priority order: DeepSeek → OpenAI → Anthropic
  4. If Sovereign Mode is ON, returns an error message instead of routing to cloud

Cloud keys are configured in Settings > API Keys & Endpoints. Only providers with a saved key are attempted. The status bar shows which backend served the response (e.g. “Routed via deepseek”). Cloud fallback uses streaming responses but does not support Whim tool calls — those require local Ollama.

A standalone Node Manager window (model_manager.py) is also available for dedicated model management with streaming pull progress bars, a three-provider cloud key vault, and a Sovereign Mode toggle.

LLM Model Dropdown (Header Bar)

A global model selector in the header bar lets you switch between local LLMs at any time without opening Settings. It shows all models available in Ollama (fetched on startup and via the refresh button). Selecting a model immediately updates Whim.AI's active model for the next prompt. Currently available:

Theme System

Whim Terminal supports three visual themes selectable from App Preferences. Themes apply immediately on save — no restart required. All colors (backgrounds, cards, buttons, text, accents, toggles, borders) update in-place via a recursive widget recolor that maps each widget's current color to its semantic role and replaces it with the new palette.

ThemeBackgroundAccentCharacter
Dark (Whim)#141210 warm charcoal#e8793a amberDefault. Warm tones, high contrast orange accents
Midnight#0b0e17 deep navy#4a7aff electric blueCool-toned, blue accent, suited for night sessions
Solarized Dark#002b36 teal-black#b58900 goldClassic Solarized palette with warm gold accents

Tool Store Sub-Tab

The Tool Store organizes AI tool capabilities into bundles displayed as a card grid. Each bundle card shows a custom icon, risk badge, active tool count, and per-tool toggle switches. Toggle switches are anti-aliased (4× supersampled PIL rendering). Per-bundle [all] / [none] controls update only that card's toggles and status in-place without rebuilding the grid.

Email Sub-Tab

A front-end GUI for managing email accounts without terminal commands. Configures Himalaya (IMAP/SMTP CLI) directly from the Settings panel.

User Guide Sub-Tab

A scrollable reference for all Tool Store bundles with per-bundle commentary. Each bundle section shows its icon (PNG from ~/settings/), description, risk level, and all tools with contextual Unicode icons. Two authorship tiers for notes:

A General Notes field sits at the top for cross-cutting observations. All comment fields auto-resize to show full content without internal scrolling. Ctrl+S quick-save; data persists to ~/.openclaw/user_guide_comments.json.

21

BRAIN — GBrain Knowledge Engine

The BRAIN tab provides a persistent AI memory system powered by GBrain (v0.28.9). GBrain stores knowledge in a local PGLite database with pgvector for hybrid search (keyword + vector + reciprocal rank fusion). The brain compounds automatically — every interaction can add knowledge, and the system gets smarter over time.

Header: Brain Health Indicator

A live health dot appears in the main header bar alongside Devices and Ecosystem. It polls GBrain every 30 seconds and shows:

Clicking the indicator jumps directly to the BRAIN tab.

Global Shortcut: Ctrl+Shift+G

Press Ctrl+Shift+G from any tab to open a quick brain query dialog. Enter a natural language question, hit OK, and results appear in the BRAIN tab’s Search & Query view.

Sub-Tab: Search & Query

A smart search bar supporting natural language queries (e.g. “show me everything about my S22 phone”). Result type filters narrow results:

Action buttons: Hybrid Query, Keyword Search, List Pages, Get Page (by slug), and Backlinks (show pages linking to a slug). The → Whim.ai button sends results to the AI chat and auto-triggers an analysis response.

Sub-Tab: Timeline

Chronological view of brain events with date range selectors. Quick-select buttons: Today, This Week, This Month. Ideal for reviewing what happened across Journal, Voice, and GeoF data.

Sub-Tab: Entity Explorer

Browse entities by type: People, Companies, Devices, Projects, Locations, Concepts. Left panel shows an entity list; right panel splits into two views:

Sub-Tab: Operations

Three-column layout for brain management:

Droid Write Permissions

“Allow Droids to Write to Brain” defaults to OFF. Enabling it triggers a confirmation dialog listing exactly what droids can do: create/update pages, add entity links and backlinks, write timeline entries, and run enrichment pipelines. When enabled, two automated features activate:

Send to Brain (from Whim.ai)

A Send to Brain button in the Whim.AI toolbar saves the last AI response (and its prompt) as a brain page. A dialog asks for the page slug (e.g. notes/my-topic). The page is created with frontmatter, tags, and a timestamp. The Brain Health indicator refreshes immediately after save.

Slash Commands

CommandDescription
/gbrain query <question>Hybrid search with synthesis
/gbrain search <term>Keyword search
/gbrain statusShow brain stats and health

Recent Activity Feed

A bottom panel in the BRAIN tab shows the latest brain page changes for situational awareness. Auto-refreshes after imports, syncs, and dream cycles.

Installation

GBrain is installed via git clone + bun install && bun link at ~/gbrain. Brain data lives at ~/.gbrain/brain.pglite (embedded Postgres 17.5, no server needed). A compiled reference page (systems/whim-terminal-ecosystem) documents the full Whim architecture and is searchable from day one.

22

Email — Himalaya Integration

The EMAIL tab integrates Himalaya, a CLI email client, directly into Whim Terminal and Whim.ai chat. IMAP/SMTP configuration is managed in the Settings > Email sub-tab.

Chat Commands

CommandDescription
/email list [count]List inbox message headers
/email read <id>Read a specific email by message ID
/email search <query>Search across the mailbox

Email content is never fabricated. If the Himalaya tool is unavailable, Whim.ai tells the user to run the slash commands directly.

23

Whim Dictionary & Context System

The Whim Dictionary (whim_dictionary.py) is a 43-term glossary of the entire Whim ecosystem that gets injected into every Whim.ai system prompt. This gives the local LLM contextual awareness of all subsystems, terminology, and project structure.

What It Contains

How It Works

On every Whim.ai inference call, the dictionary context block is appended to the system prompt after the base prompt and playback/agent logic prompts. The AI sees a “Whim Ecosystem Context” section listing key terms, all local GitHub repos with paths, and GBrain integration commands. This means the AI can answer questions like “where is the Whim repo?” or “what is OpenFang?” without hallucinating.

24

Audio Capture Tool

A floating always-on-top tool window for capturing system audio output as lightweight audio files — no video, just audio. Designed for the use case of turning YouTube videos, podcasts, or any playing audio into portable files you can listen to in the car.

How It Works

Clicking the 🎧 Capture button in the header bar opens a compact floating window that stays on top of all other windows. It captures audio from PipeWire/PulseAudio monitor sources — virtual loopback devices that tap into whatever audio is playing through your speakers or HDMI output. No screen recording, no video — just the audio stream, encoded to a small file.

Controls

ControlDescription
SourceDropdown listing all PipeWire monitor sources. Auto-selects HDMI if available. Options include USB speakers, headphones, S/PDIF, and HDMI.
FormatOutput codec: MP3 (default, car-compatible), Opus, OGG Vorbis, M4A (AAC), WAV (lossless)
Bitrate64k – 320k. Default 128k gives ~1 MB/min for MP3 (good for podcasts/speech).
Record / StopStart/stop capture. Header button flashes red while recording.
VU MeterLive level indicator (green/yellow/red).
TimerRunning elapsed time (HH:MM:SS) and live file size.
Name / RenameInline rename of the output file after stopping.

Output

Files save to ~/Journal/audio_captures/ with timestamps (e.g. capture_20260317_143022.mp3). The folder link in the tool opens the directory in the file manager. At 128k MP3, a 1-hour podcast capture is roughly 60 MB.

Typical Workflow

  1. Start playing a YouTube video or podcast in the browser
  2. Click 🎧 Capture in the Whim header bar
  3. Select the HDMI or speaker monitor source
  4. Click Record — the tool captures audio while you watch/listen
  5. Click Stop when done — rename the file to something meaningful
  6. Transfer the MP3 to your phone (via Whim.m Library, ADB, or file share) for car listening
Audio Backend

Uses ffmpeg -f pulse to read from PipeWire/PulseAudio monitor sources. The monitor sources are virtual loopback devices created automatically by PipeWire for every output sink. No additional driver or loopback configuration is needed.

25

Technical Stack & Configuration

Runtime Environment

ComponentTechnology
OSLinux Mint (CARRARA machine)
Python3.12+ (system) + conda env: xtts (3.10+)
GUI FrameworkTkinter with ttk (Azure dark theme)
AI RuntimeOllama (local GPU inference)
Voice SynthesisCoqui XTTS v2 (conda env: xtts)
TranscriptionOpenAI Whisper
NetworkingReverse SSH tunnel via VPS (autossh + systemd)
Messagingsignal-cli (Signal) + discord.py/nextcord (Discord)
IoTSamsung SmartThings via OpenClaw gateway
AndroidADB + Android SDK command-line tools
Screen Capturemss (Python)
Image ProcessingPillow (PIL)
QR Codesqrcode (Python library)
System Traypystray
Document Exportodf (OpenDocument Format) + LibreOffice Writer
Audio ProcessingFFmpeg, NumPy, wave

Key Directories

PathPurpose
~/vaults/WHIM/Main Whim project vault
~/vaults/WHIM/app/Desktop application source code
~/vaults/WHIM/mobile/Mobile app, APKs, build artifacts
~/vaults/WHIM/assets/Fonts, icons, logos
~/.openclaw/OpenClaw config, Whim icon, sessions store
~/.openclaw/WhimUI/Custom fonts and icon packs (Papirus, Mint-Y)
~/Journal/Voice recordings and notes uploaded from phone
~/ARCHIVE/Documents created in the Archive Tab Editor
~/TRANSCRIPT/Exported ODT transcripts
~/TableReads/XTTS voice synthesis output
~/voices/Speaker reference files for XTTS
~/Incoming/fire.pngFlame logo used in the header and taskbar

Configuration File

The main configuration lives at ~/.openclaw/openclaw.json and controls:

Singleton Instance

Whim enforces a single instance by binding TCP port 48891. If a second instance is launched, it sends a SHOW signal to the existing instance, which restores and focuses its window.

26

Desktop Environment Customizations

The CARRARA desktop runs Linux Mint with Cinnamon. The following customizations have been applied to the desktop environment for a cleaner workflow and ergonomic comfort.

Start Menu Cleanup

All non-pinned application entries have been removed from the start menu. Only taskbar-pinned favorites remain accessible via the start menu:

Application.desktop IDStatus
Firefoxfirefox.desktopPinned
Software Managermintinstall.desktopPinned
System Settingscinnamon-settings.desktopPinned
Terminalorg.gnome.Terminal.desktopPinned
Files (Nemo)nemo.desktopPinned
Google Chromegoogle-chrome.desktopPinned

Removed .desktop overrides are backed up at ~/.local/share/applications/_backup_removed/. Custom app entries removed include: OpenClaw, Whim ADB Portal, Control Panel, Droid, Revy Acousto, and OnlineChat webapp. System app overrides (Discord, Signal, Audacity, LibreOffice, etc.) were also removed, reverting them to default system entries.

Additionally, all Preferences and Administration category entries (65 items) have been hidden from the start menu via NoDisplay=true overrides. This includes all Cinnamon settings sub-panels (Backgrounds, Themes, Keyboard, Display, etc.), system tools (Firewall, Timeshift, Driver Manager, Update Manager, etc.), and utility launchers. The main System Settings app remains accessible from the pinned taskbar for when settings changes are needed.

ALT Key Shortcuts Disabled

All Cinnamon keyboard shortcuts that use the ALT key have been disabled for ergonomic reasons (wrist rest positioning). This includes:

Window Management (removed)

ActionPrevious Shortcut
Switch windowsAlt+Tab
Switch windows backwardShift+Alt+Tab
Close windowAlt+F4
Toggle maximizedAlt+F10
UnmaximizeAlt+F5
Window menuAlt+Space
Move windowAlt+F7
Resize windowAlt+F8
Run dialogAlt+F2
Switch groupAlt+Above_Tab

Workspace Navigation (removed)

ActionPrevious Shortcut
Switch workspace up/down/left/rightCtrl+Alt+Arrow
Move window to workspaceCtrl+Shift+Alt+Arrow
Switch panelsCtrl+Alt+Tab

System & Media (removed)

ActionPrevious ShortcutRetained Non-ALT Binding
LogoutCtrl+Alt+Delete
TerminalCtrl+Alt+T
Lock screenCtrl+Alt+LXF86ScreenSaver
ShutdownCtrl+Alt+EndXF86PowerOff
Restart CinnamonCtrl+Alt+Escape
Toggle recordingCtrl+Shift+Alt+R
Window screenshotAlt+Print
Magnifier zoomAlt+Super+=/−/0
Restoring ALT Shortcuts

To restore all Cinnamon ALT shortcuts to defaults, run:
gsettings reset-recursively org.cinnamon.desktop.keybindings

27

Windows 11 Support

Whim Terminal runs natively on Windows 11 via a platform compatibility layer that abstracts OS-specific calls (paths, services, audio). The same core codebase powers both the Linux and Windows builds.

Prerequisites

SoftwareRequiredInstall From
Python 3.10+Requiredpython.org (check "Add to PATH")
Ollama for WindowsRequiredollama.com
TailscaleOptionaltailscale.com
ffmpegOptionalffmpeg.org (add to PATH)
Signal DesktopOptionalsignal.org

Quick Start

Option A — PowerShell Setup (Recommended)
git clone https://github.com/scarter84/Whim.git cd Whim Set-ExecutionPolicy -Scope CurrentUser RemoteSigned .\scripts\setup_windows.ps1

This creates a virtual environment, installs dependencies, sets up data directories, and creates a desktop shortcut.

Option B — Batch Setup
git clone https://github.com/scarter84/Whim.git cd Whim scripts\setup_windows.bat
Launch
scripts\launch_whim.bat

Or use the desktop shortcut created by the PowerShell setup.

Windows Path Mapping

Whim stores data in Windows-native locations:

Linux PathWindows Path
~/.openclaw/%APPDATA%\OpenClaw\
~/Journal/Documents\Whim\Journal\
~/ARCHIVE/Documents\Whim\ARCHIVE\
~/TRANSCRIPT/Documents\Whim\TRANSCRIPT\
~/TableReads/Documents\Whim\TableReads\
~/voices/Documents\Whim\voices\
~/Incoming/Documents\Whim\Incoming\

Platform Differences

FeatureLinuxWindows 11
File openerxdg-openos.startfile()
Service checksystemctl is-activesc query
Audio sourcespactl (PulseAudio/PipeWire)sounddevice (Windows Audio)
SSH Tunnelsystemd whim-tunnel.serviceManual SSH or Tailscale direct
DPI scalingSystem nativePer-monitor DPI aware (auto-set)
Control PanelCustom Cinnamon panelUse Windows Settings directly
TTS EngineXTTS via conda envXTTS via pip or system Python

Architecture on Windows

File Structure
app/ openclaw_tkui.py ← Main terminal (cross-platform) whim_windows.py ← Windows 11 entry point platform_compat.py ← OS abstraction layer requirements_windows.txt scripts/ setup_windows.bat ← Batch setup setup_windows.ps1 ← PowerShell setup launch_whim.bat ← Quick launcher

The platform_compat.py module detects the OS at import time and provides correct path defaults, service checkers, audio source enumeration, and file-open commands. The whim_windows.py launcher sets DPI awareness, verifies Ollama, patches path constants, then loads the main app.

Connectivity on Windows

On Windows, the preferred connection method to mobile devices is Tailscale (direct mesh VPN). The Linux systemd SSH tunnel is not available natively on Windows, but Tailscale provides the same end-to-end encrypted connectivity with zero configuration.

Alternatively, use Windows OpenSSH to create a manual tunnel:

ssh -N -R 8089:localhost:8089 user@YOUR_VPS_IP

New Tabs on Windows

The DOPPLER and HAM tabs are fully functional on Windows 11. The tile map engine, Open-Meteo weather API, and NWS radar overlay work identically. For NWR audio, ensure ffplay (from FFmpeg) is on your PATH. For RTL-SDR support, install the Zadig USB driver and rtl_fm from the librtlsdr project. Direwolf for HAM/APRS is available as a Windows build from GitHub.

Known Limitations

27.1

iOS Support (Tahoe)

Whim.m is accessible on iOS devices via Safari or Chrome as a Progressive Web App (PWA). The iOS variant, codenamed Tahoe, connects to the same Whim server backend and provides the same five-tab experience (REC, LIBRARY, CHAT, WAKE, DEVICES) with platform-specific adaptations for Apple hardware.

Prerequisites

SoftwareRequiredNotes
iOS 16+RequiredPWA support requires iOS 16 or later
Safari / ChromeRequiredSafari recommended for best PWA integration (Add to Home Screen)
Tailscale for iOSOptionalRequired for direct Tailscale mesh connection mode

Configuration

SettingValue
ConnectionVPS Tunnel (default) or Tailscale (requires Tailscale iOS app)
URLhttp://104.207.140.242:8089 (VPS) or http://100.69.17.20:8089 (Tailscale)
PWA InstallSafari → Share → Add to Home Screen
Audio RecordingWebRTC MediaRecorder API (Safari 14.5+)
Wake WordRequires microphone permission grant; iOS may suspend background audio
NotificationsWeb Push supported on iOS 16.4+ (requires PWA mode)

Platform Differences — iOS vs Android

FeatureAndroid (APK)iOS (PWA / Tahoe)
App DeliveryNative APK via ADB sideloadPWA via Safari "Add to Home Screen"
WebView EngineChromium (Android WebView)WebKit (Safari)
Audio FormatWebM/Opus (native)MP4/AAC (Safari MediaRecorder default)
Background AudioSupported (WebView keeps running)Limited — iOS may suspend after ~30s in background
Wake WordAlways-on via WebViewActive only while app is in foreground
File UploadFull filesystem access via intentPhoto Library + Files app picker
Camera AccessDirect WebRTC + Screen ShareWebRTC supported; no Screen Share capture
NotificationFirebase / localWeb Push (iOS 16.4+ in PWA mode only)
Install Size~61 KB APK~0 KB (bookmark/PWA shell)
TailscaleTailscale Android appTailscale iOS app (App Store)

Known Limitations on iOS

27.2

macOS Support

Whim Terminal runs on macOS (Intel and Apple Silicon) using the same cross-platform platform_compat.py abstraction layer. The core codebase, including all 16 tabs, is identical to the Linux build. Tkinter ships with Python on macOS or can be installed via Homebrew.

Prerequisites

SoftwareRequiredInstall
Python 3.10+ (with Tkinter)Requiredbrew install python-tk@3.12 or python.org
OllamaRequiredollama.com
FFmpegRecommendedbrew install ffmpeg (for NWR audio, voice engine, audio capture)
TailscaleOptionaltailscale.com or Mac App Store

Quick Start

git clone https://github.com/scarter84/0411.git cd 0411 python3 -m venv .venv && source .venv/bin/activate pip install -r app/requirements.txt python3 app/openclaw_tkui.py

macOS Path Mapping

Linux PathmacOS Path
~/.openclaw/~/.openclaw/ (same)
~/Journal/~/Journal/ (same)
~/ARCHIVE/~/ARCHIVE/ (same)
~/voices/~/voices/ (same)

Platform Differences

FeatureLinuxmacOS
File openerxdg-openopen (native)
Service checksystemctl is-activelaunchctl list
Audio sourcespactl (PipeWire)sounddevice (CoreAudio)
SSH Tunnelsystemd serviceautossh via launchd plist or manual
DPI scalingSystem nativeRetina-aware (auto-detected)
Direwolfapt installbrew install direwolf or build from source
RTL-SDRapt install rtl-sdrbrew install librtlsdr

Doppler & HAM Tabs on macOS

All map, radar, and weather features work identically. For NWR audio streaming, install FFmpeg via Homebrew (brew install ffmpeg) to get ffplay. RTL-SDR requires brew install librtlsdr and a compatible USB dongle. Direwolf for APRS is available via Homebrew.

Known Limitations

27.3

Whim.V — Vehicle Dashboard

Whim.V is a touch-optimized vehicle dashboard designed for vertical 13.6″ Tesla-style displays running Ubuntu, or any Android tablet connected to the Whim ecosystem. It delivers a subset of the full Whim Terminal’s capabilities in a high-contrast, glanceable interface built for use in the field or on the road. Version 1.1 adds Leaflet satellite maps with Esri tiles, a named location manager with Nominatim address-to-GPS geocoding, 7 NWS regional radar stations, per-site geofence overlays, and a Service Worker for offline resilience.

The dashboard runs as a lightweight Flask web server on the desktop (or vehicle Ubuntu machine) and is accessed via a WebView-based Android APK on the tablet. A green-dot launcher icon installs to the home screen for one-tap access.

Architecture

ComponentDescription
Serverwhim_v.py — Flask server on port 8099, serves the full dashboard as a single-page web app with Service Worker for offline caching
ClientAndroid APK (com.whim.v) — fullscreen WebView wrapper with green-dot launcher icon, FLAG_KEEP_SCREEN_ON
ConnectionLAN (192.168.x.x) or Tailscale mesh (100.69.17.20) — same hybrid networking as Whim.m
Document EngineLibreOffice headless — converts .xlsx, .docx, .ods, .odt to PDF for inline viewing
Map EngineLeaflet 1.9 with Esri World Imagery satellite tiles (toggle to OSM street view)
Location Data~/.openclaw/whimv_locations.json — shared with Whim Terminal. Nominatim geocoding for address-to-GPS lookup

Dashboard Tabs

TabFunction
GEOFLeaflet satellite map with Esri World Imagery tiles (toggle to OSM street), collar pins with in/out status, fence polygon overlay, named location fences drawn as orange dashed boundaries, location dropdown to jump between saved sites, collar status table (ID, name, in/out, battery, coordinates, last seen)
RADAREmbedded NWS Doppler radar in fixed aspect-ratio container — 7 regional stations: KSGF (Springfield), KSRX (Ozarks), KEAX (Kansas City/Columbia), KLSX (St. Louis), KILX (Quincy/Lincoln), KLZK (Little Rock)
DOCSDocument viewer with directory browser (Home, Documents, Incoming, Journal). Opens .xlsx/.docx/.ods via LibreOffice headless, renders .pdf/.txt/.csv/.md natively
AIWhim.AI chat with Ollama model selector, streaming responses. Supports all local models (llama3.1, deepseek-r1, qwen3-coder)
LOGSSystem status — Ollama model inventory, Tailscale mesh peers, disk usage, uptime, saved locations summary

Screenshots

Whim.V Document Viewer Tab
DOCS tab — Document Viewer with directory browser (Home, Documents, Incoming, Journal) and LibreOffice headless rendering
Whim.V AI Chat Tab
AI tab — Whim.AI streaming chat with qwen3-coder:32b model, touch-friendly input bar
Whim.V AI Model Selection
AI tab — Ollama model selector dropdown with all locally available models
Whim.V System Logs Tab
LOGS tab — System status showing Ollama (5 models), Tailscale mesh (CARRARAmint + 3 peers), disk usage, and uptime

Quick Start

# Start the Whim.V server on your desktop or vehicle Ubuntu machine
python3 vehicle/whim_v.py --port 8099

# Open in any browser on the same network
# http://<your-ip>:8099

# Or install the Android APK for a native launcher icon
adb install vehicle/apk_build/out/whim_v.apk

Download

Download Whim-Vehicle.zip — contains whim_v.py server, Android APK source, and build script.

Platform Compatibility

FeatureUbuntu Vehicle DashAndroid TabletDesktop Browser
GeoF Map (Leaflet Satellite)
Doppler Radar (7 stations)
Named Locations + Geocoding
Document Viewer
AI Chat (Ollama)
System Logs
Offline (Service Worker)
Touch GesturesMouse
Home Screen IconDesktop shortcutAPK launcherBookmark
28

Multi-Terminal Sync

The SYNC tab enables state synchronization across multiple Whim Terminal instances running on different machines (Linux + Windows). Seven sync approaches are available, managed through a unified engine.

Multi-Terminal Sync Desktop Tab

Sync Approaches

#ApproachTransportReal-timeOffline
1WebSocket DaemonTailscale meshYesNo
2VPS rsyncSSH to VPSNoYes
3CRDT CollaborationWebSocketYesNo
4Git SyncGit remoteNoYes
5Hybrid (1+2)Tailscale + VPSYesYes
6Session MirrorWebSocketYesNo
7Phone BridgeHTTP (Whim.m)BufferedYes

What Gets Synced

DataFileSync Default
Session Historywhim_sessions.jsonOn
Settingswhim_settings.jsonOn
Voice Engine Configvoice_engine.jsonOn
Device Locationsdevice_locations.jsonOn
Personaspersonas.jsonOn
Journal Manifest~/Journal/*.jsonOn
Archive Text~/ARCHIVE/*.txtOn
API Keys / TokensNever

Sync Modes

Hybrid Mode (Recommended)

Combines WebSocket + VPS for maximum reliability:

  • When both machines are on Tailscale: live WebSocket sync (sub-second)
  • When one is offline: changes queue locally
  • On close: auto-push to VPS. On open: auto-pull from VPS.
  • VPS acts as tie-breaker for conflicts
WebSocket Only

Real-time peer-to-peer sync via Tailscale. Both machines must be online. Heartbeat every 10s, full reconciliation every 5 min.

VPS Only

Async push/pull via rsync over SSH. Works even when the other machine is off. Manual or auto-triggered.

Git Mode

Auto-commit every 60s, push/pull from a private Git repo. Full version history and easy rollback.

Conflict Resolution

The sync engine uses vector clocks for last-writer-wins conflict resolution. Each node maintains a logical clock that increments on every local change. When merging, the node with the higher clock value wins. For simultaneous edits at equal clocks, the node with the lexicographically higher ID wins (deterministic tie-breaking).

The CRDT layer (Approach 3) provides conflict-free merging for structured data like session lists and chat histories, ensuring eventual consistency without data loss.

Session Mirror

Cast a live Whim Terminal session to another machine for read-only viewing. Enter the host's Tailscale IP in the SYNC tab and click WATCH. The mirror updates in real-time. Optional control handoff allows the viewer to operate the remote session.

Phone Bridge

Uses connected Whim.m phones as store-and-forward relays. When desktop A pushes changes, the phone stores them. When desktop B comes online, it pulls buffered changes from the phone. Leverages the existing Whim.m HTTP server on port 8089.

Security

Configuration

Sync config is stored at:

PlatformPath
Linux~/.openclaw/whim_sync.json
Windows%APPDATA%\OpenClaw\whim_sync.json

Quick Start

Enable Sync
  1. Open the SYNC tab in Whim Terminal
  2. Select your preferred mode (Hybrid recommended)
  3. Toggle Enable Sync on
  4. Click START
  5. Enter the Tailscale IP of your other Whim instance and click CONNECT
29

Zipline — File Transfer CLI

Zipline is a local-first command-line file transfer tool for the Whim ecosystem. It sends and pulls files between devices over the Tailscale mesh using Whim.m HTTP endpoints — no cloud, no external dependencies, pure Python stdlib. Think of it as a sovereign AirDrop for the Whim mesh.

Architecture

Zipline talks directly to the Whim.m HTTP server (port 8089) running on each device. It uses the existing /library/upload, /library/download/, /upload, /audio/, /files, and /library endpoints — no additional server or daemon required.

ComponentDescription
Script~/vaults/WHIM/scripts/zipline.py
Symlink~/.local/bin/zipline
TransportHTTP over Tailscale mesh (WireGuard encrypted)
ServerWhim.m on port 8089 (existing — no extra setup)
Downloads~/Incoming/zipline/
DependenciesNone (Python 3 stdlib only)

Commands

CommandDescription
zipline send <file> <target>Send a file to a device's shared library
zipline send <file> <target> --journalSend to the device's journal (audio upload path)
zipline pull <filename> <target>Pull a file from a device's shared library
zipline pull <filename> <target> --journalPull from the device's journal
zipline ls <target>List files on a device's shared library
zipline ls <target> --journalList a device's journal files
zipline devicesList all known devices with online/offline status
zipline ping <target>Check if a device's Whim.m server is reachable

Device Aliases

Targets can be friendly aliases or raw Tailscale IPs:

Alias(es)Tailscale IPDevice
pc, carraramint, mint100.69.17.20PC (CARRARA Mint)
s22, galaxy-s22100.77.59.2Samsung Galaxy S22
s9, galaxy-s9100.97.96.1Samsung Galaxy S9
tablet, lenovo100.64.255.124Lenovo TB311FU

Usage Examples

Send & Pull
# Send a config file to the S22's library
zipline send ./new_model_config s22

# Send audio to the PC's journal
zipline send recording.webm pc --journal

# Pull a screenshot from the tablet
zipline pull Screenshot_20260414.png tablet

# List what's on the S22's library
zipline ls s22

# Check all device connectivity
zipline devices

# Quick reachability check
zipline ping tablet

Data Flow

SEND:  Local File → HTTP POST → Tailscale Mesh → Whim.m :8089 → ~/Shared (library) or ~/Journal (journal)
PULL:  Whim.m :8089 → Tailscale Mesh → HTTP GET → ~/Incoming/zipline/

How It Works

Security

30

Whimgo.io — Web Portal & WISP Terminal

Whimgo.io is the public-facing web portal for the Whim ecosystem, hosted on GitHub Pages. It serves as both a project homepage for the community and a secure operator dashboard for authenticated users. Operators can access the WISP Terminal — a browser-based shell into the CARRAMint workstation — directly from the portal, enabling remote APK sideloading, system administration, and ADB commands without leaving the browser.

Site Architecture

PageURLDescription
Homewhimgo.ioProduct overview, feature grid, architecture diagram, Edge Match GPU selector, downloads, community, and operator login
Journalwhimgo.io/journal.htmlDevelopment journal and build log (operator-gated)
WISPwhimgo.io/wisp.htmlRemote terminal console via ttyd over Tailscale mesh (operator-gated)

Operator Handshake

Certain pages (Journal, WISP) are gated behind an Operator Handshake — a SHA-256 passphrase challenge verified entirely client-side. No credentials are transmitted to any server. The passphrase hash is embedded in the page source; authentication is stored in sessionStorage and resets on browser close. The home page also features an Operator login that reveals a live dashboard with Tailscale mesh status, VPS tunnel health, OpenClaw gateway status, and a burndown task queue.

WISP Terminal

The WISP page embeds a ttyd instance running on CARRAMint (100.69.17.20:7681) inside an iframe, providing a full interactive bash shell in the browser. This is the same terminal environment where the WISP droid (Whim’s Integrated Systems Processor) operates. Key capabilities:

WISP Terminal Toolbar

ControlFunction
Status DotGreen (connected), Yellow (checking), Red (unreachable) — reflects ttyd reachability
Target AddressDisplays the Tailscale IP and port (100.69.17.20:7681)
Connect / DisconnectCreates or destroys the ttyd iframe, with connection timeout detection
Sidebar ToggleShow/hide the ADB Quick Actions, mesh device list, and ttyd config panels

ADB Quick Actions Sidebar

The sidebar provides one-click clipboard commands for common ADB operations, eliminating the need to remember paths and IPs:

ActionCommand
Connect Vehicle HUadb connect 100.64.255.124:5555
Push Whim.m APKadb install ~/Apps/whim_m.apk
Push Whim.V APKadb install ~/Apps/whim_v.apk
List Devicesadb devices -l
Screenshot Vehicleadb shell screencap && adb pull
List Whim Packagesadb shell pm list packages | grep whim

ttyd Service Setup

The ttyd web terminal runs as a systemd service on CARRAMint, bound to the Tailscale interface with TLS enabled so it can be embedded in the HTTPS-hosted Whimgo.io site:

# Service: /etc/systemd/system/wisp-ttyd.service [Unit] Description=WISP ttyd -- Web terminal for Whim operator access After=network.target tailscaled.service [Service] Type=simple ExecStart=/usr/bin/ttyd -p 7681 -i 100.69.17.20 \ --ssl-cert ~/.ttyd/cert.pem \ --ssl-key ~/.ttyd/key.pem \ -t fontSize=14 -t fontFamily=JetBrains Mono,monospace \ -t theme={"background":"#0a0a0a","foreground":"#dce4ee","cursor":"#00ff00"} \ /bin/bash User=tommymunro Restart=on-failure [Install] WantedBy=multi-user.target

TLS Requirement

Because Whimgo.io is served over HTTPS (GitHub Pages), the ttyd iframe must also use HTTPS to avoid mixed-content blocking by browsers. ttyd is configured with a self-signed certificate (or Tailscale cert) bound to the Tailscale IP. On first connection, the operator must accept the certificate by visiting https://100.69.17.20:7681 directly in the browser.

Mesh Device Panel

The sidebar also displays all Tailscale mesh devices with live status indicators:

DeviceTailscale IPStatus
CARRAMint100.69.17.20Online
Galaxy S22100.77.59.2Online
Galaxy S9100.97.96.1Online
Lenovo Tablet100.64.255.124Online
Vehicle HUpendingDev

Repository

ItemValue
Sourcegithub.com/scarter84/whimgo.io-site
HostingGitHub Pages (HTTPS enforced)
Domainwhimgo.io (custom CNAME)
Service WorkerOffline caching for PWA support
AuthClient-side SHA-256 passphrase (no server component)

Operator Workflow: Remote APK Sideload

The primary use case for the WISP terminal on Whimgo.io is pushing APK updates to the vehicle head unit while sitting in the vehicle, using the phone or tablet’s browser:

  1. Open whimgo.io/wisp.html on any mesh-connected device
  2. Authenticate with the operator passphrase
  3. Click Connect to open the CARRAMint terminal
  4. Use the ADB Quick Actions to connect to the vehicle HU and push the latest APK
  5. The APK transfers from the home PC → Tailscale mesh → vehicle head unit — no USB cables, no cloud
Why Whimgo.io Matters

Whimgo.io closes the loop on sovereign infrastructure. You are not relying on a third-party app store or cloud service to manage your fleet — you are using your own hardware, your own mesh, and your own web portal. The entire deployment pipeline from code change to APK running on the vehicle display runs through infrastructure you control.

31

Glossary

Quick reference for all Whim ecosystem terminology.

TermDefinition
Whim TerminalThe primary desktop application. 20-tab Tkinter UI running on Linux, Windows, and macOS. The central hub of the ecosystem.
Whim.mMobile companion app for Android (APK + PWA). Five tabs: REC, LIBRARY, CHAT, WAKE, DEVICES. Connects via VPS tunnel or Tailscale.
Whim.VVehicle dashboard. Touch-optimized Flask web app for 13.6″ Tesla-style displays and Android tablets. Five panels: GeoF, Radar, Docs, AI, Logs.
OpenClawThe command protocol and AI gateway. Routes instructions between platforms via WebSocket (port 18789), manages sessions, agents, and approvals.
CARRARA / carraramintThe primary Linux Mint workstation that runs Whim Terminal, Ollama, and all server-side services. Tailscale IP: 100.69.17.20.
OllamaLocal LLM inference server at port 11434. Hosts DeepSeek R1:32B, Llama 3.1:8B-16K, and Qwen3-Coder:32B. No cloud dependency.
DopplerWeather radar module. NWS NEXRAD base reflectivity overlay, Open-Meteo 7-day forecast, NWR audio, anemometer, and severe weather alerts.
GeoFGeofence tracker. Canvas map with draggable fence vertices, LoRa collar bridge (ESP32), 20-minute heartbeat monitor, in/out detection, and named location management.
HAM / APRSAmateur radio station monitor. Embedded OSM tile map with station markers, Direwolf integration (KISS/AGWPE/simulate), distance-filtered station list.
LoRa BridgeESP32-based gateway that receives LoRa packets from GPS collars and forwards them to GeoF for geofence tracking.
NodeFlowVisual node-based editor showing active droids, LLM reasoning, OpenClaw telemetry, and data flow connections on a drag-and-drop canvas.
Sovereign ModeToggle that disables all cloud API fallbacks, ensuring 100% local-only AI inference. No data leaves the machine.
Unified Model RouterAI routing layer in Whim.AI. Local-first via Ollama; optionally falls back to OpenAI, Anthropic, or DeepSeek cloud APIs when Sovereign Mode is off.
TailscaleWireGuard-based mesh VPN connecting all Whim devices. Opt-in fallback for mobile connectivity; handles WiFi-to-cellular handoffs natively.
VPS TunnelPrimary mobile connectivity. Reverse SSH tunnel via autossh through a Vultr VPS (104.207.140.242). No ports opened on the home router.
ZiplineLocal-first CLI file transfer tool. Sends and pulls files between mesh devices over Tailscale using Whim.m HTTP endpoints. Python stdlib only.
AVR LabXTTS v2 voice synthesis lab. Speaker references, spectrogram visualization, and Table Reads output for voice cloning.
TRV CipherAudio transcription workstation. Spectrogram, playback transport, Whisper transcription, ODT export, and scrub tools.
PersonaVoice personality manager. Coined response playlists per voice clone, confidence-gated, context-aware, with XTTS pre-render pipeline.
WISPWhim’s Integrated Systems Processor. The resident AI assistant for diagnostics, file browsing, and system maintenance tasks. Accessible remotely via the Whimgo.io WISP terminal page.
Whimgo.ioThe public web portal for the Whim ecosystem. Hosted on GitHub Pages. Features project overview, Edge Match GPU selector, operator dashboard (passphrase-gated), development journal, and WISP remote terminal.
ttydWeb-based terminal emulator running on CARRAMint (port 7681, Tailscale-bound, TLS-enabled). Provides browser-based shell access embedded in the Whimgo.io WISP page for remote administration and ADB operations.
MillyAlThe cloned voice identity used for spoken AI responses via XTTS v2. Generates audio for wake word replies and voice chat.
GBrainOpen-source AI memory system (github.com/garrytan/gbrain). Persistent knowledge graph with PGLite + pgvector, hybrid search, 34 skills, Dream Cycle maintenance, and entity enrichment. Installed at ~/gbrain, data at ~/.gbrain/.
Brain HealthLive indicator in the header bar showing GBrain status (green dot = online, grey = offline) with page count. Polls every 30 seconds. Click to jump to BRAIN tab.
Whim Dictionary43-term ecosystem glossary (whim_dictionary.py) injected into every Whim.ai system prompt. Contains subsystem definitions, GitHub repo locations, and GBrain context.
HimalayaCLI email client for IMAP/SMTP integrated into Whim Terminal. Configured in Settings > Email. Chat commands: /email list, /email read, /email search.
Dream CycleGBrain’s 8-phase overnight maintenance: lint, backlinks, sync, synthesize, extract, patterns, embed, orphans. Runnable from the BRAIN > Operations tab.
Send to BrainOne-click button in the Whim.AI toolbar that saves the last AI response as a brain page with frontmatter, prompt context, and timestamp.
FreshTailContext window management system that builds optimized message history for Ollama, handling token overflow and message prioritization.
OpenTailorThe Tool Store in Settings. Manages AI capability bundles with per-preset tool selection, risk badges, and approval requirements.
OpenFangVisual watchdog kernel. Monitors system state via screenshots, OCR, and neural analysis. Produces kickbacks when issues detected. Commands: /openfang, /chk, /solve.