Skip to main content

FiveM Resource Configuration

This page is the full convar and config reference for Kestrel's FiveM resources. For the minimal quick-start install steps, see Setting Up Your Community.

kestrel-cad

Convars

ConvarDefaultPurpose
kestrel_api_urlhttps://cad.ashmeresoftware.comKestrel API origin (no /api/v1 suffix)
kestrel_client_id / kestrel_client_secret""Primary (first) department's FiveM credential
kestrel_web_base_urlhttps://cad.ashmeresoftware.comWeb app origin, used for MDT handoff — often a different origin than kestrel_api_url, set it explicitly
kestrel_cad_default_department_slug""Required — the department slug this credential authenticates as
kestrel_cad_credential_2_department_slug / _client_id / _client_secret (and _3_, _4_, ...)Additional per-department credentials for a combined PD+Fire+EMS server; there's no _1_, the plain convars above are index 1
kestrel_cad_mobile_mdt_commandkmdtMobile MDT command name (no leading slash)
kestrel_cad_vehicle_mdt_commandkvmdtVehicle MDT command name
kestrel_cad_mdt_seatsdriverdriver, front, or any — who may request the Vehicle MDT
kestrel_cad_mobile_mdt_enabled1Master toggle, Mobile MDT
kestrel_cad_vehicle_mdt_enabled1Master toggle, Vehicle MDT
kestrel_cad_debug0Verbose console logging
kestrel_cad_esx_dob_formatDD/MM/YYYYDOB format your ESX identity resource stores, used by /kestrelclaim
kestrel_cad_qb_dob_formatMM/DD/YYYYSame, for QBCore/QBox
kestrel_cad_location_report_enabled1Ambient live-position reporting (drives the dispatcher map)
kestrel_cad_location_report_interval_ms5000How often on-duty officer coordinates are sent
kestrel_cad_waypoint_poll_enabled1Assigned-call waypoint delivery
kestrel_cad_waypoint_poll_interval_ms5000Poll interval
kestrel_cad_presence_heartbeat_enabled1Concurrent-account presence heartbeat (reports the whole server's connected-player population for billing's concurrent_accounts.max)
kestrel_cad_presence_heartbeat_interval_ms30000Presence heartbeat interval
kestrel_cad_auto_update_enabled0Automatic update checking/downloading — opt-in
kestrel_cad_auto_update_check_interval_ms3600000Update check interval
kestrel_cad_station_duty_enabled1Master switch, station-zone auto duty detection (needs shared/zones.lua populated to do anything)
kestrel_cad_station_check_interval_ms1000Poll tick for station-zone detection
kestrel_cad_station_debounce_ms3000How long a consistent state must hold before an automatic duty change commits — avoids flapping when someone briefly walks through a zone
kestrel_cad_station_blips_enabled1Station map blips
kestrel_cad_station_target_enabled1qb-target/ox_target "Clock On/Off Duty" and locker interactions
kestrel_cad_locker_enabled1Vehicle/equipment locker interactions
tip

Set these as convars in a gitignored file that you exec from server.cfg — never commit credentials into config.lua directly. See Setting Up Your Community if you haven't created your FiveM credentials yet.

shared/zones.lua

This file is community-edited and safe to commit — no secrets belong in it. It maps your server's job names onto Kestrel department slugs, and optionally defines station zones for automatic duty clock-on/off, map blips, vehicle lockers, and armories:

JobDutyMap = { police = "police-department", ambulance = "ems-department" }
StationZones = {
{
label = "PD Station",
departmentSlug = "police-department",
coords = vector3(441.0, -982.0, 30.7),
radius = 15.0,
blip = { enabled = true, sprite = 60, colour = 38, visibleToAll = false },
locker = {
vehicles = { { model = "police", label = "Cruiser" } },
vehicleSpawnCoords = vector4(441.0, -982.0, 30.7, 90.0),
armory = { weapons = { { name = "WEAPON_PISTOL", ammo = 250 } } },
},
},
}

locker is fully optional per zone. blip.visibleToAll = false (the default) shows that zone's blip only to players whose job maps to its department via JobDutyMap.

server/config.lua — MDT vehicle allow-list

Edited directly in the resource, not via convar:

SettingDefaultPurpose
MdtVehiclespolice, police2, police3, police4, fbi, fbi2, sheriff, sheriff2Exact vehicle model allow-list for the Vehicle MDT
MdtVehicleClasses{18}Fallback GTA vehicle-class allow-list (18 = Emergency)

Events fired by kestrel-cad

Other resources can listen for these to hook in custom UI or sound:

EventPayloadPurpose
kestrel-cad:waypointSetmapX, mapYSets an in-game GPS waypoint for an assigned call
kestrel-cad:waypointClearClears the waypoint
kestrel-cad:newAssignmentcallNumberNew-incident notification, independent of MDT open state
kestrel-cad:mdtHandofftoken, surface, webBaseUrlFired once a handoff token is minted, opens the in-game MDT overlay

kestrel-cad doesn't define any exports of its own for other resources to call into.

kestrel-radio

Convars

ConvarDefaultPurpose
kestrel_api_url""Shares kestrel-cad's API origin
kestrel_client_id / kestrel_client_secret""Shares kestrel-cad's primary-department credential — no separate credential needed
kestrel_radio_channel_map""Comma-delimited slug:number pairs, e.g. police-department:1,fire-department:2 — maps a voice-plugin radio channel number to a Kestrel talkgroup
kestrel_radio_poll_ms1000How often channel membership is re-checked
kestrel_radio_debug1Verbose logging (on by default for this resource)
kestrel_radio_test_command1Enables a /radiochannel <n> test command for joining a channel directly

Exports

kestrel-radio has one server-side export, GetChannelMap(), that another resource can call to read the parsed channel map.

See Radio & Communications for how this feature actually behaves for dispatchers and officers day to day — this page is just the config reference.

tip

If your community also runs kestrel-ers-bridge (night_ers integration) or kestrel-anpr-bridge (ANPR cameras), see Setting Up Your Community for their setup — their full convar references aren't included on this page yet.