Why build it
Van life means unreliable power and patchy 4G. A system that depends on the cloud is dark exactly when you need it. So the whole stack runs on the edge: voice recognition, the language model, and text-to-speech all live on one low-power module in the van.
The stack
Local agent
A Qwen LLM via Ollama runs an agent loop with tools, fed by on-device ASR and answered through on-device TTS. No transcript ever leaves the van.
Victron telemetry
SmartShunt, SmartSolar, and an Orion DC-DC charger read out over BLE — live state-of-charge, solar yield, and load, parsed from the raw instant-readout frames.
Lights & devices
12V spotlights on a Shelly dimmer, driven through a clean device contract so new hardware drops in behind the same interface.
Location & camera
GPS from the 4G router puts the van on a map; a webcam feed streams over the local network for a quick look outside.
Built for testing
Every layer has a test seam: device drivers run against a contract suite, the agent against a stub model, Victron parsing against golden BLE dumps, and the web API against an in-memory bus. The laptop runs the full suite green with no van attached — the hardware adapters stay thin on purpose.
Python FastAPI PipeWire BLE Ollama Jetson Orin Nano
See it running
The demo is the real dashboard UI on simulated telemetry — toggle the lights, watch the batteries tick.