iOS App
The whole client on your iPhone — log in and play with no PC involved. (beta — via TestFlight)
What it’s for
The iOS app carries the same Rust core the desktop client runs, so the phone talks to play.net by itself. Account, character, game world, Connect — you are in, with nothing running at home.
And when something is running at home, the app plays that as well: it attaches to a Lich session on your PC so a scripted character keeps its scripts, and it pairs with a VellumFE session already running on your desktop to become a live second screen for it. The app is a full client and a pairing client — not one or the other.
Set it up
There is no iOS app on the desktop — but the desktop prepares what the iPhone will reach for.
- To let the iPhone mirror this session: in the VellumFE Launcher, open
the connection’s Advanced fold, tick Enable on port under Web
dashboard, and set Bind address to
0.0.0.0. Launch, then type.webinfoand leave the pairing page on screen — the iPhone scans the VellumFE app QR from it. - To let the iPhone attach to Lich: launch Lich with
--detachable-clientand note the host and port.
→ Expected result: a pairing page showing two QR codes, plus a Lich host and port to hand to the phone.
⚠️ The app shows two login tabs; a desktop browser shows three. The browser’s in-page Remote tab is hidden here deliberately, because the native Characters picker replaces it — the picker can scan pairing QR codes with the camera and store saved servers in the iOS Keychain, which a web form cannot. The capability moved; it was not removed.
Common setups
Carry your desk session to the couch
- On the PC, launch the character with web enabled on
0.0.0.0and run.webinfo. - On the iPhone, open Characters → Scan QR to add and scan the VellumFE app QR. The saved entry names itself after the character, because the link carries the character name.
- Tap the new row.
→ The PC session keeps its own window open and playing while the iPhone shows the same character live. Lich’s one-client limit does not apply — the web layer mirrors the session rather than replacing its client.
Add a server by hand when there’s no QR
- Characters → Add manually. The sheet is titled Add character.
- Fill in Label (required, e.g. Rysk), Host (e.g. 192.168.1.21), Port (e.g. 8042), and Pairing token (optional). Tap Save.
- The row shows a dot: green and live when the machine answers, grey and offline when it does not.
→ You can see whether the PC is awake before tapping, instead of waiting out a failed connection.
Playing
The screen is the browser client — story pane, stream chips, tappable exits and nouns, macro tray, status drawer with the injury doll and character sheet, sounds, and the highlight and color editors. Everything on that page applies here, including the fact that the phone’s highlight editor does handle redirects and squelch.
Backgrounding
iOS has no equivalent of Android’s foreground service. When the app goes to the background iOS suspends it and the game connection goes stale.
- On return, the session reconnects automatically and resumes where you left off. Expect reconnect-on-return rather than a keep-alive.
- Repeated drops with no input from you stop the reconnect loop, so a forgotten phone winds down instead of relogging all night.
- While you are on a paired desktop session, the app’s embedded core sits idle — there is no game connection on the phone to go stale, and the usual web reconnect picks the mirror back up when you come back.
Tips & gotchas
⚠️ Deleting a saved character deletes its pairing token with it. Swipe a row to delete, or tap Edit in the toolbar for the multi-select delete. To come back you re-scan the QR or re-enter the token.
- Saved credentials never sit in plaintext. Saved servers live in the iOS
Keychain under service
dev.vellumfe.remote-server, accessible only after the first unlock and only on that device (never in a backup). A remembered play.net password is sealed by the Rust core with a device master key. - Scanning the wrong QR does nothing. The pairing page shows two: the
browser one (
http://…/#token=…) is for a browser; the VellumFE app one (vellum://remote?…) is for this app. - A
vellum://lich?host=…&port=…link prefills the Lich tab and stops there. It never auto-connects — you always press Connect yourself. - The iPhone needs a private path to your PC. Home Wi-Fi, Tailscale, or a VPN. Never the open internet, for either the Lich port or the VellumFE web port.
- The way back off a paired session is ⚙ → Leave this server (app login), which returns you to the two-tab login screen.
See also
- Browser client — the interface this app renders, and the
[web]settings on the PC side. - Android app — the same client on Android.
- The Launcher — where Web dashboard and Bind address live on the desktop.