Updates

What we shipped, fixed, and figured out.

CrumbVMS is built in the open. Every meaningful change ends up here: releases, design notes, audits, and the bug-of-the-day. Subscribe via RSS or watch the repo on GitHub.

2026 August

Shipped

v0.2.0: the Home Assistant half-build, finished

Crumb could put a Home Assistant entity's state on the live wall, but you could not do anything with it, and setting the links up was a thin, awkward surface. v0.2.0 rebuilds the authoring layer and makes the badges interactive: tap a light, drag a slider, read a sensor's real value off the frame. Plus adaptive live-wall quality on every client and human-readable plate names.

BackendDesktopAndroidiOSWeb
releasehome-assistantlprlive-wall

2026 July

Shipped

v0.1.1: a hardening pass, run by an adversarial audit program

v0.1.1 is a hardening release. An intensive multi-model audit swept the recorder, the API, every client, and the seams between them, finding each issue, trying to disprove it, then fixing it. Sixty-plus changes, almost none of which change what Crumb does, all of which change how much you can rely on it.

BackendDesktopAndroidiOSWeb
releasesecurityreliabilityaudit
Shipped

One-page plate report, exported to PDF from the desktop

Any single plate sighting exports as a clean one-page PDF from the desktop client, with the plate, the time, the camera, the full frame plus crop, and a recent-sightings dossier. For handing a sighting to someone without screenshotting the app.

Desktop
lprexportreports
Shipped

Home Assistant entity badges, painted on the live video

Link a camera to your Home Assistant entities and drag their live state onto the video as badges. Self-hosted, REST-polled, configured in the console. State honesty is built in.

BackendDesktop
home-assistantoverlayintegrations
Shipped

First-run alpha tester terms acceptance gate

New installs now present the Alpha Tester Terms and responsible-use guide before the setup wizard proceeds. One checkbox, no lawyer-speak, sets the tone for what "pre-release" means.

Backend
setuplegal
Shipped

Android signed-release CI pipeline

Push a version tag and CI builds, signs, and publishes the APK with a SHA-256 checksum on the GitHub Release. Fully automated, keystore held as a CI secret.

AndroidCI
releaseci
Shipped

License-plate recognition, two engines, all local

Crumb now keeps a searchable, camera-scoped database of the plates it sees, with two OCR engines you pick per camera. Both run on your own box, no cloud, no GPU.

BackendDesktopWeb
lprdetectionprivacy
Shipped

Stack consolidation: 4 containers, done

go2rtc is now embedded in the recorder, db-backup folded into the api, mosquitto profile-gated. The default stack is postgres + api + recorder + autoheal. Simpler to run, fewer things to break.

BackendDevOps
architecturedeploy
Shipped

Security hardening: fail-closed media auth + scoped tokens

Media endpoints now reject full login JWTs via ?token= (scoped short-lived claims only), web-console snapshots use properly scoped tokens, and a router-walk test asserts every protected route rejects unauthenticated requests.

Backend
securityauth

2026 June

Built

Auto-hotspot tile that follows motion

A wall tile that can auto-follow the most-recently-moved camera in a configured set, with a 4-second dwell. Like the spotter in a security room, without the security room.

Desktop
live-wallui
Shipped

Customizable on-video PTZ panel

Place ONVIF d-pad, zoom, home, focus, iris, and preset buttons anywhere on a PTZ camera's live tile. Resizable, snap-aligning, renamable, per-camera.

Desktop
ptzuionvif
Shipped

ONVIF focus + iris control (Imaging service)

New `POST /cameras/:id/imaging` endpoint drives ONVIF focus near/far, autofocus, and iris from the desktop PTZ tile. Verified on a Uniview LPR camera.

BackendDesktop
ptzonvifimaging
Shipped

"Find my server" auto-discovery on login

New users can tap "Find my server" on the Android login screen and CrumbVMS subnet-scans for `/health`. No IP-typing, no mDNS quirks, no router config.

Android
setuponboarding
Shipped

AI-assisted install runbook

`docs/AI-INSTALL.md` is a step-by-step runbook that an AI coding assistant can follow to install CrumbVMS securely on a host. LAN-only, generated secrets, a verify check after every step.

Backend
setupdocs
Shipped

First-run setup wizard

New deployments now get a guided web wizard: admin account, server address, storage, first camera, optional Frigate. Existing installs aren't disrupted; you can preview the wizard from settings.

BackendWeb
setuponboarding
Shipped

Clip motion-highlight + pinch-zoom

Clips auto-zoom to the motion bounding box for the first few seconds, then ease back out. Pinch-zoom on top for the parts that matter.

BackendDesktopAndroidWeb
clipsui
Shipped

Power benchmark: CPU motion decode beats NVDEC by 30%

Controlled A/B at the wall meter. NVDEC cost an extra 32 W (105 W vs 73 W) for the same 11 fps-capped sub-streams. CPU wins at this scale; VAAPI and an admin-selectable decode mode shipped alongside.

Backend
performancegpupower
Designed

Distributability audit and the 6-phase roadmap

Ran a 42-agent audit on "what would a stranger need to install this." Verdict: not distributable yet. Wrote a 6-phase roadmap aimed at zero hand-editing. A lot of Phase 0 has since shipped.

Backend
opsroadmap
Shipped

Motion threshold that learns the scene

Replaced the fixed motion threshold with a percentile-over-decaying-histogram floor and a diurnal EMA. The detector adapts to each scene over time. No more 3 AM false triggers from wind in the trees.

Backend
motionaccuracy
Shipped

Pluggable motion detection with five built-in algorithms

Motion detection is now a trait with five implementations (Census default, FrameDiff, MOG2, Optical Flow, Ensemble) plus a Frigate-as-source option. Per-camera selection. A golden-replay benchmark ships with the recorder.

Backend
motionarchitecture
Shipped

Footage reliability audit

A 48-agent audit of every code path that could lose footage. Verdict: footage is roughly 80% solid. Found three real problems including a missing automated backup. The most uncomfortable finding is the most important to publish.

Backend
reliabilityops
Shipped

Named retention policies and camera groups

Storage rules used to be per-camera. Now you can name a policy (retention, motion mode, recording profile) and attach a group of cameras to it. Per-camera overrides still work for edge cases.

BackendWeb
storagepolicies
Designed

33-agent system audit

First major architectural audit. 33 agents in parallel asked "what's working, what's missing, what would a serious operator notice." The direction was right; the gaps were in operations and reliability, not in the architecture.

BackendDesktopAndroid
auditarchitecture

Follow along on GitHub.

Watch or star the repo to catch releases, file bugs in Issues, and talk shop in Discussions. Or grab the RSS feed. No mailing list.

Get it on GitHub

crumbvms.com · self-hosted video management