by ThinkOffApp
Your car as a chat-room agent: Raspberry Pi 5 + dashcam + local AI. CodeWatch's sibling for the garage.
# Add to your Claude Code skills
git clone https://github.com/ThinkOffApp/CarWatchLast scanned: 8/26/2026
{
"issues": [
{
"file": "README.md",
"line": 144,
"type": "remote-install",
"message": "Install command (remote install script piped to a shell — review the source before running): \"curl -sSL https://raw.githubusercontent.com/ThinkOffApp/CarWatch/main/update.sh \"",
"severity": "low"
}
],
"status": "PASSED",
"scannedAt": "2026-08-26T04:38:43.601Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how CarWatch compares with popular alternatives.
CarWatch is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ThinkOffApp. Your car as a chat-room agent: Raspberry Pi 5 + dashcam + local AI. CodeWatch's sibling for the garage. It has 288 GitHub stars.
Yes. CarWatch passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/ThinkOffApp/CarWatch" and add it to your Claude Code skills directory (see the Installation section above).
CarWatch is primarily written in Python. It is open-source under ThinkOffApp on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh CarWatch against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Three questions asked by voice in the driver's seat and answered out of the car's own speakers — status brief, the yellow tyre light with real pressures, and E10 fuel from the manual. The last one with the internet switched off. Watch on X · download the video · v0.4.0 release notes


Your car as a chat-room agent — fully offline. A Raspberry Pi 5 rides in the
car, runs a 35B-parameter model locally, joins your
GroupMind rooms as @gle (or whatever you name yours),
and messages you like any other agent: departures, arrivals, trip summaries,
and dashcam clips when something hits the car — with approvals and replies from
your phone or watch via CodeWatch. Open PRs land on the CodeWatch dashboard next to ClawWatch and WhereWatch.
Live and measured, on real hardware (Pi 5, 16 GB, ~300 €):
git clone and it runs. (Verified by AST scan of every module.)Different questions want different brains. "What does the tyre light mean?" is
a 489-page-manual question that deserves the 35B. "How fast am I going?" is not
— and on a Pi the small model answers it six times quicker. So the dash grew a
Model zone: every .gguf on the box, listed with the speed it actually
reached on this Pi, and one tap to make it the running brain.

The numbers next to each model are llama-bench runs from the device itself,
not figures from someone's blog — the same hardware, the same quant, measured
the same way, so the choice you are making is a real trade and not a guess.
The reference Pi 5 16GB table (29 Aug 2026, 4 threads, prompt pp512 /
generation tg128 in tokens per second):
| model | size | prompt | generation | call |
|---|---|---|---|---|
| Gemma 4 E2B Q4_K_M | 3.5 GB | 29.9 | 6.2 | speed pick |
| Gemma 4 E4B QAT Q4_0 | 5.2 GB | 30.2 | 3.6 | best balance |
| Ornith 1.5 9B (dense) | 5.8 GB | 9.1 | 2.0 | out — dense is slow here |
| Qwen3.6 27B dense IQ2_M | 10.8 GB | 0.7 | 0.5 | out — IQ2 is compute-bound on Pi CPUs |
| Ornith 1.5 35B MoE IQ3_XXS | 13.7 GB | 8.3 | 2.8 | quality untested |
| Qwen3.6 35B MoE Q3_K_S | 15.4 GB | 9.1 | 2.9 | the quality pick, default brain |
Sizes are decimal GB — size / 1e9, the same number the dash shows you and
the same number ls gives for the file. The table grows as models get benched on the device; the menu always shows
whatever the box has measured for itself.
Three guard rails, because this runs while you drive:
Loading is honest about itself: a 14 GB model off a microSD card takes about three minutes, so the dash says so and counts, rather than showing a spinner that means nothing. The estimate is derived from the size of the model actually being loaded.
Underneath it is two endpoints behind the same auth gate as every other route
— GET /api/models for the registry and current state, POST /api/model for a
guarded swap — and the service reads its model from an EnvironmentFile, so
switching is a file write plus a restart rather than an edit to a unit file.
That contract is deliberately small and device-agnostic: it is the first
CodeWatch Fleet
module, and the same two endpoints now answer on other machines in the fleet.
The manufacturer-cloud section reads your car's data through a Home Assistant instance at home. On the road the Pi can't reach your home network, so that section needs a private path back to Home Assistant. The free, own-your-data answer is Tailscale: your Pi and your HA machine join your own encrypted mesh, and the Pi reaches HA at a stable private IP from anywhere — home wifi never exposed to the internet, no subscription, nothing routed through us. Full setup in docs/remote-access.md. (The OBD readings need none of this — they come straight from the car.)
The point of a car that lives in your chat rooms is not a dashboard with a chat box. It is that the car can perceive, remember and speak in the same rooms as your other agents (house, phone, watch, pendant), so things happen without you asking. Petrus's own examples from the launch thread, sorted by the repo's honesty rule: proven happened on the real car, built exists in this repo but has not met the car, enabled is what the architecture makes possible the day the other side has an agent too.
| Use case | What happens | Status |
|---|---|---|
| Ask the car anything, hands free | "What does the yellow tyre light mean?" answered out of the car's speakers from its own manual and live tyre pressures, no internet needed | proven (v0.4 video) |
| The car speaks up | Engine reads, hybrid charge milestones, stored fault codes posted into the family room the moment they happen, only on real events | proven (daily since Aug) |
| Two cars, one family | Each car is its own agent on the same account: the Helsinki E 300e and the Berlin GLE report lock state, tyres, charge and range, read-only | proven |
| Make-safe from the phone | Lock the doors, close a window you left open, from the watch, after the car told you | proven; unlock, open and start are deliberately not implementable |
| Departures and arrivals | The car notices it left home or came back (wifi context, no GPS) and tells the room, so the house can react | built, wiring in progress (#23) |
| Nothing gets lost offline | Everything the car says lands in an on-disk outbox first and is delivered late rather than lost | built (#25) |
| The house warms the car | Your house agent sees you getting ready to leave (calendar, lights, the pendant's leave detector) and tells the car to precondition the cabin, unasked | enabled; preconditioning is the next allowlisted make-safe command |
| The car warms the house | On the way home the car tells the house agent: heating, lights, kettle, no app opened | enabled by the same room the trip posts land in |
| Two strangers' agents negotiate | New city, construction around the block: the car asks the site's agent for a way in, the barrier is opened for ten minutes, both log it | enabled the day the site has an agent; rooms are the common ground, any agent can join one |
| Help you did not ask for | An agent that sees a parts list another agent wrote and starts planning the build; a car that notices its 12 V battery sagging over a week and says so before the morning it will not start | enabled; trend alerts on OBD history are the next grounded step |
More that follow from what the car can already sense (added by the team, same labels):
| Use case | What happens | Status |
|---|---|---|
| Voice note from the wrist | Dictate a question into the room from the watch; the car transcribes it on board, answers in text and in voice, no wake phrase needed | proven |
| "Did I lock it?" | Ask the room from the sofa; the car answers with lock, win |