ACV Hackathon 2026
Camera, motors, and edge AI in one small chassis — Boxtron doesn’t just watch and move, it talks back with what it sees and what it thinks you should do, from anywhere in the world.
Team – ACV Data Systems
Why we built this
A familiar worry turned into a project idea — if a robot can see and move on its own, why not have it check on the house for you, wherever you are?
Objective โฑ as of 5 min ago
One small robot, one job: be there when you can’t — watching, checking, and helping around the house.
Simple enough to build in a couple of days, useful enough to keep running after.
How it’s built โ๏ธ
No machining, no 3D printing, nothing custom-ordered — just parts you’d find in a junk drawer or an Amazon cart.
An Amazon delivery box, doubled up for strength — free, sturdy, already in the recycling bin
A Raspberry Pi 5 — a full computer the size of a deck of cards
A regular USB webcam — plug and play, no special drivers
One small motor driver board — a few dollars, wires straight to the Pi
A handful of hobby motors and tires — the kind sold for school science projects
A battery pack, off the shelf — nothing custom to charge or regulate it
Put together over a couple of days — simple parts, snapped together, doing something clever.
Built over a couple of days, one side at a time
Behind the scenes
Architecture
Inside the box — motors, driver board, and the Pi 5
What it can do today
Every model runs locally: no cloud, no API key, nothing leaves the machine.
Vision
A YOLO11n detector runs on webcam frames with tracking and a live FPS counter. It is the base for the sentry view in M5.
uv run --extra vision detect-people
Vision
A monocular estimate, not a depth sensor: red boxes for very close, green for far. Runs on the Mac against the Pi's existing stream, so the Pi needs no new dependencies (ADR-0007).
uv run detect-objects --source "http://sentrycar:<password>@sentrycar.local:8080/stream"
M6 · Voice
Push-to-talk. Every model runs locally: no cloud, no API key, nothing leaves the machine.
uv run talk-car
M6 extension · Remote access
A Tailscale mesh gives the Mac a stable HTTPS name; tailscale serve can mount just /m and what it depends on, leaving the desktop console page off the tailnet (ADR-0006). The Mac still reaches the Pi the same way it always has — over the home Wi-Fi, not through Tailscale.
Gotcha: another full-tunnel VPN (NordVPN) running on the Mac at the same time silently breaks Tailscale's coordination-server sync and MagicDNS — quitting it reconnects Tailscale in seconds.
Measured on the Mac (M3 Max)
Cold start matters: the first Whisper call took 16.6 s, every call after took 0.4 s. So the loop warms the models up before the first “press Enter”.
A faster voice cut the spoken reply from 8.7 s to 5.1 s.
Local models
| Model | Job | Pi 5 (7.9 GB, CPU only) | Mac (M3 Max) |
|---|---|---|---|
| MiniCPM-V 1B | eyes | 3.9 s, correct | 1.4 s, correct |
| Gemma 4 8B | brain | too big: 9.6 GB model | 0.6 s |
| Qwen 3.5 0.8B | brain | 11 tok/s, chatty toy | not needed |
| Moondream | eyes | wrong: invented flowers | wrong, same answer |
| Whisper small.en | ears | tiny/base installed, not timed yet | 0.4 s |
So the Mac is the brain for now, and the Pi is the body: camera, mic, speaker and motors.
What we learned
| What happened | What we did |
|---|---|
| The official Ollama installer 404’d on the Pi | Unpacked the release by hand and added a systemd service |
| Piper produced no audio | It broke when installed under a very long path; a short path fixed it |
| A webcam capture command hung for 5 minutes | ffmpeg waited for 15 output frames; -update 1 fixes it |
| The mic took 1.5 s to open, so first words were lost | The listening blip now plays once audio is really flowing |
| Vision made up a battery level of 92% | The persona now says it has no sensors and refuses to invent numbers |
Demo
Limitations, today
โ hackathon-tiredNext
Wi-Fi driven, watches and reports — no arm yet, still cable-powered
Battery power for untethered runs, plus a robot arm to lend a hand
An LLM agent in charge — noticing, deciding, and acting on its own
Before we go
Prep work the plan allowed before the clock started — just parts, nothing built.
Everything else — wiring, code, voice, remote access, and this deck.
Everything runs locally — no cloud, no API keys.
Boxtron
Questions?