I gave my van a brain.
Shaddow (Shadow Van) turns a 2017 Ford Transit into a single, self-hosted computer. One message bus — MQTT — wires the in-dash head unit, my iPhone and Mac, the engine, and the house battery into one system that actually talks to itself: no cloud account required, no pile of disconnected gadgets. I designed and built the whole software side, and it runs in the van every day.
What it does
Everything speaks to one Mosquitto MQTT broker — the contract that makes every piece swappable:
- One app, three screens. A SwiftUI app that’s native on iPhone and Mac from a single codebase, plus an Android head unit running kiosk-mode in the dash.
- The van reports in. OBD-II (RPM, coolant, fuel, range) and a read-only CAN tap (doors, windows, diagnostics) stream the Transit’s own data onto the bus.
- Power you can see and steer. Live EcoFlow DELTA Pro telemetry and control — state of charge, per-port watts, AC/DC — with an energy dashboard and 7-day history.
- It watches itself. Node-RED and Home Assistant (~46 entities) run the automations; a health monitor pings my phone — Apple Push, iMessage, or an AI summary — the moment something drifts.
- AI on board. Local Ollama models with an OpenRouter fallback, reachable from the apps through an MCP control plane that lives on the same bus.
Built like production, not a hobby
The whole stack self-hosts on an Apple-silicon Mac in the van and reaches me anywhere over Tailscale:
- Dockerized — Mosquitto, InfluxDB + Grafana, Node-RED, Home Assistant, AdGuard.
- Shipped on push — GitHub Actions deploys to the van over SSH on every merge to
main. - Always on — T-Mobile 5G and an EcoFlow LiFePO4 bank keep it up independent of the ignition.
Where it stands
The software is live and runs daily — head unit, phone and Mac apps, telemetry, power, and automation, all in the van.
The hardware track — Front Dock, a custom 4-layer 12 V dock board (USB hub, local power generation, and an isolated read-only dual-CAN interface, designed in KiCad and Flux.ai) that collapses a bench of adapters into one PCB — is on hold, with the next steps handed to a hardware collaborator while I keep pushing the software side.