I build connectivity fabric for heterogeneous systems: discovery, routing, policy, and observability across devices that were never designed to talk to each other. Day job energy is Victron / Venus OS; the same shape shows up as service mesh at cloud scale — a paved road so apps (and hardware) do not have to invent networking themselves.
Two product lines on GitHub: victron-venus (energy / Venus OS fabric) and open-ott-play (IPTV/OTT player + Rust edge server).
- Distributed glue — MQTT / D-Bus / BLE bridges; gateways; control vs data plane
- Reliability — failsafe control loops, audit logs, on-call style ops for home ESS
- Systems — Python control; Go / Rust services; ESPHome on the edge
- Media / edge — ES5-safe STB UI; Rust reverse-proxy style server for EPG and streams
- Observability — live dashboards + TIG / OpenTelemetry across the stack
- IaC — GitHub orgs and repos via Terraform
flowchart TB
HW["Hardware — JBD BMS · Tasmota · MultiPlus/Cerbo"]
EDGE["Edge — ESPHome / BLE proxy"]
BR["Bridges — dbus-mqtt-battery · dbus-tasmota-pv"]
CTL["Control & audit — inverter-control · dbus-event-log · venus-os-otel"]
BUS(("MQTT fabric"))
GW["Ingress & OTel — fastapi-mqtt-gateway · mqtt-otel"]
DATA["Data — energy-data-rag · solar-forecast"]
UI["Consumers — dashboard-go · desktop · monitoring · mcp-venus-os"]
HW --> EDGE --> BR --> CTL --> BUS --> GW --> DATA --> UI
Why this exists: Venus OS, ESP nodes, and dashboards are different runtimes. The suite is the mesh between them — injection points (bridges), traffic into a shared bus (MQTT), locality (on-device D-Bus), policy (inverter-control), and telemetry (OTel / TIG) — so nothing speaks a private protocol forever.
| Repo | Role |
|---|---|
| integration-tests | MQTT / battery / PV harness |
| terraform-github-victron | IaC for victron-venus |
| terraform-github-4alvit | IaC for personal account |
| iot-project-builder-profile | Profile generator from GitHub activity |
Self-hosted IPTV/OTT player for smart TVs and STBs (MAG, Dune, Tizen, webOS, …) plus a local Rust HTTP(S) server.
- Client — TypeScript → one ES5 classic bundle (
dist/stbPlayer.js),window.*for legacyprov.js/ devicestb.js - Server —
ottplay-server(axum): static files, XMLTV/EPG cache, M3U match, CORS stream proxy, optional TLS - Ops — multi-arch Docker Hub images; local HTTPS stack for day-to-day bring-up
- Org — open-ott-play profile + community files
| Project | What it does |
|---|---|
| inverter-control | ESS grid-zero loop (~3 Hz), EV exclusion, battery protection |
| dbus-mqtt-battery + esphome-jbd-bms-mqtt | BLE → MQTT → native Victron batteries |
| dbus-tasmota-pv | Tasmota PV → D-Bus |
| dbus-event-log | D-Bus audit / post-mortem |
| fastapi-mqtt-gateway | REST/WS → MQTT with auth |
| Project | What it does |
|---|---|
| inverter-dashboard-go | Single-binary live dashboard |
| inverter-dashboard | FastAPI / Python dashboard |
| inverter-desktop | Tauri + Rust desktop app |
| inverter-monitoring | TIG + Loki stack |
| venus-os-observability | OTel / Prometheus on D-Bus |
| mqtt-observability-opentelemetry | OTel for MQTT IoT |
| Project | What it does |
|---|---|
| energy-data-rag-pipeline | RAG over Victron docs |
| solar-forecast-langgraph | Solar forecast via LangGraph |
| mcp-venus-os | MCP server for Venus OS |
| Project | Notes |
|---|---|
| dbus-service-template | Copier template for D-Bus services |
| esphome-ble-sensor-patterns | Production ESPHome BLE patterns |
| venus-os-governance | Archived — safety moved into inverter-control |
Python · Go · Rust · TypeScript · Vue · MQTT · Docker · Terraform · Home Assistant · OpenTelemetry
- GitHub: @4alvit
- Victron org: @victron-venus
- OTT org: @open-ott-play