MiBeeNvr
Lightweight self-hosted NVR in Go — single static binary, zero dependencies, embedded web UI. RTSP/ONVIF/Xiaomi/GB28181 cameras, RTMP/SRT/WebRTC push-in ingest, WebRTC/HLS/FLV live view, audio, timelapse, continuous playback, browser-side AI detection. Runs on low-power ARM.
MiBee NVR turns a low power ARM device into a video recorder
A lightweight self hosted network video recorder in Go that runs on small ARM boards and streams, records, and analyzes camera feeds.
A single binary NVR
MiBee NVR is a lightweight, self hosted network video recorder written in Go. The README sells it as turning any low power ARM device into a professional NVR in about sixty seconds, and the design choices back that claim: it is a single static binary with zero dependencies, an embedded web UI, and CGO disabled so it cross compiles cleanly. It is built to run on small hardware, with a stated memory budget of 512 megabytes and validation on a Raspberry Pi 3B as the minimum baseline. The feature set is broad for something that small. It ingests RTSP, ONVIF, Xiaomi, and GB/T 28181 cameras, plus RTMP and SRT push in streams, and it serves live view over WebRTC, HLS, and HTTP-FLV. It records to automatic MP4 segments with per camera retention policies, captures audio in AAC, G.711, and Opus, and supports periodic timelapse and continuous playback with smooth segment chaining. A notable touch is browser side AI detection using ONNX Runtime Web with WebGPU, so inference happens on the client without a backend model server. The no cloud requirement means self hosted operation with no subscriptions and no vendor lock in. For a homelab or small shop, the appeal is a recorder that fits on a Pi class board yet still handles multiple camera protocols and modern low latency streaming.
Setup and streaming protocols
Getting started offers three paths. The recommended one is a one click install script that downloads the binary, creates a system user called nvr, generates a config, installs a systemd service, and starts it, with data kept under /var/lib/mibee-nvr. The second is downloading a pre built binary for AMD64, ARM64, or ARMv7 and running init then the binary, after which the web UI opens at localhost:9090. The third is Docker Compose, also exposing the UI on localhost:9090, with a volume mount for storing recordings on an external drive. A source build uses make build then the same init and run steps. The supported protocol table is explicit about direction and status. Cameras feed the NVR over RTSP, HTTP JPEG, RTMP ingest, SRT ingest, ONVIF, Xiaomi, and GB/T 28181. The NVR feeds browsers over HLS with low latency HLS support, WebRTC using WHEP for sub second latency, and HTTP-FLV. Push out relay to remote targets uses native Go for RTMP and RTSP. ONVIF brings discovery, pan tilt zoom control, and stream URI management. The Xiaomi path covers the CS2 plus legacy TUTK models with cloud auth, and GB/T 28181 is an experimental SIP platform where cameras register, with catalog, talk, alarms, and playback. Every protocol listed is marked done.
Smart features and integrations
Beyond raw recording, MiBee NVR adds smart and integration features. The browser side AI detection runs on ONNX Runtime Web with WebGPU and needs no backend inference, which keeps the server light. Audio recording and live preview cover G.711 in both law forms and Opus. Multi layer camera health monitoring with auto remediation handles connection issues, and a server sent events system pushes real time events. Management comes through a Svelte 5 web UI with dark and light themes, a REST API for automation, BasicAuth with bcrypt hashed passwords, and Prometheus metrics. Integrations include MQTT triggers for recording, a WebDAV server for file access, an FTP server for remote uploads, and FFmpeg hardware transcoding, all on an event driven architecture. Discovery uses mDNS and a UDP responder with a stable device id in the health endpoint. Images are published to ghcr.io/mi-bee-studio/mibeenvr under tags for the exact version 0.11.0, the minor track 0.11, the major track 0, and latest. On licensing, the project is AGPL-3.0-only with a linking exception for the pkg directory so third party programs can build on the extension interfaces without triggering AGPL obligations; running and watching are unrestricted, while modifying and distributing requires AGPL. Releases up to v0.10.1 were MIT licensed, and that still applies to those versions.
Editorial conclusion
MiBee NVR is licensed under AGPL-3.0-only by Mi&Bee Studio, with a linking exception for its pkg directory, and it is written in Go.
Community notes