The lobby and invites

Room codes, QR invites and links, sharing an app-hosted world online, rotating a code, seats and readiness, mid-game joining, the DM seat and co-DMs, and starting the game.

Desktop appAndroid appBrowser

The lobby is where a campaign waits between sessions and before the first one: the cover, the , the party list, table settings, and rules, and the start button. Every member can open it; the lead and the Dungeon Master can act in it.

A campaign lobby: the cover and premise, the room code panel with a QR code and Code, Link and Share buttons, the party with its lead, Next session and Voice
The lobby. One code, a QR of the same, and the party filling in.

The room code

Every campaign has a of four to twelve letters and digits, drawn from an alphabet with no 0, O, 1 or I. It never expires on its own. The Room code panel in the lobby, and the invite dialog on the Party tab during play, show it three ways:

  • The code, to read out loud. On an that is being shared, the code shows as two halves, ABCD2345-EFGH6789: the host's code, which is also the 's name, and the table's. A friend types the pair into their app and it finds your device with nothing else to look up. On a server with its own address the table's code stands alone, and the friend adds the server by address first.
  • The link, https://opendungeonmaster.com/j?s=...&c=CODE. It opens an that names the destination and asks the person to confirm, then opens the app if it is installed, or the host's pages in the browser.
  • The QR code, of the same link. A phone camera opens the interstitial; the Android app's scanner joins directly.

Copy code, Copy link, and on Android and in a browser that offers it, the OS Share sheet. New code rotates the code and kills every old link and QR at once.

Sharing an app-hosted world

On a world hosted from the desktop or Android app, opening the lobby asks the app to . The invite reads "Opening a public address..." and then "Shared online" as the comes up, and every link and QR follows the public address. Stop sharing is in the same place and in the app's Settings; stopping keeps your claimed so only you can bring it back. If another device holds your host code, the lobby card and the invite dialog say so and offer a new code.

For a table in the same room, the desktop and Android apps' Settings have : the world answers on your local network with no internet, at a plain http address the app shows with its QR code. On a self-hosted server on a LAN, the server's own QR button (bottom right of every page) encodes its address for a friend on the same network.

Who can join, and when

  • The code admits people while the campaign exists, has not ended, has a free seat, and is not mid-game with the door shut. in the settings opens the door after play starts.
  • On an a guest joins with a name and nothing else. On a self-hosted server with sign-ups, a live lets a newcomer register without an .
  • Guesses are throttled like wrong passwords, so a leaked code cannot be brute-forced against.
  • Invite links show a preview of the table before sign-in, so a friend can see what they are joining.

Seats and readiness

Choose your hero offers three routes: Ready-made hero when one is available, From your library, and Build your own, with the suggested route marked. From your library opens one chooser with the player's own heroes, from your adventures, the table's ready-made heroes and Build a new character; every pick there opens a confirm sheet that says what changes at this table and checks the rules before it seats. The lobby says what happens next: choose a hero, get ready, or wait for the lead to begin, and it shows a player taking a seat as it happens. The party list shows who is ready. The lead can remove a member, which frees the seat. Playing more than one character per player is a campaign setting.

The Dungeon Master seat

From the party list the lead can make DM (seat a person as the , which moves to them), make (an assistant who shares the console) and remove co-DM. The DM runs no character and holds no party slot. A co-DM cannot hand the game to the AI; that takes the DM or the owner. A DM can open the table without owning the campaign. See Human DM mode.

Party story

The card holds the table's shared backstory: who these characters are to each other and why they travel together. The lead, a and anyone with a character here may write it; Draft from our backstories writes a first version from the characters' own, which nothing keeps until someone saves. The Dungeon Master, the story planner and story setup read it once it is written. It is also on the table's Party tab.

Lower in the lobby: Choose your hero with Ready-made hero, From your library marked as suggested and Build your own, then Begin the adventure and the Party story card, beside the grouped table settings The Party story card on a phone: the party backstory box, Save backstory, and a note that the DM reads it every turn
Choose your hero and the Party story on a desktop, and the Party story on a phone.

Settings, lore and rules in the lobby

The lobby carries the campaign's table settings, its (party-visible entries), its , and the import of prep, all editable by whoever holds . A 's places and show as a strip under the cover.

Starting

When the party is ready, the campaign owner or DM presses Begin the adventure. The Dungeon Master opens the first scene, and every player is taken to the table. Later sessions open straight from Enter the world on the home screen, under "Continue your tale", into the table; All campaigns returns to the campaign list. During play, use the Settings tab for table settings, bringing in more prep and ending the campaign.

Checked against desktop and Android app 0.19.4 and server 0.28.4 on 2026-10-21. Something wrong or missing? Open an issue.

Download · v0.21.2
Server app · v0.30.2

Optional. Runs the table for a whole group on one machine that stays on. Everyone else just installs the app.

Free & open source · MIT licensed · served from GitHub releases