Server overview and requirements

What the server is, when to run one instead of hosting from the app, the hardware it needs with and without a local model, the single-process rule, the ports it uses, and where its data lives on disk.

Server

The server is the same program that runs inside the desktop and Android apps, run on a machine of your own: a PC that stays on, a home server, a rented box. It serves the game's pages to browsers and the game's data to the apps, keeps every account and campaign in one encrypted database, and calls whatever AI services you point it at.

When to run one

  • You want the table reachable without anyone's app being open.
  • You want one AI Dungeon Master for a group: a fully local model on one GPU everyone shares, or the Claude Code or Codex subscription you already pay for, signed in on the server's computer.
  • You want the extras: scene art and painted by AI, or another speech server for , and dictation, the full voice with floor rules and side rooms, , , from the , transcription.
  • You want accounts with passwords, sign-up policies and admin tools.

If none of that applies, hosting from the app is simpler and equally complete for a table with an OpenAI key or a .

Hardware

SetupWhat you need
, or a remote key (OpenAI, )Any machine that runs or Node (22.18 or newer, 24, or 26): a Raspberry Pi 4 class box, a NAS, a small VPS. 2 GB of memory is comfortable.
A CLI agent (Claude Code, Codex, opencode, Grok Build)The same small machine, with the program installed and signed in on it. The turns run on the program's own plan. A server started with Node or systemd finds it; the Docker image needs the program built into it. See Agent programs and connected agents.
A local A GPU (or a Mac, or an integrated GPU with shared memory) with enough memory for the model at a : about 45 GB for the recommended Qwen3.6 35B at , 28 GB at Q4, 10 GB for the Gemma 4 12B fallback. Expect one to three minutes per on a single consumer GPU.
Local image generation with an SDXL-class checkpoint: 8 GB of GPU memory or more. On an integrated GPU the image model and the text model share one pool and jobs are queued one at a time.
and and run on a modest GPU or on the CPU with some delay.

One process, one copy

Run exactly . The server is a single synchronous SQLite writer with an in-process event bus, queue and voice . It cannot be replicated, load-balanced, or pointed at a shared data folder from two hosts, and a development server must never share a data folder with a production one.

Ports

PortWhat
3005The web port under , dev:lan and start:lan. Put in front of this one.
3000Plain next dev and next start.
44444 UDP and TCPVoice media when the transport is the built-in . Not proxied; opened straight to the host.
8001, 11434 and , on the host, called by the server.
8188, 7869 and the FLUX image worker.
8880, 8870 text-to-speech and speech-to-text.

Only the web port and, for voice, the need to be reachable by players. Everything else is the server talking to services on its own host. See Ports and addresses.

Data on disk

PathWhat
data/local-roleplay.sqliteThe database: accounts, campaigns, sheets, the . Encrypted at rest with DB_ENCRYPTION_KEY.
data/content/open5e.sqliteThe read-only . Under it lives at /app/content, outside the data volume.
data/worlds/Installed .
data/.db-keyThe key Docker generated on first boot, if you did not supply one.
public/uploads/Portraits, covers, backdrops and people uploaded.
public/generated/, public/generated-audio/AI-painted pictures and cached audio.
public/ambience/The and its credits, shipped with the project.
models/The for recall.

Next

Run with Docker is the ten-minute path. Either way, the first account needs the the server prints, and a then walks the storyteller, pictures, voice and . Run from source for a machine without or for development.

Checked against desktop and Android app 0.17.2 and server 0.26.2 on 2026-10-11. Something wrong or missing? Open an issue.

Download · v0.17.2
Server app · v0.26.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