Admin Guide
Every /phone command, player keys, the in-game settings editor section by section, the admin tools inside the phone's apps, and how to grant admin access in oxide-phone.
This guide covers every command that comes with oxide-phone, the in-game settings editor you use to set up the phone, the admin tools inside the phone's apps, and how to give someone admin access.
Most of your setup happens in one place: type /phone settings in game. Changes you save there go live straight away, with no restart and no file editing.
Commands Overview
/phone is one command. The word you type after it picks what it does. Where the table says "Yes" under Server console, you can also type the command (without the /) into your server console, the text window where your server prints its messages (or Live Console in txAdmin).
| Command | What it does | Who can use it | Server console |
|---|---|---|---|
/phone | Shows the list of phone commands (players who are not admins get "You do not have permission.") | Admins | Yes |
/phone settings | Opens the settings editor | Admins | No |
/phone device <id> | Shows the phone a player is using | Admins | Yes |
/phone resetpin <id> | Removes the passcode from the phone a player is using | Admins | Yes |
/phone apppassword <app> <username> | Removes the password from a phone app account and signs every phone out of it | Admins | Yes |
/phone battery <id> <percent> | Sets the battery of the phone a player is using | Admins | Yes |
/phone charger [clear] | Places a charging station in front of you, to look at | Admins | No |
/phone calltest <id> | Tests that nobody can listen in on a call | Admins | No |
/phone streams | Lists the live streams from apps on the phone | Admins | Yes |
/phone endstream <id> | Ends a live stream | Admins | Yes |
/phone feedverify <handle> [on|off] | Gives or takes a Feed account's verified badge | Admins | Yes |
/phone simlost <number> | Reports a registered SIM lost for its owner | Admins | Yes |
/phone simreplace <number> <id> | Gives the owner a free replacement for a SIM reported lost | Admins | Yes |
oxide-phone:mapmode [mode] | Shows or changes how the Maps app draws the islands | Admins | Yes |
Who can use it means:
- Admins: only players who pass the admin check (see Permissions). Anyone else gets "You do not have permission." (
oxide-phone:mapmodesays "You do not have permission to change map settings.")
<id> is the player's server ID, the number shown next to their name in the player list.
Players never need a command to use the phone: they use the phone item or press the Open phone key (see Player Keys).
Command Details
/phone
Shows which phone commands exist.
Usage:
/phoneTyping /phone on its own, or with a word it doesn't recognise, shows an admin a usage line listing every subcommand, for example:
- "Usage: /phone <settings|calltest|device|resetpin|apppassword|battery|charger|streams|endstream|feedverify|simlost|simreplace>"
Run from the server console, it also prints one line per subcommand with a short description.
/phone settings
Opens the Phone Settings editor, where you change every setting of the phone. See The Settings Editor.
Usage:
/phone settingsWho can use it: admins.
Server console: no. From the console it prints [PhoneSettings] This command must be run in-game.
Output:
- Success: the Phone Settings window opens. If your own phone was open, it is put away first.
- Failure: "You do not have permission."
/phone device
Shows the phone a player is using: the phone they have open, or else the phone in their lowest inventory slot.
Usage:
/phone device <id>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | number | Yes | The player's server ID |
Examples:
/phone device 12 -- the phone player 12 is using
phone device 12 -- the same, typed in the server consoleOutput:
- Success:
Device 86xxxxxxxxxxxxx | number 213-555-0142 | battery 100% | power on | PIN no | owner John Smith. The number shows "none" when the phone has no SIM, and the owner is the phone's registered owner. - "No player with that id." means nobody with that server ID is online.
- "That player is not carrying a phone."
Notes:
- If that phone has never been used, looking it up gives it its device ID, the same way using it would.
/phone resetpin
Removes the passcode from the phone a player is using, and ends any wrong-passcode lockout. Use it when a player forgot their passcode.
Usage:
/phone resetpin <id>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | number | Yes | The player's server ID |
Examples:
/phone resetpin 12 -- remove the passcode from player 12's phoneOutput:
- Success: "PIN removed from phone 86xxxxxxxxxxxxx."
- Failure: "No player with that id." or "That player is not carrying a phone."
Notes:
- The phone opens without a passcode from now on. The player can set a new one in Settings → Passcode.
- A player who is looking at the lock screen when you run it can unlock straight away.
/phone apppassword
Removes the password from an account in a phone app (Hookr, Leakd, Glitch or any other app that uses the phone's accounts) and signs every phone out of it. Use it when a player forgot their app password. The account then has no password again: the phone with the SIM that made it signs in to it the next time the app opens, and the player can set a new password in Settings.
Usage:
/phone apppassword <app> <username>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| app | text | Yes | The app's id: hookr, leakd, glitch, or the id another app uses |
| username | text | Yes | The account's username, with or without the @ |
Examples:
/phone apppassword hookr jamie.r -- remove the password from @jamie.r on HookrOutput:
- Success: "Password removed from jamie.r on hookr. Every phone was signed out of it."
- Failure: "No hookr account is called jamie.r."
A phone police hold as evidence stays signed in.
/phone battery
Sets the battery level of the phone a player is using. Use it to test battery drain, car charging and powerbanks, or to rescue a player whose phone ran flat.
Usage:
/phone battery <id> <percent>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | number | Yes | The player's server ID |
| percent | number | Yes | The new level, from 0 to 100 |
Examples:
/phone battery 12 100 -- fully charge player 12's phone
/phone battery 12 5 -- almost flat, to test the low-battery warningOutput:
- Success: "Phone 86xxxxxxxxxxxxx battery set to 100%."
- "Battery must be a number from 0 to 100."
- "No player with that id." or "That player is not carrying a phone."
Notes:
- If the player has the phone open, its status bar updates at once.
- With batteries turned off (
Config.Battery.enabled), a level you set stays exactly where you put it. Setting0then makes the phone dead ("The battery is dead.") until you set it higher again, because nothing charges it.
/phone charger
Places the phone's charging station model in front of you, standing on the ground and facing you. Use it to see the model in your world before you put stations on your map.
Usage:
/phone charger [clear]Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| clear | text | No | Type clear to remove the stations you placed |
Examples:
/phone charger -- place a station in front of you
/phone charger clear -- remove the stations you placedOutput:
- Success: "Charging station placed. /phone charger clear removes it."
- "Removed 2 charging stations."
- "The charging station model could not be loaded. See the F8 console."
- From the server console: "Run this in game: the station is placed in front of you."
Notes:
- Nothing is saved. The stations disappear when you leave, when you run
/phone charger clear, or when oxide-phone restarts. - The stations this command places are only for looking at: they don't charge phones. Working stations are added in
/phone settings→ World → Battery → Charging stations (see Configuration → Charging Stations).
/phone calltest
Checks the call privacy guard. Your own game tries to join another player's call channel in pma-voice, the way a cheater could, and the phone should throw you out at once.
Usage:
/phone calltest <id>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | number | Yes | The server ID of a player who is in an answered call |
Output:
- Success: "Joining their call channel. You should be removed at once." The server console then shows:
[WARN][oxide-phone][security] player joined a call channel they are not in; removed - "That player is not in an answered call."
Server console: no. From the console it prints [oxide-phone] /phone calltest must be run in game.
Notes:
- Calls need
pma-voice, so this test only makes sense on a server that runs it.
/phone streams
Lists every live stream: apps on the phone, such as Leakd and Glitch, can let players go live with
the phone's camera (see Media → Live streams in /phone settings).
Usage:
/phone streamsOutput: one line per stream with its id, the app, the player and the app account streaming, how many are watching and for how many minutes it has run, then the total, for example:
- "s3qkzvbnfa glitch by Jordan Reyes (@jreyes) 6 watching 12 min"
- "1 live, about 4.4 Mbps to viewers"
- "Nobody is live." when there are none.
Notes:
- The Mbps figure is the upload your server is spending on streams right now. Viewers past the Upload for viewers limit are refused.
/phone endstream
Ends a live stream. Its viewers are told it ended and the player's camera closes.
Usage:
/phone endstream <id>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | text | Yes | The stream id, from /phone streams |
Output:
- Success: "Stream s3qkzvbnfa ended."
- "No live stream s3qkzvbnfa." when no stream has that id.
Notes:
- The stream's evidence records that an admin ended it.
/phone simlost
Reports a registered SIM lost or stolen on its owner's behalf, the same as the owner doing it in Settings → SIM card. The SIM stops working at once, the phone holding it shows No SIM service, and phones signed in to the number's app accounts are signed out.
Usage:
/phone simlost <number>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| number | text | Yes | The SIM's phone number, with or without dashes |
Output:
- Success: "The SIM for 310-555-0147 is reported lost and no longer works."
- "No registered SIM serves 310-555-0147." for an unknown number or a burner.
- "Could not report 310-555-0147 (reported)." when it was already reported.
Notes:
- The carrier records note that an admin reported it.
/phone simreplace
Gives the registered owner a free replacement for a SIM reported lost: a SIM card item with the same number, or straight into the phone they are using where the inventory can't save item data.
Usage:
/phone simreplace <number> <id>Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| number | text | Yes | The phone number |
| id | number | Yes | The server ID of the number's registered owner |
Output:
- Success: "Replacement SIM for 310-555-0147 given to Jordan." (the player's FiveM name)
- "No replacement for 310-555-0147 (unknown)." when that player isn't the owner, or "(active)" when the number still works.
- "Usage: /phone simreplace <number> <id>" when the number or the ID is missing, or nobody with that ID is online.
/phone feedverify
Gives a Feed account the verified badge, or takes it away. The badge is a blue seal with a tick next to the account's name everywhere it appears in the Feed app: posts, replies, quotes, the profile, search, follower lists, notifications and the suggestions while someone types an @handle. Players who tap the badge on a profile see what it means.
Usage:
/phone feedverify <handle> [on|off]Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| handle | text | Yes | The Feed handle, with or without the @. Capital letters don't matter |
| on|off | text | No | on gives the badge, off takes it away. Leave it out to give it |
Examples:
/phone feedverify @lsnews -- verify @lsnews
/phone feedverify lsnews off -- take the badge away again
phone feedverify lsnews -- the same as the first, typed in the server consoleOutput:
- Success: "@lsnews is now verified." or "@lsnews is no longer verified."
- "@lsnews is already verified." or "@lsnews is not verified." when nothing needed to change.
- "Handles are 3 to 20 letters, digits or _." when what you typed can't be a handle.
- "No Feed profile has the handle @lsnews." when nobody has claimed that handle.
- "Usage: /phone feedverify <handle> [on|off]" when the last word is not
onoroff.
Notes:
- Every phone that has the Feed open shows the change at once. Nobody needs to reopen the app.
- The server console logs
handleVerifiedorhandleUnverifiedwith the handle and who did it (consolefrom the server console), as well ascommandUsed. - This is the same as Verify @handle in the Feed app's menus (see Admin Tools Inside the Phone).
oxide-phone:mapmode
Shows or changes how the phone's Maps app draws the islands. This command comes from o-link's shared map. The same choice is Map mode in /phone settings → General.
Usage:
oxide-phone:mapmode [mode]In game, type it with a slash: /oxide-phone:mapmode combined.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| mode | text | No | inherit (use the o-link default), combined (both islands on one map), separate (separate island views) or disabled (hide Cayo Perico). Leave it out to see the current mode |
Examples:
oxide-phone:mapmode -- print the current mode
oxide-phone:mapmode combined -- show both islands on one mapOutput: printed in the server console, for example [oxide-phone] MapMode = combined. A word that isn't a mode prints [oxide-phone] Use oxide-phone:mapmode inherit|combined|separate|disabled.
Player Keys
These are not commands to type. Players find them in Esc → Settings → Key Bindings → FiveM and can change them.
| Key binding | Default key | What it does |
|---|---|---|
| Open phone | F1 (Config.OpenKey) | Opens the phone in the lowest inventory slot, or puts it away |
| Phone: answer a call with the phone put away | Enter (Config.Calls.answerKey) | Answers a ringing call without opening the phone |
| Phone: decline a call with the phone put away | Backspace (Config.Calls.declineKey) | Declines a ringing call without opening the phone |
| Phone camera: switch to selfie and back | R | While the camera is up |
| Phone camera: hold the view in place | F | While the camera is up |
| Phone camera: tilt left | Z | While the camera is up |
| Phone camera: tilt right | C | While the camera is up |
| Phone camera: next mode | F7 | While the camera is up; initial key set by Config.Camera.modeKey |
| Phone camera: flash | E | While the camera is up |
| Phone camera: full screen | V | While the camera is up |
| Phone camera: use the pointer | Q | While the camera is up |
A new default key only reaches players who have never joined your server. Everyone else keeps their own binding. On QBCore, stock qb-radialmenu also uses F1; see Installation → QBCore for how to pick another default.
The Settings Editor
/phone settings opens the Phone Settings window. Every value in it is saved to your database and applies straight away. Configuration explains every setting in detail.
How to use it:
- Pick a section in the left sidebar.
- Use the Basic and Advanced tabs at the top. Most settings are on Basic.
- Change values. A changed badge marks each one, and the bottom bar counts your unsaved changes.
- Press Save Changes. A setting that isn't allowed shows why; the rest are still saved.
- Close with Close or ESC. Closing throws away unsaved changes.
Reset to default puts one setting back to the value in shared/config.lua as it was when the phone last started. It saves at once.
The sections:
| Sidebar | Section | What you set there |
|---|---|---|
| Device | General | The default open key, and the Maps map mode |
| Device | Items | Which items are phones, SIM cards, powerbanks and the phone wiper |
| Device | Numbers & SIMs | The number format, area codes, the free SIM with a new phone, and the price of a replacement SIM |
| Device | Security | Passcode lengths and the wrong-passcode lockout |
| Device | Calls & Messages | Ring time, ring distance and sound; text limits; contacts; mail |
| Device | Media | Photo storage (with video and voice clip limits), walking with the camera, and live streams |
| Police | Evidence | Police and authorizer jobs, search authorizations, extraction, stations, recovery, carrier records, traces and report destinations |
| Police | Emergency | 911, 311 and the jobs they alert |
| World | Battery | Drain, car charging, powerbanks and charging stations |
| World | Signal | No signal indoors, and the no-signal areas you draw in the world |
| Screen | Home & Apps | The Store (preinstalled apps and how downloads behave), the default look, dock size, pages, extra wallpapers, and (Advanced tab) the app start timeout |
| Screen | Apps | Notes, Maps, Dark Chat, Feed, Wallet and Gigs |
| Screen | Notifications | Banner time, notification sound, and how many notifications a phone keeps |
| Screen | Appearance | The phone held in the hand: its colour, a colour per phone item, or another model |
| Advanced | Compatibility | Model replacements for your game build |
| Advanced | Advanced | (Advanced tab) How often the server checks phones, and Debug mode |
Drawing in the world. Three kinds of setting are placed in the world instead of typed:
- Forensics stations (Evidence): the crosshair button (Place in world) lets you pick the spot; Teleport here takes you to a saved one.
- Charging stations (Battery): press Add under Stations, then the crosshair next to Spot. A see-through station follows your aim: scroll to turn it, left-click to put it down, then Save Changes. Aiming at a station already on your map snaps onto it. See Configuration → Charging Stations.
- No-signal areas (Signal): Draw a zone starts o-link's zone builder to place the corners of an area; Redraw in the world reshapes one.
The editor hides itself while you place things and comes back when you're done. These tools need an o-link with in-world placement; with an older one the editor says "In-world placement needs an updated o-link."
Admin Tools Inside the Phone
Feed moderation. Admins (see Permissions) get more in the ... menu of every post in the Feed app:
- Delete Post removes any post, not only their own. The server console logs
postRemoved. - Mute the author for 24 hours stops that handle from posting and reposting for 24 hours. It shows on other people's posts. The author sees "A moderator has muted you for now." The server console logs
authorMuted. - Unmute the author lifts a mute early. The server console logs
authorUnmuted. - Verify @handle gives that handle the verified badge beside its name; Remove verification takes it away. It is also behind the shield button on a profile. It works exactly like /phone feedverify: every open Feed shows the change at once, and the server console logs
handleVerifiedorhandleUnverified. - Reported Posts: the shield button at the top of the Feed's Home tab (with the number of reported posts) lists every post players reported, oldest first, with how many reports and why. Remove Post deletes it, Dismiss closes its reports and Mute 24 h mutes its author. The server console logs
reportedPostRemovedorreportsDismissed.
Debug mode. With Debug mode on (Advanced → Advanced, Advanced tab), the Store offers a Demo app that shows how apps from other resources work on the phone (it is also offered on oxide-tablet when that runs), and extra detail is printed to the server console and the F8 console. Turn it off on a live server.
Permissions
Every admin part of the phone (/phone settings, the admin /phone commands, oxide-phone:mapmode and Feed moderation) uses one check from o-link. A player passes if they have the admin or command permission. On ESX, members of an ESX admin group pass too. The server console (ID 0) always passes.
QBCore and QBX
Most QBCore and QBX servers already give their group.admin group the command permission in server.cfg, so existing admins work straight away. If your server.cfg has this line, you're done:
add_ace group.admin command allowESX
Players in an ESX admin group pass the check. You can also use the lines below.
Any Framework
Add these two lines to your server.cfg, replacing YOUR_LICENSE with the admin's license identifier:
add_principal identifier.license:YOUR_LICENSE group.admin
add_ace group.admin admin allowThe first line puts the player in the group.admin group. The second gives that group the admin permission. Restart your server after editing server.cfg.
When someone without permission tries an admin command, they see "You do not have permission." and the server console logs an admin command denied warning with the subcommand and their identifier. Every admin command that is allowed is logged too (commandUsed).
Next Steps
Admin
Moderating Glitch — who counts as an admin, the Moderation queue in Studio, what a ban does, the /glitch command and where admin actions and payments are logged.
API Reference
The olink.phone API for oxide-phone — o-link server and client functions, phone-only server exports, direct exports, server and client events, reserved app IDs and integration examples.