iCAD Dispatch is a Progressive Web Application (PWA) that processes audio inputs from a police scanner application and triggers alerts based on tones found in the audio.
curl -sL https://raw.githubusercontent.com/renfrewcountyscanner/icad_dispatch_v2/main/setup.sh | bashThis script will:
- Create the required user/group
- Set up directory structure
- Create configuration
- Start the container
# Clone the repository
git clone https://github.com/renfrewcountyscanner/icad_dispatch_v2.git
cd icad_dispatch_v2
# Copy and edit environment file
cp .env_example .env
nano .env # Edit with your settings
# Start the application
docker compose up -d
# Access at http://localhost:9911
# Default login: root / changeme123- User System Access Control - Create users with per-system permissions (read/write)
- Tone Hits: Up to 1000 Entries - Increased page size for large datasets
- Version Display - Current version shown in footer
- Tone Detection - Two-tone, long tone, hi/low, pulsed, DTMF, and MDC support
- Trigger System - Custom alerts based on detected tones
- Audio Processing - WebRTC VAD, transcriber, and audio normalization
- Multiple Radio Systems - Support for multiple scanner systems
- Notifications - Pushover, Discord, Telegram, Email, n8n webhooks
- Post-Tone Delay - Trim audio after tones are detected
- Live Audio Streaming - Real-time audio playback
- Session-based authentication
- Role-based access control (admin, user)
- Non-root Docker container
- CSRF protection
- Linux: Developed on Debian. Other distros should work.
- Docker: Install Docker
- Git: Install Git
The recommended way to deploy:
git clone https://github.com/renfrewcountyscanner/icad_dispatch_v2.git
cd icad_dispatch_v2
# Edit configuration
cp .env_example .env
nano .env
# Start (pulls image from GHCR)
docker compose up -d| Variable | Description | Default |
|---|---|---|
LOG_LEVEL |
1=DEBUG, 2=INFO, 3=WARNING, 4=ERROR | 2 |
TIMEZONE |
IANA timezone | America/New_York |
BASE_URL |
Public base URL | http://localhost:9911 |
SESSION_COOKIE_SECURE |
Use HTTPS cookies | False |
SESSION_COOKIE_DOMAIN |
Cookie domain | (server IP) |
SQLITE_DATABASE_PATH |
Database path | var/icad_dispatch.db |
ROOT_USERNAME |
Admin username | root |
ROOT_PASSWORD |
Admin password | (required) |
- 9911 - Main application port
./log- Application logs./var- SQLite database./audio- Stored audio files
As of v2.5, iCAD Dispatch supports granular user permissions:
- Admin Users - Full access to all systems and user management
- Standard Users - Can be assigned to specific radio systems
- Permission Levels:
- Read - View system data, cannot make changes
- Write - Full access to assigned systems
- Log in as admin
- Navigate to Admin section
- Create new users and assign systems/permissions
cd /opt/icad_dispatch
sudo ./setup.sh --updatecd icad_dispatch_v2
docker compose pull
docker compose up -d# Check logs
docker logs icad_dispatch
# Common issues:
# - Port already in use: Change port in docker-compose.yml
# - Permission errors: Ensure directories are owned by icad_dispatch user# Backup database
cp var/icad_dispatch.db var/icad_dispatch.db.backup
# Check logs for migration errors
docker logs icad_dispatch | grep -i migration# Check permissions
ls -la audio/
# Should show: icad_dispatch:icad_dispatch
# Fix if needed
sudo chown -R icad_dispatch:icad_dispatch audio# Reset root password in .env
ROOT_PASSWORD=your_new_password
# Restart container
docker compose restart- Issues: GitHub Issues
- Discussions: GitHub Discussions
Contributions are welcome! Please read the CONTRIBUTING guidelines before submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- Developed for scanner enthusiasts and emergency services
- Thanks to all contributors!