CarWatch
Your car as a chat-room agent: Raspberry Pi 5 + dashcam + local AI. CodeWatch's sibling for the garage.
What is it?
What it is
CarWatch turns a Raspberry Pi 5 in the car into a fully offline, voice‑controlled AI agent that runs a local LLM, reads the owner’s manual via RAG, monitors OBD data, posts to GroupMind rooms, and serves a phone dashboard, all without external dependencies or subscriptions.
Why it exists
To give car owners independent, private AI that stays in the vehicle, works without network, avoids manufacturer lock‑in and data harvesting, and enables any brand to be supported via a vendor‑neutral interface.
Who should use it
Raspberry Pi 5 enthusiasts, car owners wanting local offline AI monitoring, privacy advocates, and open-source tinkerers comfortable with OBD-II and systemd setup.
Who should avoid it
Users requiring cloud-dependent AI, those uncomfortable with Linux/Raspberry Pi configuration, and beginners seeking plug-and-play without technical setup.
How it works
A quick walkthrough in plain English
How CarWatch works
Step 1 of 3
You interact with it
Open CarWatch, send a request, or connect it to your stack.
Features
Advantages
- All data stays in the car - no cloud transmission or subscription required
- Vendor-neutral architecture works with any car brand via adapter modules
- Full offline operation - works in garages, tunnels, and dead zones
- On-device AI processing ensures privacy and low latency
- Honest about limitations - refuses to invent facts or hallucinate sensor data
- Multiple model options allow trade-off between speed and capability
- Self-update capability keeps the system current without manual intervention
- Real-time sensor monitoring provides immediate feedback on car health
- Local LLM inference enables sophisticated reasoning without internet
Disadvantages
- Requires significant hardware investment (Raspberry Pi 5, 16GB, ~300€)
- Limited by local hardware constraints (larger models slower on Pi CPU)
- Some advanced features still under development (dashcam clip pull, MBUX dashboard rendering)
- OBD readings rely on Bluetooth ELM327 adapter (~15€) - alternative DoIP/ENET paths often fail
- Complex initial setup requiring careful configuration of systemd services and config files
- Model selection involves trade-offs between size (speed) and capability (quality)
- Performance varies by car model and OBD adapter compatibility
- Potential latency with larger models on single-core Pi CPUs
Installation
cloud
Remote access via Tailscale - your Pi and Home Assistant join your own encrypted mesh for manufacturer-cloud data while driving. Full setup in docs/remote-access.md.
native
git clone https://github.com/ThinkOffApp/CarWatch.git cd CarWatch ./install.sh Put credentials in /etc/carwatch/config.json (see config.example.json), then start the core: sudo systemctl enable --now carwatch-chat carwatch-obd carwatch-agent Enable extras (carwatch-brain, carwatch-listen, carwatch-rfcomm, carwatch-reach) as hardware and config become ready.
FAQ
What hardware do I need to build a CarWatch system?
The reference build is a Raspberry Pi 5 with 16 GB RAM (active cooling is required, since the SoC throttles without it), a class-compliant USB microphone for voice input, a WOLFBOX G900 3-channel dashcam on its wifi AP, a ~15 € Bluetooth ELM327 OBD-II adapter (the Vgate iCar Pro is tested), and a 5V/5A USB-C power source for the Pi (such as a 12V PD adapter or the car's 230V socket plus a wall PSU). The dashcam can be powered from its own hardwire kit.
How do I install CarWatch on the Raspberry Pi?
Clone the repo and run ./install.sh. The installer wires up the same systemd stack that the reference car runs, rewriting each unit in systemd/ to your username. The llama.cpp build and the ~14.3 GB model are guided, never downloaded silently. Put credentials in /etc/carwatch/config.json (never in the repo), then enable the core services with: sudo systemctl enable --now carwatch-chat carwatch-obd carwatch-agent. Optional services (carwatch-brain, carwatch-listen, carwatch-rfcomm, carwatch-reach) can be enabled once their hardware and config are ready.
Does CarWatch actually work fully offline?
Yes. Speech-to-text via whisper.cpp, the local LLM (Qwen3.6-35B-A3B at Q3_K_S), the owner's-manual RAG (489 pages shipped on the SD card with page citations), the phone dashboard, and OBD readings all run on the Pi with no internet. The Mercedes me tiles (fuel/tyre/charge/lock via Home Assistant) are an online enrichment; when offline they show last-known values, labeled as such. Room posts are queued through a persistent on-disk outbox and delivered late rather than dropped.
How do I talk to the car hands-free, and will it hear itself?
Say a wake phrase such as "Hello car", "Hey car", or "Hei auto", then ask in the same breath; for 30 seconds after an answer you can keep talking with no new wake phrase. Anything before the wake phrase is discarded, so ambient talking doesn't summon the car. v0.4 ships an echo gate: the mic stays closed until the cabin audio has actually finished, and any transcription that matches the car's last answer is dropped, so it will not reply to itself or to the radio.
Can I swap the language model running on the car?
Yes. The dashboard's Model zone lists every .gguf on the box with the tokens/second it actually reached on your Pi (from llama-bench runs on the device itself), and one tap switches the running brain. Three guard rails are enforced: a model that won't fit in RAM is refused with the reason, a swap never interrupts an answer being generated (ask first, swap after), and a failed restart rolls back to the previous working model. The model is read from an EnvironmentFile so switching is a file write plus a restart, not a unit-file edit.
How do I reach the Pi remotely when it's behind a phone-hotspot NAT?
CarWatch pulls its own updates from the repo on an hourly timer plus a dashboard "update now" button, and dials out a tunnel (cloudflared quick tunnel) so it stays reachable from anywhere, even behind a phone hotspot's NAT. For reaching Home Assistant on your home network from the road, the recommended path is Tailscale: both the Pi and the HA machine join your encrypted network and the Pi reaches HA at a stable private IP, with no subscription and no inbound ports exposed.
Featured in Videos
YouTube tutorials and walkthroughs for CarWatch
Alternatives
Similar projects ranked by category, topics, and text overlap.