Updates — October 2026
What's different from the original SnailyCAD
| Original SnailyCAD | This edition |
|---|---|
| PostgreSQL only | MySQL 8 or MariaDB 10.6+, with tools to move a PostgreSQL CAD over |
Install by hand: Git, Node.js, pnpm, database, .env | One command on Ubuntu, then a setup wizard in your browser (Docker or standalone) |
| No radio | Radio built in: browser radio for dispatch, FiveM resource for units |
| Update from the terminal | Update CAD button on the admin dashboard, with a progress page while it builds |
| Login page links to snailycad.org | Login page notice you write yourself |
- MySQL / MariaDB support: run the CAD on MySQL 8 or MariaDB 10.6+ instead of PostgreSQL.
- Move from PostgreSQL: copy an existing CAD over with
pnpm convert:postgresor from CAD Settings. - One-line installers: one command on Ubuntu, Docker or standalone, finished in a browser setup wizard.
- Uninstaller: removes everything the installer added.
- Update CAD button: update from the admin dashboard; the site shows a progress page while it builds.
- Built-in radio: push-to-talk for dispatchers and admins on every CAD page, with a pop-out window; listen to many channels, talk on one.
- FiveM radio resource: units talk in game on Caps Lock, with a handheld, positional audio, earpieces and support for pma-voice, SaltyChat, TokoVOIP and mumble-voip.
- Tone presets: dispatch plays alert tones to everyone, a department, a unit or a call.
- Unit messages: private messages between on-duty units.
- Mini-CAD: a small floating panel with the latest 911 call.
- Recovery tools: get back into the CAD if you're locked out.
- Login page notice: tell players to ask your staff for help, not SnailyCAD.
- Demo mode: run a public demo CAD that resets itself.
- New look: refreshed dark interface, searchable admin sidebar and a new admin dashboard.
About this page
This page lists every update made to SnailyCADv4 (community release and MySQL/MariaDB edition) as of 11 October 2026. It is written for CAD owners and admins: what changed, what it means for you, and where to find more.
For a tour of the community roadmap features (tones, unit messages, Mini-CAD and more), see What's new.
MySQL / MariaDB edition
SnailyCAD can now run on MySQL 8 or MariaDB 10.6+ instead of PostgreSQL.
- Everything works the same for your players. Details and the small differences are on the MySQL / MariaDB edition page.
- The database settings are now simple values in
.env(DB_USER,DB_PASSWORD,DB_HOST,DB_PORT,DB_NAME), and both Docker setups come with MariaDB. - Demo mode works on MySQL/MariaDB too (it needs the
mysqldump/mysqlormariadb-dump/mariadbtools on the server).
Moving from PostgreSQL
You have three ways to bring an existing PostgreSQL CAD over. All of them are explained in Converting a PostgreSQL CAD.
| Way | What it does |
|---|---|
pnpm convert:postgres | A guided command: reads the old CAD's .env, checks both databases, shows a preview, asks you to confirm, copies everything in one go and checks the row counts. It can also copy your old encryption key. |
| CAD Settings → Import from PostgreSQL (owner only) | The same from the admin area, with live progress. Import only the values (keeps your accounts) or replace everything (you type REPLACE to confirm; if anything fails, nothing is changed). |
| Copy only the values | Brings departments, statuses, penal codes and other values into a CAD that is already running. |
The checks warn you about usernames that only differ in upper/lower case, because MySQL and MariaDB treat them as the same name.
Installation
One-line installers
Run one command on a fresh Ubuntu server and the rest happens in your browser. See One-line install and Docker.
- Two installers: one for Docker and one for Ubuntu (standalone). A combined installer still exists and asks you which one you want.
- Setup wizard: a password-protected page on your server's IP. It has an install button for each
requirement (system tools, Node.js and pnpm, or Docker), creates the database, writes
.env, opens the firewall, starts the CAD and follows its progress. - Resumes where you left off: the wizard saves its progress, so a restart picks up where it was. If a Docker build fails, your settings are kept and you get a Retry button.
- Knows when it's really done: it waits until both the website and the API answer, and it notices a container that keeps crashing.
- Uninstaller: removes everything the installer added, including the Docker project and Docker itself if the installer put it there. See Uninstalling.
- Safer by default: in Docker, the MariaDB port only listens on the server itself.
Starting and updating
- Build progress page: while the CAD installs, builds or restarts, the website's port shows a progress page with a live (filtered) log instead of an error. It opens the CAD when it's ready.
- Faster restarts:
start.shskips install and build when nothing changed. - Two CADs on one server no longer mix up each other's progress page.
- Restart limit fixed: an installed CAD can be restarted several times in a row again (for updates or settings) without the system refusing to start it. A broken build still can't restart in an endless loop.
Radio
A push-to-talk radio, built into the CAD. Start with the Radio page.
Setting it up
- Turn it on in Admin → CAD Settings → Features → Radio (it's off by default).
- Add channels in Admin → CAD Settings → Radio: name, frequency, which departments may use it, whether FiveM and other radios may join, and receive only (only dispatch talks).
- Serve the CAD over HTTPS: browsers only allow the microphone on secure pages. Listening works without it, talking doesn't.
In the CAD
- Radio on every page: the radio dock stays connected while you move around the CAD, and the push-to-talk key works on any page.
- Pop-out window: open the radio in its own small window. There is also a full-screen radio console (Dispatch → Radio console).
- Listen to many, talk on one: tick channels to listen to them, or use All / None. Click a channel's name to talk on it; the previous one goes back to listening.
- One radio per browser: with several CAD tabs open, only one plays the audio, so you don't hear everything twice. The others still work as remote controls, including push-to-talk.
- Per-channel volume, who's talking and who's on the channel, and Alert / Panic tones.
- Dispatcher priority: dispatchers can talk over a busy channel.
- Who gets the browser radio: dispatchers and admins (Owner / Admin rank, or Manage CAD Settings). Admins get dispatcher access to every channel. Units use the radio in game.
- Moving units: when dispatch changes a unit's radio channel, that unit's radios switch with it.
In FiveM
The snailycad-radio resource. Install it with the step-by-step
Install the radio guide; reference: FiveM radio.
- In-game handheld and HUD, push-to-talk, channels, earpiece and power button.
- A radio prop and talk animation (shoulder mic in vehicles or with a weapon).
- Positional audio: players nearby hear someone's radio, quieter with distance, unless that person wears an earpiece.
- Works with pma-voice, SaltyChat, TokoVOIP, mumble-voip and FiveM's own voice: their own radio is switched off or kept in sync. Megaphones, voice modes and phone calls keep working, and voice HUDs (esx_hud, qb-hud, ps-hud…) show radio talking. Full list: Supported scripts and phones.
- ESX, QBCore and Qbox jobs map to CAD departments; players can be linked to their CAD account through Discord or Steam.
- Set up in game: admins type
/radiosetupor press F4, enter the CAD address and API token, press Test and Save. The form opens by itself for admins while the radio isn't set up, and changes apply right away. The token never reaches players' games. - Server console:
snailyradio_setupandsnailyradio_check. Settings inserver.cfgstill win. - If the game blocks the microphone, the player now gets a message (and the F8 console a clear line) instead of silence.
For bigger communities and developers
- LiveKit: optionally use a LiveKit server for the audio instead of the built-in one. LiveKit
- Other scripts and radios can connect through exports, events, the REST API or the open protocol. Integrations · Protocol
Dispatch and units
These come from the community roadmap. Full details on What's new.
- Tone presets: admins create tones (built-in sounds or your own), dispatch plays them for everyone, a service, a department, one unit or the units on a call.
- Unit messages: private messages between on-duty officers and EMS-FD deputies.
- Mini-CAD: a small floating panel with the latest 911 call, with keys to move between calls and attach.
- Officers with Manage Call History can edit and end calls; dispatch can end calls in bulk.
- EMS-FD report types: medical, fire, fire investigation and inspection, with their own permission.
- Citizens get aliases and drug tests; linking incidents now searches all incidents.
- Jail and arrest status fixes.
Administration
- Login page notice: the login and register pages used to link to snailycad.org, so players with login problems contacted SnailyCAD instead of your community. They now show a short notice telling them to ask your staff, with a small "CAD by SnailyCAD" credit. Change the text in Admin → CAD Settings → General → Login page notice (leave it empty for the default).
- Radio settings: channels and the audio server in CAD Settings → Radio.
- Update CAD card on the admin dashboard: one-click updates on Linux servers running the CAD as a service; on Windows or in Docker it shows the commands to run instead.
- Recovery tools: a recovery token is created on first start to get back in if you're locked out. Recovery tools
- Custom locales: manage languages in CAD Settings → Custom Locales.
- Duty hours report, citizen claim requests, prune citizens in bulk.
- Permissions: nobody can grant a permission they don't have. New permissions for pending users, officer ranks and callsigns, and for seeing all players on the live map.
- 11 more Discord webhook types and an optional API token reminder banner.
- Demo mode for public demo CADs, with automatic resets.
- New look: a refreshed dark interface, grouped and searchable admin sidebar, new admin dashboard, a theme picker, a "What's new" popup and an optional modern citizen theme.
Fixes and behind the scenes
-
The radio is in the demo CAD, so you can try it before installing.
-
Docker: the images now include the tools the CAD needs to start and to run database updates (git and OpenSSL), the recovery token survives image rebuilds, and the update card and custom locales show the right steps inside Docker.
-
Windows and non-systemd installs: the update card and locale rebuild show commands that work in any shell.
-
Discord login only skips the consent screen for users who already approved it.
-
Code checks: the automatic type checks finish again (they ran out of memory since March 2026), and the problems they found in the MySQL edition were fixed.
-
Many small code-style fixes.
Coming next / planned
Which voice scripts, add-ons, radio scripts and phones work today: see Supported scripts and phones.
Nothing in this section is finished or promised. These are ideas being worked on or considered, and they may change or be dropped.
Being worked on
- FiveM framework integration (ESX, QBCore, Qbox): coming by 15 October 2026.
- ops-phone integration: 911 / service calls from ops-phone become CAD calls with GPS, dispatch updates go back to the phone, and the CAD radio becomes a phone app.
Planned
- Other phones: 911 calls from lb-phone, qs-smartphone and sd-phone into the CAD.
- rp-radio compatibility mode, for servers that want to keep rp-radio's UI.
- Talking on the CAD radio from inside FiveM: FiveM's in-game browser may block the microphone. If that turns out to be a problem, a server-side bridge is planned that carries the game's own voice (pma-voice / Mumble) to the CAD radio.
- A one-line installer for Windows.
Under consideration (from the community roadmap)
- Search suggestions in more places, and easier everyday workflows.
- Better support on phones and tablets, and possibly a dedicated mobile app.
- An Unraid template and a more complete database configuration guide.
- More FiveM scripts (ID card, routing, ANPR, map tiles).
- More Discord webhook and bot features, more penal code and language tools, and more integration guides.
- For the MySQL edition: future SnailyCAD updates that change the database have to be translated by hand, so they may arrive a little later than in the PostgreSQL edition.