Eureka Phone: Duo
Apps and what they need
The apps the phone ships, what each one needs from your server, and what stays off until an adapter is verified.
The system apps are always on: phone, messages, contacts and settings, with voicemail, group conversations, receipts and SIM slots. Everything else is an optional app you turn on with duo_apps. An app whose requirement is missing does not break the phone: it answers unavailable and shows its reason, and the rest keeps working.
Catalog
| App ID | What it does | Needs |
|---|---|---|
notes |
Notes, up to duo_notes_max per character. |
Nothing. |
mail |
In-game mail at @duo.mail, with service senders from other resources. |
Nothing. |
photos |
Photo library and albums. | Media (duo_media_provider s3). |
camera |
Taking photos in game. | Media and a screenshot integration. |
reminders |
Reminders with due times. | Nothing. |
wallet |
Transfers between characters. | A verified money adapter and duo_wallet "on". |
invoices |
Invoices between characters and from job accounts. | Money adapter; business invoices also need a society adapter. |
crypto |
A fictional coin with a server-set price. | Money adapter and duo_crypto "on". |
microblog |
Short posts, mentions, tags, trending. | Nothing. Staff moderate with duo_mod. |
photofeed |
A photo feed with stories. | Media. |
classifieds |
The Yellow Pages: player-posted ads by category. | Nothing. Business ads need a verified jobs adapter. |
marketplace |
Listings with photos and prices (no checkout or escrow). | Media for photos. |
dating |
Profiles, likes, matches and private chats. | Nothing. Staff cannot read dating chats. |
crews |
Crews with chat, invites and pings. | Pings need OneSync and duo_crews_pings "on". |
darkchat |
Anonymous channels, gated by an item. | duo_app_items "darkchat:<item>" and an inventory adapter. |
garage |
Vehicles, valet and remote find or lock. | duo_garage naming a verified garage resource; valet needs OneSync. |
keys |
Vehicle key grants. | duo_keys naming a verified keys resource. |
homes |
Homes, doorbell and guest access. | duo_housing naming a verified housing resource. |
services |
The official services directory from config/services.lua, with requests to on-duty employees. |
A verified jobs adapter for requests. |
emergency |
911 reports to the services in config/emergency.lua. |
A verified jobs adapter for responders. |
jobs |
Job center listings from config/jobs.lua. |
A verified jobs adapter for employers. |
news |
Articles by journalists, by job or staff grant. | Media for photos. |
rides |
Taxi requests to on-duty drivers. | OneSync and duo_rides_driver_jobs. |
location |
Pins and live location sharing. | OneSync. |
Also built in since setup arrived: Eureka ID accounts, passcode and Face Pass (a presentation lock: the server does not refuse requests while a phone is locked), the Island for live activities, AirDrop, and a cosmetic flashlight.
What stays off until verified
The phone fails closed by design. On a server whose framework or inventory version has not passed the live adapter smoke test, the core refuses to start unless duo_adapter_verification is warn (staging only). Beyond that:
- Money: wallet, invoices, crypto and billing purchases need a money adapter verified on your framework version.
- Jobs: responders, employees, employers, job-gated drivers and journalists by job need a verified jobs adapter. Emergency reports are still stored and can be read in the phone.
- Vehicles and homes: garage, keys and homes need their resource's adapter verified, with OneSync for valet.
- Live positions: rides, location sharing, crew pings, 911 locations and AirDrop discovery need OneSync.
- Camera capture needs a screenshot integration; voicemail audio and paid apps are unavailable in this build.
Numbers, data and limits worth knowing
- Numbers follow
duo_number_prefixandduo_number_length; existing numbers never change when you change these. - Senders may delete their own messages for
duo_message_delete_window_seconds(10 minutes by default). - Media storage is
duo_media_quota_bytesper character; unattached media is deleted afterduo_media_unattached_hours. - AirDrop files are limited per character per day (
duo_airdrop_daily_bytes, 1 GiB by default) and need a store that enforces signed checksums. - Island activities live in memory: a resource restart clears them and ends calls in progress.
- Passcode and Eureka ID passwords have no recovery flow; staff can delete an account.
Importing from another phone
The migration tool has an import command that reads a JSON interchange file (eureka-duo-import, version 1) and writes characters, lines, contacts, conversations and messages. No converter for a named phone resource ships: write one for your old phone's installed schema that outputs that file, then run the import as a dry run before applying. Never run two phones that assign numbers at the same time.
Last updated October 2, 2026