A fully self-hosted virtual tabletop for D&D 5e. Per-player instanced fog of war, AI-generated tokens, real-time combat tracking, and complete GM control — all running on your own machine with Docker.
Everything a Game Master needs to run a compelling session — and everything players need to feel genuinely present in the world.
TableTop Forge runs inside Docker — a lightweight container system that handles all dependencies automatically. You only need to install Docker once.
.dmg and drag Docker to Applications. Launch it from Applications and wait for the whale icon in your menu bar.TabletopForge.zip anywhere on your Mac — your Desktop or Documents folder works well. You should see a folder containing a docker-compose.yml file and a backend folder.http://localhost
http://<your-Mac-name>.local. The Mac advertises that automatically — find your name in System Settings → General → Sharing → Local hostname. Mobile-app players (iOS / Android) need this .local form rather than a raw IP, because the App Store and Play Store sandboxes restrict cleartext to known-private destinations. The GM panel's Player Join Link box prints the right URL for you to read aloud.docker compose down. To start it again later: docker compose up -d. Your session data is preserved automatically.TabletopForge.zip and choose Extract All. Place the extracted folder somewhere accessible, like your Desktop or C:\Projects.http://localhost
.local URL instead of a raw IP, install Apple's free Bonjour Print Services for Windows (4 MB MSI). After install, your PC permanently advertises <COMPUTERNAME>.local — that's the URL the GM panel prints in the Player Join Link box. iOS / Android Play Store apps require this .local form because they refuse cleartext to raw LAN IPs by policy. If you skip Bonjour, browser-based players can still connect via the IP, but the App Store / Play Store mobile apps will refuse.docker compose down. To restart: docker compose up -d. Your data is stored in Docker volumes and persists between restarts.http://localhost in your browser.
.local URL (required by the iOS App Store and Android Play Store sandboxes), make sure Avahi is running. Most desktop distros already ship it; if not:
network_mode: host under the backend: service in docker-compose.yml — that lets the container's own mDNS publish reach the LAN as tabletopforge.local.
.local URL (e.g. http://yourbox.local) once Avahi + Bonjour publish are running. Browser-based players can also use the LAN IP http://192.168.x.x; mobile App Store / Play Store builds need the .local form.TableTop Forge can connect to a local AI model to generate D&D stat blocks and token images on demand. No API keys or internet connection required — everything runs on your hardware.
http://localhost:1234 by default.http://localhost:1234 as the AI Base URL. Enter any model name shown in LM Studio.http://localhost:11434. You can verify with: ollama listhttp://localhost:11434 and the model name to gemma3 (or whatever you pulled).0.0.0.0 (or *) so the app can reach it over LAN/Docker. The default localhost binding only accepts connections from the same machine. Restart SwarmUI after changing it.7801 in your firewall. On Windows: New-NetFirewallRule -DisplayName "SwarmUI" -Direction Inbound -Protocol TCP -LocalPort 7801 -Action Allow (admin PowerShell).http://host.docker.internal:7801 when SwarmUI is on the same machine as Docker, or the LAN IP when remote), then click Test Image Connection. The Model field can be left blank to auto-pick the first installed model.Plugins extend the app with new map effects, custom GM tabs, click-to-place tools, and shared state that auto-syncs between the GM and players. Install via the Plugins section of the Session tab in the GM view.
?previewTokenId=) so it never spawns a duplicate on the map.
Free, self-hosted, and open for your table. No accounts, no subscriptions, no data leaving your network.
Both ship the same TableTop Forge server software, the same plugin contract, the same multi-device LAN access. They differ only in how the database and runtime get packaged.
If you're on a Mac at the table and want it to "just work" — pick the .app. Drag it to Applications, double-click, you're done.
If you want to host the server on a separate machine (a home server, a NUC, a Linux box, a desktop PC sitting in another room), or you already use Docker for other things — pick the Docker stack. It's also the only option for Windows or Linux right now.
Native Stats / Abilities / Inventory / Spells client for tablets & phones. Connects to your hosted server via the same code your players use on the web.
TableTop Forge is completely free and always will be. If it helps your sessions run smoother and you'd like to say thanks, buying me a coffee keeps the forge burning.