Dispatch Panel

Setup and usage guide for the Tommy's Radio dispatch panel.

Desktop AppWeb Interface

Overview

The dispatch panel is a real-time communication management interface for dispatchers. It connects to your radio voice server and provides full control over zones, channels, units, alerts, and voice transmission.

The panel is served directly by your radio server at http://your-server-ip:port/ and can be accessed from a web browser or the dedicated desktop app.

Dispatch Panel Interface


Accessing the Panel

There are two ways to use the dispatch panel:

Desktop App (Recommended)

  • Automatic microphone access (no HTTPS required)
  • Global push-to-talk with any key or mouse button
  • Auto-updates when the server updates
  • Download from the Settings page of the panel, or from http://your-server-ip:port/radio/dispatch/installer

Web Browser

  • No installation required
  • Microphone requires HTTPS or a Chrome flag
  • PTT limited to keyboard key T (no global capture)
  • Open http://your-server-ip:port/ in your browser

Desktop App Setup

Download and install

Open the dispatch panel in your browser at http://your-server-ip:port/. Go to Settings and click Download under Desktop App. Run the installer.

Alternatively, navigate directly to http://your-server-ip:port/radio/dispatch/installer to download.

Configure the endpoint

On first launch, the app will ask for your server endpoint. Enter http://your-server-ip:port and click Save.

Login

Enter your dispatchNacId from config.lua (default: 141). If Discord auth is enabled, click the Discord login button instead.

The desktop app automatically updates when the server version changes. If a version mismatch is detected, an Update button appears in the header bar.

Web Browser Setup

Browsers block microphone access on HTTP pages. To use voice transmission in the browser, you need one of:

MethodUse Case
Chrome flagDevelopment / local testing. Set chrome://flags/#unsafely-treat-insecure-origin-as-secure to your server URL. Guide
HTTPS reverse proxyProduction. Set up SSL with Nginx or Apache in front of your server.

Without one of these, voice transmission will not work. The panel will show a Mic denied warning with a link to download the desktop app.


Authentication

NAC ID (Default)

The dispatch panel uses a NAC ID as a password. Set it in config.lua:

config.lua
dispatchNacId = "141",  -- Change this to a secure value

Discord OAuth

Replace NAC ID authentication with Discord login. Only members of your Discord server (optionally filtered by role) can access the panel.

Enable in config

Set useDiscordAuth = true in config.lua.

Create Discord application

Go to the Discord Developer Portal and create a new application.

Add redirect URI

In your app's OAuth2 settings, add this redirect URI:

http://your-server-url:port/radio/dispatch/auth

Configure environment

Create server/.env (copy from server/.env.example):

server/.env
DISCORD_CLIENT_ID="your_discord_client_id"
DISCORD_SECRET="your_discord_secret"
DISCORD_GUILD_ID="your_discord_guild_id"
DISCORD_ROLES=""              # Comma-separated Role IDs, or "" for all members
DISCORD_REDIRECT_URI=""       # Leave empty unless using a reverse proxy

Getting Discord IDs

Enable Developer Mode in Discord (User Settings > Advanced) to copy Server/Role IDs by right-clicking. Leave DISCORD_ROLES empty to allow all server members.


Panel Features

Zones and Channels

The panel displays your radio zones as collapsible sections, each containing their channels. Each channel shows:

  • Connected units with their callsigns
  • Listener count (users scanning the channel)
  • Active transmissions highlighted in real time

Unit Management

Drag & Drop

  • Drag users between channels to reassign them
  • Drag your own name to switch channels
  • Reorder channels within zones

Context Menu

  • Click the hamburger menu on a user to:
    • Disconnect them from radio
    • Send a direct alert
    • Set their in-game callsign (if callsign system is enabled)

Voice Transmission

Hold T (default) or click and hold the PTT button to transmit. The dispatch panel uses the same voice server as in-game radios — dispatchers hear the same P25/analog FX processing that players do.

The PTT key is configurable in Settings. The desktop app supports any keyboard key or mouse button for PTT, with global capture (works even when the app is not focused).

Alerts and Tones

Dispatch Alert

  • Channel alerts — Send alert tones to specific channels
  • Unit alerts — Send alerts directly to individual dispatchers
  • Panic alerts — View and manage active emergency alerts
  • Broadcast — Send system-wide announcements to all connected players
  • Custom tones — Configure alert tones in client/radios/default/tones.json

Transmission Log

The panel keeps a running log of all radio transmissions with timestamps, frequencies, and caller IDs. The log can be:

  • Filtered by channel or zone
  • Collapsed to save screen space
  • Popped out into a separate window (desktop app only)

Settings

SettingDescription
PTT KeyKey or mouse button for push-to-talk
SFX VolumeVolume for alert tones and UI sounds
Voice VolumeVolume for incoming voice transmissions
ThemeVisual theme for the panel
Transmission LogToggle and filter the TX log
Auto-collapse ChannelsCollapse empty channels automatically
EndpointServer URL (desktop app only)

On this page

Need help?

Ask on Discord