RE:CORD
REC_PlayerManager

Admin UI

Welcome to REC_PlayerManager documentation.
Added
Updated

Captured from the current UI in a browser using sample data.

What this gives you: the screen you actually manage people from.

There are two ways in. Both show the same thing.

In-game (NUI)Browser
How to open/playermanagerhttp://<host>:30120/REC_PlayerManager/
Who gets inA grantAn access token
Out of the boxOnOff
Setup neededNoneSee below
The in-game screen works the moment you install it. If /playermanager is all you need, skip the browser section entirely.

Nine pages share one sidebar.

PageWhat you use it for
DashboardWho is on right now, and how the player count has moved
PlayersEveryone connected. Kick, message, move a bucket
Routing bucketsWhich buckets exist and who is in them
ConnectionsWho connected and how long they stayed
RankingsYour regulars — total hours, visits, average session, time away
Activity mapWhere people actually spend their time
Admin logWhat your staff did, and when
Connect controlMaintenance, staff-only hours, reserved slots
SettingsEverything this page tells you to set

Settings

What this gives you: one place that is the truth, instead of a file and a database row that can disagree.

The tracking interval, the join gates, retention, the admin log and the whole activity map are declared by the resource and changed here. What the page shows is what the server is running.

RiskyAsked about before it is written, because it stops something being recorded or deletes rows that cannot be brought back
Needs a restartRead once at boot, so the running server keeps the old value until you restart the resource
DefaultPrinted under every setting, and one click puts it back

The heatmap geometry and its two timers are the ones flagged as needing a restart, since they are read once when the sampler starts.

Changes are stored in rec_config_overrides, a table that ships with REC_Library and is shared by every RE : CORD panel. Import it once from the REC_Library page. Without it the panel still works, but what you change is forgotten on the next restart.

Who gets in

What this gives you: the look-but-don't-touch moderator you used to build out of two ACE lists, now in one entry.

Access is granted per area, and this resource has four: players, sessions, server and settings. Each one splits into :read and :write, so players:read opens the roster while players:write is what kicks, messages and moves buckets. Flipping maintenance is server:write.

config.web = webConfig:build(config.debugMode, {

    ---@type REC_Library.Server.Class.Web.WebConfig.Grant[]
    grants = {
        { ace = "support", scopes = { "read", }, },
        { job = "police", ranks = { [3] = true, [4] = true, }, onDutyOnly = true, scopes = { "players:read", }, label = "police", },
    },
})

"read" is every area's read half, a bare area ("players") is both halves of that one, and "*" is everything. The old aceGroups.view is a grant without writes; the old aceGroups.manage is one that carries them.

REC_Library already grants the admin ACE full access, and your entries are added on top of that list rather than replacing it, so narrowing a grant here can never lock an admin out. Every entry that matches contributes its scopes, and somebody matching two of them gets the union. There is no deny form — to take something away, stop granting it. Naming an ace and a job in one entry means the player needs both.

config.web.http.readOnly = true refuses every write over the browser route no matter what the token carries. The in-game screen is unaffected.

Rankings

Rankings are built from finished sessions, so somebody's current session is added when they disconnect rather than counting live. The page ranks the top 25 / 50 / 100 / 200 by total hours, and the search box filters what has already loaded rather than running a fresh query.

©2026 RE:CORD Development Group. All rights reserved.