atlasBridge issues trace back to one of five causes: the resource name, start order, provider detection, missing NUI files, or an incorrect convar. Work top to bottom.
Bridge is nil / load order
If a consumer script errors with Bridge being nil, the bridge is loading after that script.
- Confirm the folder is named exactly
atlasBridge. Consumers load@atlasBridge/init.lua; a renamed folder breaks that path. - Confirm the consumer’s
fxmanifest.luahas both lines:
- Confirm
ensure atlasBridgeruns before the dependent resource in yourserver.cfg.
Framework or inventory not detected
Auto-detection only sees resources that are already started, and framework/inventory are detected once at boot. Start dependencies before the bridge:[Framework] server adapter: es_extended. If it reads _default when you expected a framework, detection missed it.
Money or inventory actions fail
- The framework/inventory provider is correct (check the adapter line with debug on).
- Account names are normalized:
cash,bank, ordirty— not your framework’s raw names. - Item keys exist in your inventory and match the Atlas resource’s config.
- The player has space/weight if your inventory enforces capacity.
- On a custom adapter: if the line reads
_default, your stub errored at load and the no-op default is running. Fix the load error. See Custom Framework.
Notifications or menus do not show, or use the wrong provider
The bridge’s own NUI is the default.ox_lib is only used if you opt in with atlas:ui "ox".
atlasBridge/web/dist/index.htmlexists (required for the bridge’s own NUI).- If you forced
ox, confirmox_libis started — and started before the bridge. - A per-subsystem override (
atlas:ui:notify,atlas:ui:progress, …) wins over the globalatlas:ui; check you did not pin a subsystem to a provider that is not running.
Target prompts do not appear
- The target provider reads
atlas:target— notatlas:ui:target. - With
auto, the bridge resolvesox_target → qb-target → own. Forceownto use the bridge’s built-in prompts:
Death detection does not trigger
The bridge detects most deaths automatically. If an Atlas resource does not react when a player dies:- Confirm
atlasBridgestarts before the Atlas resource. - Test with the default setup first.
- If your death/ambulance system uses its own event, route it through the bridge:
Discord profiles do not load
- The token is set with
set, notsetr. - The guild ID is correct and the bot is a member of that guild.
- The bot has permission to read members and roles.
- With debug on, the bridge logs
Discord enabled as <bot> (guild ...)at startup. If it logsinvalid token/guild ... module disabled, the token or guild is wrong.
Permissions or Discord roles not granting
IfBridge.Permissions.Has(src, node) returns false when it should grant:
- Register both maps. A node only resolves through a label that has both a role ID (
Bridge.Discord.RegisterRoles) and that node (Bridge.Permissions.RegisterNodes). The bridge ships with nothing registered — until you register them, every node is denied. - The label, not the role ID, goes in
RegisterNodes. The key inRegisterNodes(e.g.admin) is the label; the real Discord role snowflake lives only inRegisterRoles. - Discord must be enabled for role-granted nodes — see the section above. (ACE-granted nodes work without Discord.)
- The player must actually hold the role in the guild, and have a
discord:identifier (the Discord scope must be authorized on connect). - ACEs are checked first. If an unexpected player passes, check for a server ACE granting the node.
Theme color looks wrong or does not apply
atlas:theme:coloraccepts any valid hex; the default is#F487F4. An invalid hex is ignored.- The server color drives both UI accents and marker-prop recolor, and is applied live.
- A per-player override wins over the server default. If a player’s UI is the wrong color, they may have set their own accent via
Bridge.Theme.Set(it persists on their client). Have them run a reset, or callBridge.Theme.Reset(), to fall back to the server color. Bridge.Theme.Set(hex)returnsfalsefor an invalid hex and changes nothing — check the return value in your picker.
Debugging process
1
Enable debug
Add
setr atlas:debug "true".2
Restart in order
Restart framework, inventory, target/UI, then
atlasBridge, then Atlas resources.3
Read the first error
Fix the first bridge error before chasing errors from dependent resources.
4
Force providers if needed
If detection is wrong, set explicit convars.
5
Turn debug off
Set
setr atlas:debug "false" before production.