Installation

How to install and configure tELS for your FiveM server.

Setup

Prerequisites

  • FiveM server with OneSync enabled (Infinity or Legacy)
  • tLib resource (minimum version 0.1) — tELS depends on it for discovery, persistence, admin ACE, dialogs, layouts, and the move-mode HUD editor
  • Lua 5.4 (the manifest already declares lua54 'yes')

Not a drop-in ELS replacement

tELS does not load existing ELS or non-ELS vehicle packs. Vehicles are configured from scratch using the in-game editor, or by bundling a tels.json inside the vehicle resource.


Install

Extract the resource

Drop the tELS folder into your server's resources directory. If you group resources (e.g., [tScripts]), place it alongside them.

Start tLib before tELS

Order matters — tELS resolves tLib exports at load time.

server.cfg
ensure tLib
ensure tELS

Grant admin access

The editor and server-wide defaults require tLib's admin ACE. Add it to any group that should be able to edit vehicles:

server.cfg
add_ace group.admin tlib.admin allow

Admins can:

  • Open /telsedit
  • Save server-wide display defaults (emissive, bloom, env quality, HUD layout) from /tels
  • Open the editor button in /tels

Start the server

On first run tELS creates data.json at the resource root to store vehicle configs. No further setup is required.


Quick start: light up your first vehicle

Goal: get an emergency vehicle flashing red and blue in under two minutes. Deeper configuration is covered in the Editor guide.

Spawn the vehicle

Spawn any emergency vehicle (e.g., police4) and get in.

Open the editor

Run /telsedit. The 3D editor opens with an empty LED list — the vehicle has no config yet.

Auto-create LEDs from the lightbar

In the LEDs tab sidebar, click Create from siren bones. tELS scans the vehicle's siren1sirenN bones and adds a starter LED at each one, already grouped and sided. No manual placement needed to get started.

Add a basic pattern

Switch to the Patterns tab, click Add Pattern, set it to about 10 FPS, add a Red and a Blue color to the palette, then paint a few alternating columns across the grid. The pattern previews live on the vehicle as you paint.

Save and exit

Press Enter (or click Save). The config writes to data.json and broadcasts to every connected client.

Press Q

Back in the vehicle, press Q — lights on. Press R to burst the siren. Press 9 / 0 to cycle through any additional patterns.

From here, see:

  • Editor guide — full LED / pattern / trigger / siren workflow
  • Usage guide — every keybind, client setting, and mode
  • Configuration — the data.json schema and cross-vehicle references

File layout

fxmanifest.lua
data.json
cl_textures.lua
cl_renderer.lua
cl_siren.lua
cl_state_sync.lua
cl_lights.lua
cl_hud.lua
cl_input.lua
cl_editor.lua
PathPurpose
fxmanifest.luaResource manifest
data.jsonPer-vehicle configs (auto-generated)
shared/Shared helpers (UUIDs, resolvers, LED defaults, audio banks, geometry)
server/sv_configs.luaDiscovery + ref-edit relays + server defaults
server/sv_relay.luaState bag ownership + remote state sync
client/cl_lights.luaPattern playback, triggers, stages, sirens
client/cl_hud.luaHUD overlay + /tels dialog
client/cl_input.luaKeybinds, commands, park-kill thread
client/cl_editor.luaNUI editor bridge
client/cl_renderer.luaUnified LED render pipeline
client/ui/Built NUI assets (do not edit)
client/web/NUI source (SolidJS + Three.js)
layouts/HUD layouts (auto-discovered)
audio/Custom siren sounds (awc + dat54)
stream/Arges spotlight ytyp
data/server_defaults.jsonSaved admin defaults (auto-generated)

Do not edit `client/ui/`

These are built NUI assets. Source for the editor and HUD lives in client/web/. Build with bun run build from the resource root.

On this page

Need help?

Ask on Discord