Oxide Phone
Framework-agnostic smartphone for FiveM — phones as inventory items with SIM cards, calls, texts, mail, a camera, everyday apps and a Store, three included apps, and a full police evidence layer.
oxide-phone is a smartphone your players carry as an inventory item: calls, texts, contacts, mail, a camera, everyday apps and a Store, with a full police investigation layer built in. It runs on QBCore, QBX and ESX through the o-link bridge.
Oxide Phone comes with three apps for it: the dating app Hookr (oxide-hookr), the photo and video sharing app Leakd (oxide-leakd) and the live streaming app Glitch (oxide-glitch). Each app is its own resource and its own download in your Cfx Portal assets, and runs inside the phone. The apps are optional: install the ones you want.
Every phone is an inventory item with its own device ID, and its number lives on a SIM card, so contacts, texts, mail, photos and the home screen stay with the handset when it changes hands while texts and mail follow the number. The phone ships with 12 built-in apps (Phone, Messages, Mail, Camera, Photos, Notes, Calculator, Clock, Maps, Wallet, Settings and Store), 2 more in its Store (Dark Chat and Feed), a Gigs app while the Oxide gig jobs run, and a Forensics app for police. Calls run through pma-voice; photos, videos and voice clips go to Fivemanage, S3-compatible storage or the owner's own service. Players carry the phone's own model in one of 4 colours, pick from 5 built-in wallpapers, 8 ringtones and 6 text tones, and can report a lost SIM or find, lock and erase a lost phone.
The phone is also evidence. Police seize, lodge, return and destroy phones with a full custody log, extract everything on a phone (recently deleted content included) under a search authorization, and read carrier records and traces, while players can erase or securely wipe a phone first. Other resources reach the phone through the o-link phone namespace: mail, texts, notifications, and hosted apps and widgets that use the phone's accounts, photos, camera, location, links, live streams and evidence. Server owners tune nearly everything in game with /phone settings.
Key Features
The Phone
- Every Phone Is Its Own Device — The first time a phone item is used it gets its own device ID. Contacts, texts, mail, photos and the home screen stay with that phone when it changes hands
- SIM Cards and Numbers — A phone's number lives on its SIM card. Registered SIMs carry the character's name at the carrier; burner SIMs carry nobody's. A new phone can come with a free registered SIM
- Passcode Lock — Players set a 4 to 6 digit passcode (you choose the lengths). Too many wrong guesses lock the phone for a while. Admins can remove a forgotten passcode
- Battery (Optional) — Phones drain while switched on, charge in a vehicle or at charging stations you place in game (nearby, or left on a pad), and can be topped up with a powerbank item. Off by default
- Signal — Draw no-signal areas (tunnels, basements) in the world, and optionally treat every interior as having no signal
- Held in Hand — While the phone is open the character holds the phone's own model, in Black, Silver, Burgundy or Glacier, and plays a texting animation. Players can keep walking
- Lost and Stolen Phones — Players report a lost SIM and get a replacement with the same number. Find Phone in Settings locates, locks (Lost Lock) or erases their phones from any phone they use
Communication
- Calls — Voice calls through pma-voice. Nearby players hear a phone ring. Missed calls, recents, busy and unreachable lines
- Messages — Direct and group texts, photos and shared locations. Texts to a phone that is off or out of signal wait on the server and arrive later
- Contacts — Saved on the phone, with favorites and sharing with a player standing next to you
- Mail — Each phone has its own inbox. Other resources send mail to players, even offline ones
- Emergency Numbers — 911 and 311 go to your dispatch system, from the Phone app or straight from the lock screen
Apps
- Built In — Phone, Messages, Mail, Camera, Photos, Notes, Calculator, Clock, Maps, Wallet, Settings and the Store
- From the Store — Dark Chat (anonymous chat rooms with photos) and Feed (public short posts with photos or video, hashtags and mentions, replies, quotes, reposts, likes, bookmarks, follows, search, trending and a Notifications tab), plus any app another resource adds. Getting an app downloads it over a few seconds, slower on weak signal
- Apps From Other Resources — Other resources can put their own apps and widgets on the phone, with app accounts, the phone's photos and camera, and live streams from the phone's camera
- Home Screen — Pages, a dock, widgets from other resources, five built-in wallpapers and your own wallpaper images
- Notifications — Banners, a notification list, app badges and a notification sound. Players choose Do Not Disturb, banners, sound, volume and which apps may notify them
Police and Evidence
- Forensics App — Police see who a phone belongs to without seeing what is on it, keep a custody log, lodge, return or destroy seized phones, and read extraction reports by kind (photos and videos, edited and unsent messages, mail, calls, voicemail, places), with every opening logged
- Search Authorizations — Issued in game by the jobs you choose, or decided by another system
- Extraction — An authorized extraction copies everything on a phone into a report, including recently deleted content
- Carrier Records and Traces — Call and text records per number, and a rough live location of a switched-on phone
- Counterplay — Players can erase their phone, or use a phone wiper item so nothing can ever be recovered
Server Management
- In-Game Settings Menu — Change almost every setting live with
/phone settings - Admin Commands — Look up a player's phone, remove a passcode, set a battery level, report a SIM lost or give a replacement, remove a forgotten app password, and list or end live streams
- Automatic Database Setup — Every table is created on first start
- Works With Other Scripts — Stock QBCore scripts that send qb-phone mail keep working, and an optional layer answers common LB-Phone exports
Included Apps
Each one is its own resource in the package. Players get them from the phone's Store. Each app works without the others.
Hookr
A swipe-to-match dating app: profiles with photos, matches and chats.
Leakd
Photo and video sharing: posts, stories, short videos, going live and direct chats.
Glitch
Live streaming from the phone's camera, with chat, follows, subscriptions and a simulated audience that pays the streamer.
Requirements
Required
| Resource | Purpose |
|---|---|
o-link (1.11.0 or newer) | Connects the phone to your framework (QBCore, QBX or ESX): characters, inventory and item metadata, jobs, money, notifications, targeting, dispatch, the map and logging. Its phone namespace is how the apps and other resources reach the phone |
ox_lib | Shared helpers and translations |
oxmysql | Saves phones, SIMs, content, evidence and settings to your database |
| OneSync | The server reads player positions for ringing, nearby sharing, signal and traces |
Use o-link 1.11.0 or newer. With an older o-link the phone itself still starts and works, but no apps from other resources (Hookr, Leakd, Glitch or any other) appear in its Store, other resources can't send it texts, mail or notifications, and 911/311 calls reach oxide-dispatch only as a plain alert. See Installation → Prerequisites.
Optional
| Resource | Purpose |
|---|---|
pma-voice | Voice for phone calls. Without it, everything except calls works |
A target resource (through o-link) | Forensics stations use it when present; otherwise players press E |
| Photo storage (Fivemanage, S3-compatible such as Cloudflare R2, or your own service) | Needed for the camera, voicemail and voice messages, and the photos and videos in Hookr, Leakd and Glitch. Without it, the camera says photos are not set up |
oxide-hookr, oxide-leakd, oxide-glitch | The three apps that come with the phone. Each one works without the others |
oxide-police | Extraction reports attached to MDT cases, search warrants, phone numbers on MDT profiles |
oxide-dispatch | 911 and 311 calls as civilian alerts, with replies as texts |
oxide-drugselling | Trap phones in Forensics |
oxide-banking | Its Banking app beside the phone's Wallet |
oxide-tablet | Forensics in the tablet |
| Oxide gig jobs | The Gigs app and shift updates |
See Integrations for what each optional resource adds, and what happens without it.
Supported Frameworks
| Framework | Support |
|---|---|
QBCore (qb-core) | Full |
QBX (qbx_core) | Full |
ESX (es_extended) | Full with an inventory resource such as ox_inventory. With ESX's own item list, see ESX Without an Inventory Resource |
| Custom | Via o-link |
Database
oxide-phone creates 67 tables of its own at first start, all prefixed oxide_phone_:
| Area | Tables |
|---|---|
| Devices, SIMs, Find Phone and charging pads | devices, device_state, sims, sim_events, radio_log, remote_actions, docks |
| Calls | calls, call_log, voicemails, blocks |
| Messages | threads, thread_members, thread_prefs, messages, message_copies, message_edits, message_locations, message_media, message_reactions, polls, poll_options, poll_votes, texts_meta, deliveries, location_shares, location_points |
mail, mail_meta, mail_aliases, mail_attachments, mail_pending | |
| Contacts, notifications and sharing | contacts, notifications, shares |
| Photos | media, albums, album_items, album_members |
| Apps | notes, places, bank_transfers, bank_requests, darkchat_handles, darkchat_rooms, darkchat_members, darkchat_messages, feed_profiles, feed_posts, feed_media, feed_tags, feed_likes, feed_bookmarks, feed_follows, feed_edits, feed_activity, feed_reports |
| Apps from other resources | app_accounts, app_logins, app_permissions, app_media, app_evidence, app_installs |
| Evidence | custody, authorizations, extractions, evidence_reports |
oxide_settings is the shared live-settings storage; phone rows use resource = 'oxide-phone'.
The phone ships sql/install.sql and sql/migrations/ for manual installs. Hookr, Leakd and Glitch create their own tables. See Installation → Database Setup.
Frontend
Vue 3 + Vite + Tailwind CSS (TypeScript) for the phone, the Forensics app, the settings editor and each of the three apps. The camera draws the game view through WebGL. The interface ships ready to use in web/dist. There is nothing to build.
Technical Details
- Device identity on the item's metadata: each phone gets a device ID on first use, a registered owner, and its own content; a fallback binds phones to characters where the inventory keeps no item data.
- Several phones per player: calls carry the device they reached and every call action is refused from another phone that is out; a call to a phone in the pocket rises beside the open one; notifications, live app updates and app badges are kept per phone and per app account.
- SIM cards as the number: registered SIMs carrying the character's name, burner SIMs, a configurable number format with prefixes, and a free registered SIM for a new phone (
Config.Sim.autoIssue). - Lost and stolen SIMs: owner reports from any phone kill the card where it sits, sign out the number's app accounts elsewhere and remove passwords set on them; a replacement with the same number keeps handles and accounts, priced by
Config.Sim.replacementCost. - Find Phone: locate (a rough area like a police trace), Lost Lock (lock, passcode, message and number on the lock screen) and Erase, queued until the phone is reachable and never applied while police hold it.
- Passcodes stored as salted PBKDF2 hashes, worked out across server ticks, with a lockout after wrong guesses and admin reset.
- Optional battery (drain, car charging,
powerbank, Low Power, torch drain), drawn no-signal zones, optional no signal indoors, and Airplane Mode recorded in carrier records. - Charging stations placed in game: phones charge nearby or on a pad where anyone (or only the owner) can take them; stations built with your own map tools can join.
- Phone props in four colours with a texting animation and walking with the phone open.
- Calls through
pma-voicechannels with a watchdog that removes any client joining a call it is not in; hold, waiting, swap, merge to five, DTMF, voicemail with greetings, blocking, hidden caller ID, Silence Unknown and Respond with Text. - Messages with server-side delivery queues, receipts, typing, reactions, replies, edits with history, unsend, send later, voice, photos and videos, places and live locations, polls, contacts, drawings, backgrounds and group admin.
- Mail with SIM addresses, aliases, resource mailboxes, Inbox categories, attachments, drafts, undo, send later, Junk for blocked senders and offline delivery.
- Camera on the game texture through WebGL: photo, video (VP8 WebM with optional microphone), time-lapse and portrait, filters, exposure, zoom, flash seen by nearby players, timer, grids and level, with a key map players can rebind.
- Photos with library views, albums and shared albums, Places map, Hidden behind the passcode, Recently Deleted kept for the police recovery window, a WebGL editor with non-destructive edits, trim and Save as New Clip.
- Pluggable media storage: Fivemanage, S3-compatible signing (AWS, R2 and others) or a custom provider through
SetMediaProvider, with a host allowlist for every media address. - Wallet transfers between registered numbers through
o-linkmoney, written down before money moves, with idempotency keys, a per-player lock, daily limits, debit confirmation and refunds; payment requests in Messages. - Store with simulated downloads kept on a server timeline per phone, job, gang and duty restrictions, preinstalled apps and an off switch.
- Dark Chat rooms by handle, and Feed with posts, media, hashtags and mentions parsed into safe tokens, replies, quotes, reposts, likes, bookmarks, follows, trending, edit history, a verified badge, reports, mutes and per-SIM rate limits.
- Gigs app reading the seven Oxide gig jobs live through their exports, with a widget and shift updates as notifications.
- Home screen with pages, dock, folders, widget stacks, All Apps, search, wallpapers from the
wallpapers/folder or URLs, Quick Controls, an app switcher, modes, notification banners and previews, side buttons and a torch. - Nearby sharing within 3 metres for photos, contacts, notes, places and posts.
- Emergency calls to
oxide-dispatch's civilian pipeline througho-link, or to the configured jobs with a blip, from a locked phone or one without a SIM. - Evidence layer: evidence mode with the owner's consent, custody states and log, search authorizations issued in game or decided by another resource (
SetAuthorizationCheck), extraction reports by kind with every opening logged, carrier records, traces, report destinations includingoxide-policecases andRegisterEvidenceBackend. - Counterplay: Erase All Content (recoverable for the recovery window) and the
phone_wipersecure wipe. - App platform for other resources:
olink.phonemail, texts and notifications, hosted apps and widgets with one-time permission prompts, the Photos picker, Camera, uploads, the share sheet, app links, device info, location, one account model with passwords and signed-in phones, evidence records, and live streams relayed by the server with admission checks and kicks. - Live streams with per-server limits on viewers, streams, bitrate, length and upload budget (
Config.Streams), and/phone streamsand/phone endstream. - Compatibility: a qb-phone mail shim for stock QBCore scripts, and an optional LB-Phone export layer (
oxide_phone_compat_lb). - Admin commands under
/phone:settings,device,resetpin,apppassword,battery,charger,calltest,streams,endstream,feedverify,simlostandsimreplace, all gated on theo-linkadmin check. - Live settings editor (
/phone settings) backed by the database and validated on save. - English locale file (
locales/en.json).
Quick Start
Install ox_lib, oxmysql and o-link 1.11.0 or newer, with OneSync turned on. Add pma-voice if you want voice calls.
Download oxide-phone, and the apps you want (oxide-hookr, oxide-leakd, oxide-glitch), from your Cfx Portal assets and put them in your resources folder.
Start the phone after o-link, then the apps:
ensure o-link
ensure oxide-phone
ensure oxide-hookr
ensure oxide-leakd
ensure oxide-glitchLeave out the line of any app you didn't install. The full order is in Installation → Load Order.
Add the items phone, sim_card, burner_sim, powerbank and phone_wiper. The exact lines for each inventory are in Installation → Framework Setup.
Start your server. The phone and the apps create their database tables themselves. Then set things up in game with /phone settings, starting with photo storage, which the camera and the apps' photos and videos need.
Restart the whole server after adding or updating the phone. A running server only notices new folders and new files after refresh is typed in the server console, and o-link only finds the phone at the moment o-link itself starts. See Installation → Installation Steps and Updating.
Settings are stored in the database after the first start
On its first start the phone copies shared/config.lua into the oxide_settings database table. From then on the database copy is used, so editing the file does nothing. Change settings in game with /phone settings instead. See Configuration → How Settings Work.
Documentation
Installation
Prerequisites, load order, items for each inventory, photo storage and setup.
Configuration
Every setting and where it is in /phone settings.
Features
Every app and system, as players and server owners see it.
Integrations
What each optional resource adds, and what happens without it.
Compatibility
qb-phone mail and LB-Phone exports.
Admin Guide
Commands, permissions and the settings menu.
API Reference
Exports, events and o-link phone functions for developers.
Building Apps
Developer guide for putting your resource's screen on the phone.
Evidence Bridge
Sending extraction reports to your own MDT.
Troubleshooting
Common problems and how to fix them.
Assets and Licences
Bundled and third-party assets and their licences.