A network video management system for home and power users
  • C# 82.4%
  • Vue 6.1%
  • TypeScript 3.8%
  • Crystal 2.3%
  • Yacc 2.3%
  • Other 3.1%
Find a file
SytheZN 4c796e2ba3
Some checks failed
CI / gate (push) Has been cancelled
CI / build (push) Has been cancelled
CI / changes (push) Has been cancelled
CI / desktop (fedora:latest, linux-arm64, ubuntu-latest) (push) Has been cancelled
CI / desktop (fedora:latest, linux-x64, ubuntu-latest) (push) Has been cancelled
CI / desktop (fedora:latest, win-arm64, ubuntu-latest) (push) Has been cancelled
CI / desktop (fedora:latest, win-x64, ubuntu-latest) (push) Has been cancelled
CI / desktop (osx-arm64, macos-latest) (push) Has been cancelled
CI / desktop (osx-x64, macos-latest) (push) Has been cancelled
CI / android (android-arm64) (push) Has been cancelled
CI / android (android-x64) (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / release (push) Has been cancelled
release: 0.1.1
2026-09-17 23:54:51 +02:00
.config feat: add client core library with API, tunnel, streaming, and UI layers 2026-04-05 22:11:34 +02:00
.github docs: update docs for v0.1 release 2026-09-08 19:49:13 +02:00
docs docs: update docs for v0.1 release 2026-09-08 19:49:13 +02:00
native/ffmpeg fix: make FFmpeg build hermetic and drop unused VDPAU 2026-04-18 14:02:36 +02:00
scripts refactor: extract shared codec helpers and make Thumbnail self-documenting 2026-09-05 19:50:13 +02:00
src fix: close resource leaks, bound fan-out caches, and clean up stale state on camera removal 2026-09-17 23:50:50 +02:00
tests fix: close resource leaks, bound fan-out caches, and clean up stale state on camera removal 2026-09-17 23:50:50 +02:00
tools feat: add MotionGridH26x analyzer and MotionGrid format plugins 2026-09-05 19:54:20 +02:00
.editorconfig feat: add repo scaffolding, shared models, and plugin structure 2026-03-15 17:04:28 +02:00
.gitignore chore: add project scaffolding and refactor plugin paths 2026-04-03 16:24:20 +02:00
build-ct.sh feat: ship platform-native desktop installers 2026-04-18 23:14:42 +02:00
build.sh refactor: extract shared codec helpers and make Thumbnail self-documenting 2026-09-05 19:50:13 +02:00
CHANGELOG.md release: 0.1.1 2026-09-17 23:54:51 +02:00
CODE_OF_CONDUCT.md docs: revise architecture for derived streams and plugin-scoped config 2026-04-27 00:57:14 +02:00
CONTRIBUTING.md docs: revise architecture for derived streams and plugin-scoped config 2026-04-27 00:57:14 +02:00
coverage.runsettings feat: refactor decode pipeline into backend/renderer abstractions 2026-04-18 13:19:11 +02:00
Directory.Build.props chore: add CI/CD pipeline, Docker packaging, and release tooling 2026-04-06 16:29:25 +02:00
Directory.Packages.props feat: add preferred stream quality and fix feed-start race 2026-08-24 22:33:19 +02:00
docker-compose.yml feat: add remote access configuration and configuration-required gate 2026-04-19 20:57:47 +02:00
LICENSE chore: add project scaffolding and refactor plugin paths 2026-04-03 16:24:20 +02:00
nuget.config feat: add FFmpeg video decoding pipeline and upgrade to Avalonia 12 2026-04-17 19:54:59 +02:00
README.md docs: update docs for v0.1 release 2026-09-08 19:49:13 +02:00
Solution.NoMobile.slnx feat: add MotionGridH26x analyzer and MotionGrid format plugins 2026-09-05 19:54:20 +02:00
Solution.slnx feat: add MotionGridH26x analyzer and MotionGrid format plugins 2026-09-05 19:54:20 +02:00

SimpleVMS

CI Release Pre-release Container License

A network video management system for home and power users. Supports up to 32 cameras on a single node with no transcoding, minimal resource usage, and first-class ONVIF support.

Note: This project is under active development and APIs may change without notice.

Web UI screenshot

Highlights

  • Zero transcoding - video passes through as raw data units
  • Compressed-domain motion detection - motion vectors and skip flags are read from the H.264/H.265 entropy layer; no frames are ever reconstructed
  • Single port access - all native client communication (API, live video, playback, events) multiplexed over one TCP/TLS port
  • Plugin-first architecture - capture, storage, formats, analytics, auth, and notifications are all behind extension point interfaces with no privileged internal code paths
  • Cross-platform clients - native desktop (Windows, Linux, macOS), mobile (Android), and web UI
  • Mutual TLS - clients authenticate with certificates signed by a server-generated root CA; revocation is immediate
  • Network-storage-safe - sequential writes, no mmap, no flock; runs directly against NFS or SMB mounts
  • CPU-only by default - runs efficiently on hardware without a GPU

Documentation

See the docs/ directory for architecture, deployment, API reference, protocol specification, and more.

Getting Started

Install

Every release ships:

  • Server tarball for Linux x64, or the container image via the included docker-compose.yml
  • Desktop installers: Windows installer, macOS DMG, Linux AppImage
  • Android APK

Build from source

Requires the .NET 10 SDK and Node.js 22+ for the web UI.

./build.sh build     # build
./build.sh test      # run tests

Packaging scripts for each platform are under scripts/publish/.

Run

./out/server/Server
./out/server/Server --data-path /mnt/nas/data

On first run, the web UI at http://localhost:8080 serves a setup wizard to configure the data provider and generate certificates. After setup, discover cameras or add them manually.

See Deployment for Docker Compose, systemd, and other installation methods.

Technology Stack

Component Technology
Server .NET 10, ASP.NET Core (Kestrel)
Transport TCP + TLS 1.3 (SslStream), mutual TLS
Serialization MessagePack (tunnel framing), JSON (API bodies)
Database Pluggable via IDataProvider (SQLite included)
Web UI Vue.js 3 + Vite
Native clients Avalonia UI + FFmpeg

Contributing

See CONTRIBUTING.md for guidelines on submitting changes, issues, etc.

License

This project is licensed under the MIT License.