All ten
CB

CameraBridge

Self-hosted camera platform

Architecture, API, web UI, AI worker, home deployment

Private — public soon

Consumer cameras keep your footage behind someone else's subscription. CameraBridge turns cameras you already own into a system you control: live view in the browser, motion clips archived to your own storage, a searchable timeline, labelling that runs locally, and smart-home automation — without a cloud plan, and without the footage leaving the house.

Web UIAPIAI workerHome Assistant / MQTT
locallabelling, nothing uploaded
0subscription
anyvendor, one adapter
self-hostedon hardware you own

Screens

Web UI our API camera domain vendor-free adapter Blink · RTSP next vendor AI worker local labels NAS archive every motion clip MQTT Home Assistant Runs on hardware you own · nothing leaves the house
Provider-neutral adapter chain

Key engineering

vendor-neutral adaptersrate-limit disciplinelocal video inferencearchival pipelinesmart-home integrationenforced module boundaries

Under the hood

Architecture

A module-first backend with camera vendors behind a provider contract, so supporting a different kind of camera is an adapter rather than a rewrite. Inference runs as its own worker alongside the API, never inside the request path.

Data & state

Local, all of it — an embedded database for the timeline, clips on storage the owner controls. Nothing leaves the machine, which is the product rather than a setting.

Runs on

A single self-hosted deployment on modest home hardware, sized for a machine with no dedicated GPU. Module boundaries and coverage gates are enforced by the build rather than by review.

Operational risk

The dependencies are consumer devices that never agreed to be integrated, so the client layer backs off and stays within polite limits — a platform that overwhelms the hardware it depends on has broken itself. Credentials and footage never transit anything the owner does not own.

Stack

Backend
HonoDrizzleSQLiteZodpinomodule-first layering
Frontend
ReactTanStack Router / Query / FormTailwind v4 tokensCVARadix
Media & AI
stream handlinglocal vision modelsclip archival
Integration
MQTTHome Assistantprovider-contract package
Ops
Docker Composeself-hosted deploymentenforced module boundariesVitest coverage gates

What it took

  • Vendor-neutral from the first commit. The camera brand is an implementation detail behind a contract, so supporting a different kind of camera is an adapter rather than a rewrite.
  • Written for modest hardware. It runs on a home server rather than a workstation, so the vision work was sized to what such a machine can sustain instead of assuming a GPU.
  • Polite to systems that never asked for it. Talking to consumer devices means strict rate discipline and graceful backoff, so the platform never becomes a problem for the hardware it depends on.
  • Privacy is the architecture. Footage and credentials stay on storage the owner controls and labelling runs locally, because sending the video elsewhere is exactly the thing being replaced.