CAD, records, and FiveM integration
PulseMDT
Set up the web CAD, Discord permissions, civilian records, and the in-game /cad terminal.
Open PulseMDTGetting started
Connect Discord, the web dashboard, and your FiveM server in this order.
Sign in with Discord
Open PulseMDT, sign in, and select the Discord server you manage. PulseMDT uses your Discord identity for every permission check.
Configure staff roles on the web
Choose the Discord roles that can use staff tools and mark only trusted roles as administrators. Administrative configuration stays on the web dashboard.
Connect the FiveM resource
Install the PulseMDT FiveM resource, use the dashboard API key, and confirm the server connection indicator turns online.
Open the CAD in game
Players use /cad. The terminal checks the Discord ID captured when the player joined and only exposes categories that identity can access.
Web CAD pages
The dashboard separates operational work, records, civilian services, and configuration.
Dispatch and shifts
Manage live calls, priorities, assigned units, duty status, callsigns, and department activity.
MDT and records
Search people, vehicles, plates, firearms, warrants, BOLOs, licenses, and record history.
Reports and cases
Create incident, traffic, arrest, and use-of-force reports, then group related work into cases.
Courts and legal
Review warrant requests, hearings, pleas, sentencing calculations, fines, and jail outcomes.
Civilian portal
Let players manage only their own characters, vehicles, firearms, license requests, and fine disputes.
Personnel and oversight
Manage rosters, ranks, certifications, conduct records, payroll, analytics, and the audit trail.
Installing the FiveM resource
The pulsemdt resource is the free, standalone connector between your FiveM server and the PulseMDT dashboard. Install it before any add-on resource, since every add-on reaches the dashboard through its export layer.
Download the resource
Grab pulsemdt-connector.zip from github.com/PulseSystemsDev/pulsemdt-connector/releases/latest and extract it into your server's resources directory. It already unzips to a folder named pulsemdt, which the resource must be named exactly - FiveM uses the folder name, not anything inside the files. If you instead use GitHub's Download ZIP button, rename the extracted pulsemdt-connector-main folder to pulsemdt yourself.
Create your configuration
Copy config.example.lua to config.lua in that folder and adjust the toggle key, departments, framework, and ANPR options for your server. config.lua is a shared script, so it must never hold your API key or guild ID.
Set your API credentials
In server.cfg, add set pulsemdt_api_key "your-api-key-here" and set pulsemdt_guild_id "your-guild-id-here" using set, never setr, so the values stay server-only and are never sent to clients. Generate both from your PulseMDT dashboard's Admin page.
Start the resource
Add ensure pulsemdt to server.cfg above any pulse_ add-on resource. Add-ons call exports.pulsemdt at their own startup, so pulsemdt must already be running when they load.
Verify the connection
Join the server and press the configured toggle key (F6 by default) or run /cad. The terminal should open with no API error banner; if it shows one, recheck the convars and guild ID before anything else.
FiveM resource configuration
Every option lives in config.lua with inline documentation in config.example.lua. These are the ones worth understanding before you go live.
Departments
Config.Departments must match your dashboard's department names exactly, since duty status and dispatch assignment are matched by name. Config.DefaultDepartment sets what a new officer goes on duty as.
Toggle and panic keys
Config.ToggleKey opens and closes the local CAD terminal; Config.PanicKey triggers a panic alert when held for two seconds. Both use FiveM input mapper key names.
Location updates
Config.LocationUpdateInterval controls how often, in milliseconds, a unit's position is pushed to the server for the live map. Lower values track more accurately at a higher server-load cost; 3000-5000 is the recommended range.
ANPR integration
Config.EnableANPR turns on plate scanning through the separately-installed WraithARS2X resource. When an officer locks a plate, PulseMDT queries once and shows vehicle, owner, warrant, and BOLO results in an overlay; Config.ANPRDisplayTime controls how long that overlay stays up after the plate is unlocked, or 0 to leave it until the next lock.
Welcome hint
Config.ShowWelcomeHint prints a chat reminder of the /cad command and configured key when a player joins.
Framework bridge
PulseMDT works standalone on Discord identity alone, or can bridge to your server's framework for character and economy sync.
Standalone (default)
Config.Framework = "standalone" runs on Discord identity only and works on any server, including ones with no framework at all.
QBCore, ESX, and Qbox
Set Config.Framework to "qb", "esx", or "qbox" to bridge through qb-core, es_extended, or qbx_core respectively. server/framework.lua auto-detects the matching export and normalizes it to a common interface the rest of the resource uses.
Character and vehicle sync
With Config.FrameworkSync enabled, going on duty maps the player's framework character (citizenid) to a PulseMDT character and syncs their owned vehicle plates into the CAD automatically instead of requiring manual entry.
Economy hook
Config.EconomyHook, when enabled with a framework configured, routes fines paid on the web portal and payroll through the framework's money system rather than tracking them separately.
Additional FiveM resources
Optional add-ons enable specific department features on top of the core pulsemdt connector. Install pulsemdt first and ensure it above every add-on, since each one reaches the dashboard through the exports.pulsemdt API request and duty-status functions rather than its own connection.
Foundation
pulse_core, pulse_notify, pulse_hub, pulse_dutystations, and pulse_id.
Public safety
pulse_firearms, pulse_ems, pulse_cameras, pulse_radar, pulse_shotspotter, pulse_breathalyzer, pulse_impound, pulse_jailing, and pulse_doorlocks.
Community systems
pulse_911, pulse_atm, pulse_jobs, pulse_fuel, pulse_casino, and pulse_needs.
Vehicles and property
pulse_garage, pulse_dealership, pulse_vehiclekeys, and pulse_property.
Permissions and security
Role data is synchronized by the bot and consumed by the web dashboard.
Discord role cache
Guilds, roles, channels, members, and member roles synchronize at bot startup and through live Discord events.
Fail-closed access
Removed roles, departed members, and removed guilds are purged so old cache rows cannot grant dashboard access.
No in-game administration
FiveM exposes operational CAD features. Staff role setup, API keys, modules, and platform administration remain web-only.
Civilian isolation
Civilian pages are scoped to the signed-in user and cannot browse another player's private records.
Troubleshooting
Check identity and connectivity before assuming a permissions problem.
A user cannot open /cad
Confirm FiveM found the user's Discord identifier and that the bot can see the same guild membership.
A role change is not visible
Role changes sync automatically within a few minutes. If it still has not updated after that, contact support.
The Scripts page is locked
The FiveM server and the exact resource must report in before dashboard-managed settings unlock.
The dashboard shows disconnected
Verify the hardcoded web endpoint, server API key, firewall access, and resource startup order.
The CAD terminal shows an API error on open
Double-check the pulsemdt_api_key and pulsemdt_guild_id convars in server.cfg use set, not setr, and that the guild ID matches the server you generated the key for on the dashboard.
An add-on resource errors on start
pulse_ add-on resources call exports.pulsemdt during their own startup, so ensure pulsemdt must appear above them in server.cfg. Confirm it started successfully first.