Play VellumFE on your phone
By the end you’ll have your character in your hand — either a real client you can log in from anywhere, or a second screen on the couch beside your PC.
What you’ll build
Two different things, and you probably want both eventually:
- The app — a client that logs into GemStone IV on its own. Sit on the bus, log in, play. It can also attach to your desk session when you’d rather pick the game up where you left it.
- The browser — a second screen. Nothing to install: point a phone, tablet or spare laptop at your PC on the same network and it mirrors the session you’re already playing, with your keyboard still in charge.
Neither one is the “proper” way. They do different jobs.
Before you start
- For the app: iOS is a beta — via TestFlight; Android is (in progress). See iOS App and Android App for how to get the current build.
- For the browser, and for pairing the app with your desk session: the phone and the PC must be on the same network, and VellumFE’s web server must be running and bound so LAN devices can reach it. That’s Step 1 of the browser tab below.
- Read this once before either route: pairing tokens keep strangers out, but
the traffic itself is plain HTTP. Use this on a network you trust — your home
Wi-Fi, not a café’s. To play from outside the house, put both devices on a
Tailscale or WireGuard network and connect over that. Never forward this
port to the open internet.
.webinforeprints this warning every time you run it, on purpose.
Steps
Serve the session, then pair a device with it.
- In the Launcher, open your connection’s Edit form and expand Advanced.
- Under Web dashboard, tick Enable on port and set a port —
8040is a fine choice. - Set Bind address to
0.0.0.0. The hint under the field reads 0.0.0.0 = allow LAN devices, which is exactly the difference: the default127.0.0.1serves this PC only, and a phone will never reach it. - Save and launch the connection.
0.0.0.0, showing the 0.0.0.0 = allow LAN devices hint.-
Once connected, type
.webinfoin the command input. It prints two lines and then opens a pairing page in your browser:Web session URL (browser): http://192.168.1.21:8040/#token=… VellumFE app link: vellum://remote?host=192.168.1.21&port=8040&token=…&name=Rysk -
The pairing page shows two QR codes, and they are not interchangeable. The browser QR carries the
http://URL; the app QR carries thevellum://deep link. Scan the browser one with your phone’s camera to open the browser client. Scan the app one from inside the app’s Scan QR to add screen to save the session as a character. Scanning the wrong code does nothing — no error, no result, which is a confusing thirty seconds if you don’t know to check.
.webinfo pairing page with the browser QR and the app QR side by side, each under its own heading.→ Expected result: the browser QR opens a working session on the phone
within a couple of seconds; the app QR adds a named row to the app’s
Characters list, showing 192.168.1.21:8040 with a live dot.
Make it yours
Set the phone up as a glance-only second screen. Leave your desktop client running and open the browser URL on a tablet propped beside the keyboard. You keep typing on the PC; the tablet shows the feed, the status drawer and your group’s condition without ever stealing focus. Nothing to install and nothing to uninstall when you’re done.
Author on the couch. The phone edits far more than people expect: macros, touch-wheel slices, highlight rules including redirects and squelch, colors, controller binds, and the entire desktop settings registry over the wire — written to the hosting machine’s config exactly as if you’d typed it there. See Make the game shout when something matters for the phone path through the highlight editor.
Know what stays at the desk. The phone cannot author layout or panel
placement, window resizing, game keybinds, or macro hidden_when
conditions. Its chrome is fixed by design, so windows are not yours to move
there. Build the layout on the desktop; the phone renders what you built.
When it doesn’t work
.webinfo says the web server is disabled. The message is
Web server is disabled. Enable [web] in config.toml or pass --web-port. The
web server is off, not broken. Tick Enable on port in the Launcher’s
Advanced section, or relaunch with --web-port 8040.
.webinfo says the web server is not running. A different message —
Web server is not running (bind failed or still starting) — and a different
cause. The server was asked to start but has no bound port. Usually another
program already holds that port; pick a different one. If you launched a moment
ago, give it a second and run .webinfo again.
The URL says 127.0.0.1 and the phone can’t load it. That address means
“this PC only”, and no other device can ever reach it. VellumFE tells you so
directly, printing
Note: bind = "127.0.0.1" is this PC only. Set [web] bind = "0.0.0.0" so phones on your LAN can connect. Change Bind address to 0.0.0.0 and restart the
session — the bind is fixed at startup.
The QR scans but nothing happens. You almost certainly scanned the wrong one
of the two. The camera app handles the browser code (http://…); the app’s
Scan QR to add screen handles the app code (vellum://remote?…). Crossed
over, both fail silently.
The page loads but never connects. Phone and PC must be on the same network. Phones drop to mobile data when Wi-Fi looks unreliable, which silently ends the LAN connection. Check the phone is really on your Wi-Fi, and that the PC’s firewall isn’t blocking the port you chose.
You want to play from outside the house. Don’t forward the port. Put both devices on a Tailscale or WireGuard network and use the address that network gives your PC — everything else on this page works unchanged, and the traffic is encrypted by the tunnel.
See also
- Browser Client — the browser client in full: its two modes, the settings sheet, and everything the phone can author
- iOS App — TestFlight, the Characters picker, and backgrounding
- Android App — installing the in-progress build, the Characters picker, and battery behavior
- The Launcher — the Advanced section that turns the web server on, and the separate SSH Launcher for cold-starting Lich
- Make the game shout when something matters — authoring highlight rules from the phone
- Command Reference —
.webinfo