A video management system you can actually run yourself
TreeAlarm VMS records, stores and plays back video from IP cameras. It talks ONVIF and RTSP to
the cameras, writes the archive as fragmented MP4, streams live video to the browser over WebRTC,
and runs OpenVINO-based detection on top. It is a set of small services that come up with a single
docker compose up.
What it does
- Video walls with synchronised playback — several cameras on one screen, one shared playhead across every cell, a timeline showing exactly where recordings exist.
- Recording on a schedule and on alarm — continuous or pre-alarm modes, with configurable pre-record and post-record windows, so the seconds before an event are kept too.
- Detection with a review gallery — people, faces and vehicles, each event with cropped thumbnails and bounding boxes drawn over live video.
- Full ONVIF control — network discovery, PTZ with presets, encoder and image settings, relay outputs and digital inputs, device time and reboot.
- PTZ auto-tracking — click an object and the camera keeps it in frame, or let the camera pick its own targets around the clock.
- Search by appearance — find the same person, face or vehicle across every camera over any period, starting from a box on screen or an uploaded photo.
- Archive re-compression — finished clips are re-encoded later with the detected objects kept sharp, so the archive takes noticeably less space while plates and faces stay readable.
Install it
Prebuilt images, one compose file, no source checkout needed:
git clone https://github.com/treealarm/ta_install
cd ta_install
docker compose --env-file .env up -d
The web interface comes up on port 5134.
Works with TreeAlarm
TreeAlarm is a map-based monitoring system. Connect the two and your cameras become objects on the map: select a camera, watch it live or scrub its archive, drive PTZ, and receive VMS alarms in the TreeAlarm event stream — all behind a single sign-in.
Licensing
The product is free to use. Source code is available on request — get in touch.