Modern native video surveillance management system for professionals
Download Release β’ Documentation β’ Report Bug
- Automatic ONVIF camera discovery in local network
- Multiple protocols support: ONVIF, RTSP, OpenIPC, Hikvision, Dahua
- Two connection modes: direct RTSP and MediaMTX integration
- Camera grouping and organization
- Secure credential storage with encryption
- Multi-grid layouts: from 1 to 64 cameras simultaneously
- Customizable templates with tab system
- Drag & Drop camera management
- Fullscreen mode and detailed viewing
- Individual cell settings (audio, pause, recording)
- Interactive timeline for recording navigation
- Calendar interface for search
- Video clip export functionality
- Activity statistics and charts
- Event log with filtering and search
- Native application without browser limitations
- Local data processing without cloud dependencies
- AES-256 password encryption
- Low resource consumption thanks to Rust/Tauri
- Download the latest release for your OS
- Install the application (Windows:
.msi, macOS:.dmg, Linux:.deb/.AppImage) - Launch VMS Dashboard
- Add cameras: use ONVIF auto-discovery or add manually
- Create layout: drag cameras to monitoring grid
- Configure recording: set schedule and archive parameters
- Start monitoring: enjoy professional video surveillance!
- Node.js 18+
- Rust 1.70+
- Platform-specific dependencies (see Tauri Prerequisites)
- Node.js 18+ - Download
- Rust 1.70+ - Install
- Python 3.6+ - Download
- Platform-specific dependencies (see Tauri Prerequisites)
# Clone repository
git clone https://github.com/OpenIPC/dashboard.git
cd dashboard
# Install dependencies
npm install
# Download MediaMTX binaries (required for builds)
npm run download-mediamtx
# (Optional) Download bundled GStreamer runtime for Linux AppImage builds
npm run download-gstreamer
# Run in development mode
npm run tauri
# Build release for current platform
npm run build-release# Build for Windows (from any platform)
npm run build-windows
# Build for Linux (from any platform)
npm run build-linux
# Build for macOS (from any platform)
npm run build-macos
# Build debug version
npm run build-debug
# Only download MediaMTX binaries
npm run download-mediamtx
# Only download the optional GStreamer runtime bundle
npm run download-gstreamer# Using PowerShell (Windows)
.\tools\build.ps1 --platform windows
# Using Bash (Linux/macOS)
./tools/build.sh --platform linux
# Using Python directly
python tools/build.py --platform macos --debugnpm run download-gstreamerstages a redistributable runtime when one is available.- If no bundle is found, Linux builds rely on the target system's GStreamer installation.
- Provide custom artifacts with
GSTREAMER_BUNDLE_URL(URLs) orGSTREAMER_BUNDLE_ARCHIVE(local file) before rerunning the download script.
- Windows:
.msiinstaller insrc-tauri/target/release/bundle/msi/ - Linux:
.debpackage and.AppImageinsrc-tauri/target/release/bundle/ - macOS:
.dmginstaller insrc-tauri/target/release/bundle/dmg/
For creating distributable releases:
# Prepare all platform binaries
npm run download-mediamtx
# Build release installers
npm run build-release
# For other platforms (requires platform-specific setup)
# npm run build-windows # Windows MSI
# npm run build-linux # Linux DEB + AppImage
# npm run build-macos # macOS DMGSee Build Guide for detailed build instructions and Release Process for creating releases.
You can trigger builds manually without committing code:
- Go to: GitHub Actions
- Select: "Build and Test" workflow
- Click: "Run workflow"
- Choose platform:
all- Build for all platforms (Windows, Linux, macOS)windows- Build only for Windowslinux- Build only for Linuxmacos- Build only for macOS
This allows you to test builds on different platforms without automatic triggering on every commit.
For official releases, push a version tag:
git tag v1.0.0
git push origin v1.0.0This automatically builds and creates a GitHub release with installers for all platforms.
dashboard/
βββ src/ # React frontend
β βββ components/ # UI components
β βββ contexts/ # React contexts
β βββ services/ # API services
β βββ types/ # TypeScript types
βββ src-tauri/ # Rust backend
β βββ src/ # Core code
β βββ mediamtx/ # MediaMTX integration
β βββ capabilities/ # Tauri permissions
βββ docs/ # Documentation
- OS: Windows 10, macOS 10.15, Ubuntu 18.04
- RAM: 4 GB
- CPU: Dual-core 2.0 GHz
- GPU: H.264 decoding support
- Network: 100 Mbps for local cameras
- RAM: 8+ GB
- CPU: Quad-core 3.0+ GHz
- GPU: Discrete with hardware decoding
- Network: Gigabit Ethernet
- Storage: SSD for recordings
We welcome community contributions! Please:
- π΄ Fork the repository
- πΏ Create a feature branch (
git checkout -b feature/amazing-feature) - πΎ Commit your changes (
git commit -m 'Add amazing feature') - π€ Push to the branch (
git push origin feature/amazing-feature) - π Create a Pull Request
- π Bug fixes - fixing issues
- β¨ Features - new functionality
- π Documentation - improving docs
- π Translations - UI translations
- π§ͺ Testing - writing tests
This project is licensed under the MIT License. See LICENSE for details.
- π Issues - bug reports and feature requests
- π¬ Discussions - general questions and discussions
- π Wiki - detailed documentation
- Email: [email protected]
- OpenIPC for project support
- Tauri for cross-platform framework
- MediaMTX for streaming server
- Community for testing and feedback
β Star this repo if you find it useful!