is an open-source Software Defined Vehicle platform — a full stack of custom hardware, firmware, edge software, and mobile apps that turns any rig into a connected, programmable vehicle. It ships as a reference implementation, not a product. Every schematic, PCB, firmware image, container, and app is MIT-licensed and lives on GitHub.
Why it exists
Modern "smart" vehicles are smart until the servers go down, the subscription lapses, or the manufacturer decides a feature now costs extra. TrailCurrent is built on a different premise: your vehicle, your data, your code. Everything works offline. The cloud is optional. Nothing you need to drive, camp, or stay safe depends on someone else's infrastructure staying up.
Architecture
A modular stack, from microcontroller to mobile app:
- CAN bus modules — ESP32 / ESP32-S3 / ESP32-P4 nodes on a shared 500 kbps CAN bus. Standardized WiFi provisioning, mDNS discovery, and dual-OTA across every module.
- Edge gateway — Headwaters (Raspberry Pi CM5 + Waveshare RS485/CAN HAT) runs a Docker stack: Mosquitto MQTT, Node.js API, MapLibre vector tile server, local PWA, and firmware OTA orchestration. Provides its own Wi-Fi. Baseflow is a lighter alternative built on the Arduino Uno Q (STM32U585 FDCAN + Qualcomm QRB2210).
- Displays — LVGL-based touchscreen dashboards that talk CAN directly or MQTT over TLS.
- Mobile — native Android (Kotlin / Jetpack Compose) and a cross-platform React Native build, both with offline-first MapLibre maps.
- Optional cloud (Farwatch) — Node.js + MongoDB + Mosquitto + tileserver for remote check-ins, proximity automations, and OTA package delivery. Your rig doesn't need it to function.
Edge gateways
- Headwaters — CM5-based gateway; brain of the system
- Baseflow — Arduino Uno Q lite gateway (no tileserver / Node-RED)
Power & energy
- Torrent — 8-channel PWM dimmable lighting controller
- Switchback — 8-channel 10 A relay module (ESP32-S3)
- Solstice — solar + battery gateway; reads Victron MPPT and SmartShunt over VE.Direct and bridges to CAN
Sensors & monitoring
- Bearing — multi-constellation GNSS (GPS + BeiDou + GLONASS)
- Borealis — indoor environmental sensor (temp, humidity, TVOC, eCO₂)
- Reservoir — fresh / grey / black tank level monitoring (12 contactless sensors)
- Plateau — BNO055 9-DOF leveling IMU with per-corner height output
- Picket — 13-input cabinet and door sensor node
- Aftline — 7-pin trailer connector monitor (voltage, turn, brake, running)
Climate
- Closed-loop thermostat split across a controller board and dedicated heater / cooler relay boards, with Borealis as the ambient source
Control & displays
- Tapper — 8-button backlit control panel, targetable at any Torrent or Switchback instance
- Milepost — 7" CAN-native LVGL touchscreen dashboard (ESP32-S3 + Waveshare LCD-7)
- Fireside — 7" MQTT-over-TLS central display (ESP32-P4 + ESP32-C6)
- Spotter — 4.3" remote monitor for the tow vehicle
Voice
- Peregrine — fully offline voice assistant on the Radxa Dragon Q6A: OpenWakeWord + faster-whisper + Llama 3.2 1B on the Hexagon NPU + Piper TTS, tied into MQTT
Apps & cloud
- Outbound — native Android app (Kotlin / Jetpack Compose / MVVM / Retrofit / WebSocket)
- ReactNativeApp — cross-platform Expo build for iOS, Android, and web
- Farwatch — optional cloud PWA (Node.js + MongoDB) with proximity automations and firmware deployment
Shared infrastructure
- TrailCurrentKiCADLibraries — symbols, footprints, and 3D models used by every board
- TrailCurrentCANLibrary — shared CAN messaging library
- TrailCurrentCommonCADFiles — enclosure and integration FreeCAD assets
- TrailCurrentBuildRoot — custom Buildroot config for embedded OS targets
- TrailCurrentDocumentation — platform architecture, deployment, and module guides
Design principles
- Edge-first. Intelligence lives on the vehicle, not in a data center.
- Offline-capable by design. Cell service is a nice-to-have, not a dependency.
- Modular. Start with a power module and a control panel. Add the rest as you go.
- Standardized plumbing....
Dave Floyd