What's new
October 2026
These features come from the community roadmap. Each one can be turned on or off where it makes sense (Admin → CAD Settings → Features), and every permission is checked by the API as well as in the interface.
See all updates from October 2026: Updates — October 2026
FiveM framework integration (ESX, QBCore, Qbox): coming by 15 October 2026.
Communication
Radio
A push-to-talk radio built into the CAD. Dispatchers and admins talk from any web browser (a radio
dock on every CAD page, a pop-out window, or the full-screen Dispatch → Radio console). Units
talk in FiveM with the snailycad-radio resource: a handheld in hand, positional audio for people
nearby, earpieces, and dispatch moving units between channels.
- Turn it on in Features → Radio, then add channels in CAD Settings → Radio.
- Works next to any voice script (pma-voice, SaltyChat, TokoVOIP, mumble-voip).
- Other radios and scripts can connect through an open protocol.
See Radio.
Unit messages
On-duty officers and EMS-FD deputies can send each other private messages from their dashboard.
- Open Unit messages next to your active unit. The button shows how many messages are unread.
- Pick an on-duty unit to start a conversation, or continue one from the list.
- Only the two units in a conversation can read it. Messages are never sent to dispatch, the radio or the public chat. Live updates only say that a message arrived; the text is loaded over your signed in session.
- Combined units send from your own officer or deputy in that unit.
Feature toggle: UNIT_PRIVATE_MESSAGES (on by default).
Tone presets
Admins can set up as many tones as they need, and dispatch can play them for a specific audience.
- Admin → CAD Settings → Tones: add a tone with a name, who it's for (LEO, EMS-FD or everyone), an optional department, and a sound. Use Preview to hear it.
- Dispatch → Tones → Play a tone: filter and pick a tone, choose who hears it, add an optional message and press Play tone.
| Play for | Who hears it |
|---|---|
| Everyone on duty | All LEO and EMS-FD dashboards |
| All LEO units / All EMS-FD units | One service |
| Department | Units of that department |
| Unit | One unit |
| Units on a call | Every unit attached to the call |
Built-in sounds (two-tone, long tone, hi-lo, alert beeps, rising chirp) are generated in the browser,
so they work without uploading audio files. A custom sound can be an https:// link to an mp3, ogg
or wav file, or a file in the client's public/sounds folder (for example /sounds/my-tone.mp3).
Playing a tone needs the Dispatch permission and the Tones feature.
Mini-CAD
A compact panel that stays on top of the LEO and EMS-FD dashboards, for when the CAD runs next to the game.
- Turn it on with the Mini-CAD button on your dashboard.
- It shows the latest active 911 call, how many units are attached, and lets you move between calls and attach or detach.
- Default keys: ← previous call, → next call, ↑ attach. Change them with the gear icon, where you can also move the panel to another corner.
- Keys are ignored while you type or when a window is open. Settings are saved in your browser, so every player can set their own.
Administration
Update the CAD from the dashboard
Admin → Dashboard → Update CAD shows the running version and how far behind it is, and the owner can start an update with one click on Linux servers that run the CAD as a systemd service.
UPDATE_MODE | What it does |
|---|---|
git (default) | The standalone update: stash, pull, install, build, restart |
docker | The Docker update: pull, build the images, up -d |
local | No pull: rebuilds and restarts with the files already on the server |
UPDATE_BRANCH (default main) picks the branch to pull. On Windows, inside Docker, or without
systemd, the card shows the update commands to run yourself instead.
Build progress page
When you start the CAD with start.sh, the client port shows a progress page with a filtered live
log while the CAD installs, builds or restarts, instead of a connection error. It refreshes by itself
and opens the CAD when it's ready. Only known progress lines are shown and credentials are masked; the
raw log is never served.
start.sh also skips install and build when nothing changed since the last successful build, which
makes restarts much faster. Flags: --force-build, --force-install, --no-build.
Custom locales
Admin → CAD Settings → Custom Locales lists every language with how complete it is. You can add a language (copied from an existing one), fill in missing files, set the default and remove custom languages, then Apply & rebuild.
On Windows, in Docker, or without systemd the CAD can't restart itself: the page shows the commands to run instead, and in Docker the languages are managed on the host.
Recovery tools
A recovery token is created on first start and shown once to the owner on the admin dashboard. Use it
on /auth/recovery to get back in when you're locked out. See Recovery tools.
In Docker, set RECOVERY_TOKEN_FILE to a mounted folder so the token survives image rebuilds.
More admin tools
- Duty hours: per user, department and week, with sessions you can correct (Admin → Manage → Duty hours).
- Citizen claims: players can ask to take over an existing civilian; admins approve or deny.
- Prune citizens: filter, preview, export and then delete citizens in bulk.
- Permissions: nobody can grant permissions they don't have themselves. New
ManagePendingUsers,ManageOfficerRankandManageOfficerCallsignpermissions. - Discord webhooks: 11 more webhook types (registrations, bans, BOLOs, warrants, calls, citizens, expungements, tow and taxi).
Units and records
- Officers with
ManageCallHistorycan edit and end calls; dispatch can end calls in bulk. - EMS-FD incidents have report types (medical, fire, fire investigation, inspection) and their own
ManageEmsFdIncidentspermission. - Citizens have aliases and drug tests sections.
- Linking incidents searches all incidents, not just the first page.
Demo mode
For public demos: set DEMO_MODE=true in .env.
| Variable | Default | |
|---|---|---|
DEMO_MODE | false | Turns demo mode on |
DEMO_USERNAME | demo | Demo owner account, shown on the login page |
DEMO_PASSWORD | demo1234 | Its password |
DEMO_RESET_MINUTES | 10 | How often all data is reset |
On first start the CAD takes a snapshot of the data. Every reset puts everything back to that snapshot
in one go, and a countdown is shown on the login page and in the CAD. The demo account can't be
renamed, banned, demoted, deleted or have its password changed. To take a new snapshot, delete
apps/api/.demo-baseline.sql and restart the API.
Demo mode needs the database client tools on the server: pg_dump/psql for PostgreSQL, or
mysqldump/mysql (mariadb-dump/mariadb) for the MySQL edition.
Look and feel
- A refreshed dark interface with a grouped, searchable admin sidebar and a new admin dashboard.
- A What's new popup after sign-in, which can be reopened from the account menu.
- An optional modern citizen theme (
MODERN_CITIZEN_THEME).