Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

📷 screenshot pending
The same character in the native app (left) and in a tablet browser beside the desktop client (right).

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. .webinfo reprints this warning every time you run it, on purpose.

Steps

Serve the session, then pair a device with it.

  1. In the Launcher, open your connection’s Edit form and expand Advanced.
  2. Under Web dashboard, tick Enable on port and set a port — 8040 is a fine choice.
  3. 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 default 127.0.0.1 serves this PC only, and a phone will never reach it.
  4. Save and launch the connection.
📷 screenshot pending
Launcher Advanced with Enable on port ticked and Bind address set to 0.0.0.0, showing the 0.0.0.0 = allow LAN devices hint.
  1. Once connected, type .webinfo in 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
    
  2. The pairing page shows two QR codes, and they are not interchangeable. The browser QR carries the http:// URL; the app QR carries the vellum:// 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.

📷 screenshot pending
The .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