Argus is an edge-optimized Tesla Dashcam and Sentry Mode manager implemented as a single Go binary with an embedded web UI. It is designed for unattended, in-car operation with low CPU and RAM footprint.
Argus turns a Raspberry Pi into a Tesla-compatible multi-LUN USB storage device while also exposing a local web UI for management:
- Presents TeslaCam/LightShow/Music storage over USB gadget mode
- Supports mode switching between:
- Present mode (Tesla-facing USB gadget)
- Edit mode (RW mounts + Samba/file management)
- Provides a web interface for:
- videos/events browsing
- chimes/lightshows/wraps/music management
- cleanup and analytics
- runtime settings
- Includes unattended reliability features:
- startup boot pipeline
- optional fsck checks
- optional cleanup
- optional random chime selection
- hardware watchdog integration
- AP fallback and Wi-Fi monitoring
- Telegram alerting for Sentry events (when configured)
- Backend: Go (USB gadget, mounts, loops, Samba orchestration, AP/Wi-Fi, Telegram, scheduler)
- Frontend: Next.js static export embedded in the Go binary
- Delivery model: single self-contained executable
- Configuration: single
config.yamlsource of truth
- Raspberry Pi Zero 2 W (primary target)
- microSD with enough space for OS + image files
- Reliable data USB cable (not charge-only)
Argus is intended to run on Raspberry Pi OS Lite for unattended deployments.
- Linux kernel with USB OTG gadget support (
dwc2,libcomposite,configfs) - systemd
- root privileges for setup/system operations
cmd/argus/ Go entrypoint + CLI commands
internal/ API, services, system integrations
web/ Next.js frontend source
config.yaml Reference configuration (see ~/.argus/config.yaml on device)
scripts/ install-argus.sh (one-command install from GitHub)
Makefile Build/test orchestration
argus run [--config path]
argus generate [--output path] [--force]
argus setup [--dir path] [--show-size 10G] [--music-size 32G]
argus upgrade [--yes]
argus remove [--yes] [--keep-images]
argus versionReleases ship a raw Linux binary per architecture (no archive). Names match GoReleaser, e.g. argus_1.2.3_linux_arm64.
curl -fsSL https://raw.githubusercontent.com/ulm0/argus/main/scripts/install-argus.sh | sudo bash
argus generate
sudo argus setupThis installs the latest release binary for your CPU (arm64 / armv7 / armv6). If you prefer not to pipe from the network, clone the repo and run sudo bash scripts/install-argus.sh, or open the releases page and sudo install -m 0755 the argus_*_linux_* file that matches your Pi.
After setup, upgrades on the device are: sudo argus upgrade (same raw binary layout).
| Flag | Default | Description |
|---|---|---|
--dir |
~/.argus/ |
Data directory |
--config |
<dir>/config.yaml |
Config file path |
--show-size |
10G (ARGUS_SHOW_SIZE) |
LightShow image size |
--music-size |
32G (ARGUS_MUSIC_SIZE) |
Music image size |
make deps
make all
make testFrontend dev:
cd web
pnpm devBackend dev:
go run ./cmd/argus run config.yamlAll runtime settings are in ~/.argus/config.yaml.
| Section | Purpose |
|---|---|
installation |
startup behavior, target user, mount dir |
disk_images |
image names, partition toggles, fsck boot option |
network |
web port, Samba password |
offline_ap |
AP fallback behavior |
system |
watchdog + sysctl startup behavior |
telegram |
alerting configuration |
update |
update strategy |
argus setup generates unattended-friendly defaults:
installation.boot_present_on_start: trueinstallation.boot_block_until_ready: trueinstallation.boot_cleanup_on_start: trueinstallation.boot_random_chime_on_start: falsedisk_images.boot_fsck_enabled: truesystem.watchdog_enabled: truesystem.watchdog_timeout_sec: 60(Debianwatchdogdaemon, TeslaUSB-style)system.reapply_sysctl_on_start: true
The Settings page includes a Startup & Reliability section:
- Present on startup
- Block startup until boot pipeline completes
- Boot cleanup
- Random chime on startup
- Boot fsck checks
- Watchdog via Debian
watchdog.service(/etc/watchdog.conf) + timeout - Sysctl profile re-apply on startup
Some changes take effect on next service restart or reboot.
- Multi-LUN presentation for TeslaCam + optional partitions
- RO local mounts in Present mode for safe read access
- RW mounts in Edit mode for management operations
- Safe mode transition sequencing (unmount/loop/gadget orchestration)
- Video browsing and event handling
- Chime management and scheduling
- Lightshow and wraps management
- Music file management (optional partition)
- Cleanup policies and analytics
- AP fallback on connectivity loss
- Wi-Fi status monitoring
- Telegram event queue and delivery
- Optional hardware watchdog (Debian watchdog daemon, like TeslaUSB)
Argus is heavily based on TeslaUSB concepts and workflow.
Huge thanks to the TeslaUSB project and contributors.
See repository files for license information.