The Tesla OSS suite: 85K words of research distilled into 8 repos
I have a Model Y 2026 AWD on order. While I waited for delivery, I did what any sensible person would do: I built the eight pieces of software I'd want it to come with.
This started as a research dump. ~85K words of curated notes, 1,409 raw ideas pruned to 915, 40 clusters, three waves of buy-vs-build analysis. None of that ships. It's just kindling. What ships is a workspace called tesla with eight repos arranged in dependency order.
The shape
The library that everything else depends on comes first:
- tesla-clip-tools — the shared library. Ten source plugins (Tesla, Wyze, Reolink, UniFi, Ring, Nest, Eufy, Frigate, Arlo, Blink), a sampler, generic VLM backends, and SEI primitives. Without this, every downstream repo would reimplement frame sampling and prompt scaffolding. v0.7.0, 135 tests.
Two consumers prove the abstraction:
- sentrytriage (v0.14.0, 115 tests) — local AI Sentry triage with a FastAPI dashboard, thumbs feedback, tune-prompt, A/B evaluator with train/test split, and embedded video.
pip install sentrytriage && triage demoboots a 30-second walkthrough. - fsd-disengagement-studio (v0.5.0, 106 tests) — catalog and dashboard for FSD disengagements. Three paths: manual save, real-time Home Assistant trigger, and bulk SEI backfill. Per-driver splitter on top.
Five independent repos cover orthogonal surfaces where the clip library wouldn't help:
- hey-nabu-climate-concierge (v0.4.0 Python + v0.5.0 PWA, 33 + 62 tests) — DIY voice climate concierge. FastMCP server + Tesla-browser PWA + real Home Assistant WebSocket state subscription + IndexedDB history.
- teslakit (v0.1.0, 45 tests) — Docker Compose monorepo bundling Home Assistant + TeslaMate + Tesla HTTP Proxy + BLE bridge. Replaces Tessie's $13–20/month subscription.
- deliveryday-companion (v0.2.0, 54 tests) — delivery-day acceptance checklist with photos and a signed PDF report. Model Y 2026 AWD preset baked in (50 steps).
- tesla-changelog-diff (v0.3.0, GitHub-only, 61 tests) — per-VIN OTA diff bot. Three VLM backends (OpenAI, Anthropic, Gemini) for HMI screenshot diffs.
- guestkey-issuer (v0.1, Go scaffold) — the missing ~80-line primitive for
WhitelistOperation.addImpermanentKey(ROLE_GUEST=8). Dry-run only for now.
Why these eight, in this order
The constraint I set was that every repo had to be testable without a vehicle in hand. Synthetic seeds, mock Fleet API clients, deterministic fixtures, plugins for non-Tesla cameras. That constraint is the reason the OSS releases are portable to anyone — Tesla owner or not.
tesla-clip-tools had to come first because everything downstream — Sentry triage, FSD disengagement classification, future plugins — needs the same source/sampler/VLM/SEI primitives. The two consumers exercise the abstraction. The five independents don't share a dependency graph; they just share a Tesla.
The workspace itself
There's a doctor.py at the root that runs every Python repo's test suite and prints a green/yellow/red dashboard. There's an index.html that renders the workspace overview with a Mermaid diagram, hero stats, and live-link cards — no build step, just open it. There's a start-all-demos.{ps1,sh} that boots three dashboards in parallel.
tesla/
├── tesla-clip-tools/ shared library (135 tests)
├── sentrytriage/ AI Sentry triage (115 tests)
├── fsd-disengagement-studio/ FSD disengagement catalog (106 tests)
├── hey-nabu-climate-concierge/ voice concierge (95 tests across Python + PWA)
├── teslakit/ Tessie replacement (45 tests)
├── deliveryday-companion/ acceptance checklist (54 tests)
├── tesla-changelog-diff/ per-VIN OTA diff (61 tests)
├── guestkey-issuer/ Go scaffold for ROLE_GUEST=8
├── doctor.py workspace test runner
└── index.html browser-rendered overview
What I learned
A few things only became obvious once I had eight things shipping side by side:
The shared library should be the second thing you ship, not the first. I built tesla-clip-tools first as a library, but I didn't understand its real shape until I'd shipped sentrytriage against it. The right move is to ship sentrytriage from a single-file embedded version, then extract the library on the way to fsd-disengagement-studio.
Synthetic seeds save the project. If triage demo didn't boot in 30 seconds with no Tesla and no cloud, nobody would ever try the thing. Determinism is a feature.
Repo count > monorepo for this kind of OSS. Each repo can be pip install'd on its own. Each has its own LICENSE (mostly MIT, AGPL for teslakit because of TeslaMate's contagion). Each can graduate independently.
When the Model Y actually arrives, the delivery checklist gets a real workout. Until then, the synthetic data keeps the repos honest.
