Yet Another Virtual TableTop
Yet Another Virtual TableTop (YAVTT) is an open-source virtual tabletop designed for online play. It is self-deployable through Docker, plays nice with pre-existing home server setups, and features a cross-platform client available on Windows, Linux and MacOS (future implementation).
Are you a player?
- Get the client here!
- Once downloaded, ask your master for their IP or URL and put it in the server field.
- Ask them to add your account.
- Insert the username they gave you, click login, and set your password. You're all set! That's your account and it is linked to that server!
Are you the master/admin?
- To install the server (preferred way to run YAVTT), follow the instructions here!; or
- Install the standalone server on the Downloads page!
- Once your server is app and running, either add player accounts via your admin web UI (your-url-or-ip/admin) or add them through your client.
Features
YAVTT is a simple platform where you can play different role-playing games that require dice and a map. Here are some of its features:
- Online play: play online with your friends! Run your own server, it's easy to set up and easier to manage, or choose the Integrated Server version. Create adventures, invite players, and get the dice rolling!
- Play what you want: YAVTT does not lock you and your players into a single game system. Thanks to its modular design, you can create your own system, use a pre-built one shared by the community, or play YARS, the system that gets shipped with YAVTT!
- Play however you want: don't feel like using a fixed system and want to get closer to the feel of pen-and-paper? The dice system supports various type of rolls, such as dice pool and fudge. Get a minimal system installed and start playing!
- Full illumination and vision system: surprise your players with spectacular light effects; ambush your enemies by hiding behind a wall; steady your breath as you see looming undisclosed figures at the edge of your field of view.
- A world of adventures: YAVTT allows you to export your adventure and share it with anyone with a simple click. Importing it is even easier! Get a ready-to-play adventure on your own server and start your session in minutes.
- Full mechanics on import: when importing from supported systems (e.g. D&D 5e), YAVTT wires the full mechanical data — typed multi-component damage, saving throws, and condition riders — not just flavour text. Spells, creatures, and weapons arrive ready to play.
- Support for large maps: YAVTT is fast enough to support even large battle-maps with hundreds of walls and light sources. You'll finally be able to play on that 10.000*10.000 map you've always dreamt of!
- Updates made easy: single-click updates for YAVTT and for systems that won't break anything (mostly!). Less tinkering, more creating NPCs your players will never speak to!
- Administer your server from anywhere you are: access the admin dashboard via web and manage players, systems and backups!
- Music and SFX: with music from Science3398, the possibility to add your own tracks and support of SFX and triggers, audio has never been so important in a VTT.
- It's free!: YAVTT is free and will forever be free. It is an open-source project you can use at your heart's content. There is only one payment I want: share the tales of your adventures with me :D

How to use
Getting the client
Getting the client is easy! Download the correct client for your PC, and follow the guide for your operating system below.
Linux
On Linux, you can download the AppImage for your architecture. It supports auto-updating. Make the AppImage executable either via your OS GUI or with the following terminal command: chmod +x YAVTT_version.AppImage. Then you can simply double-click and open it.
Windows
On Windows, download the .zip file, extract it in a folder, and run the .exe. Skip the Microsoft Defender blue screen and you're all set! It support auto-updating.
MacOS (Untested!)
On MacOS, download the .dmg and run it; remember to skip the "unsigned" nag.
Build it yourself
You can also build the client yourself from source.
Prerequisites:
- uv as your Python package manager;
- A Rust toolchain (rustup.rs);
- For a Windows build, you'll also need Visual Studio C++ Build Tools with the "Desktop development with C++" workload.
Clone and install dependencies:
git clone https://codeberg.org/Derto/YAVTT
cd YAVTT
uv sync --extra client
Linux (AppImage): from the root folder of the repository, run
./build_appimage.sh
This creates YAVTT-x86_64.AppImage in the root folder. Launch it with ./YAVTT-x86_64.AppImage.
Windows: from the root folder, run
uv run python build_windows.py
This creates dist\YAVTT-windows-x64.zip. Unzip it and run YAVTT.exe inside the extracted folder.
Installing the server
Without the server, your clients will not be able to connect and play. Have no fear! Getting your server set up is trivial. Full installation guide available here.
Installing with Docker
Installing with Docker is the preferred and supported way to run the server. yavtt-server runs either behind a reverse proxy or in clear: I suggest you to always use a reverse proxy such as Nginx, but it may be not needed if you only host YAVTT.
For full installation instructions, please refer to the following link:
Installing with the standalone build (IS ⇾ Integrated Server)
WARNING: I advise against using this method. If you use the Integrated Server build you miss on:
-
24/7 server;
-
easy backups;
-
stability.
If you CANNOT use Docker or if you simply want to test YAVTT, you can use this build. Only the admin should download it, all the players must download the simple non-IS lightweight client.
Once you download the correct standalone build for your OS, just run it. You must open the port 8000 to allow connections from players outside your LAN. Once you're done and you've created your admin account, simply give your players your public IP, and they will be able to connect to your server. Make sure your port is opened!
Since I cannot test the MacOS build, right now, there is no MacOS_IS version.
For your convenience, there is also a simple way to upgrade your standalone build to a Docker build. Simply export the full package, move it to your shiny new server location, and run the migrate.sh script.
Roadmap
YAVTT is not yet complete and is currently in Alpha. This roadmap lists all the future features that will lead YAVTT to its 1.0 release.
- Test full modularisation: Test modularisation potential with other RPG systems such as Blades in the Dark, Ironsworn, GURPS.
- Add a yaml-driven Charactermancer and ship the full framework guide: add a way for system creators to declaratively build a Charactermancer for their preferred system and write a detailed framework guide.
- Improve client customisation: allow for players to extensively customise the style of their client, and for system creators to design custom-made sheets.
- Refine UI: UI right now is basic. Improve the UI and the UX for creating walls, lights, characters, NPCs.
- Ship a tutorial YARS adventure: ship a tutorial ready-to-play YARS adventure with the server.
Roadmap for 1.1 and beyond:
- Add procedural audio library: add a procedural audio library and allow masters to control audio on the fly.
- Add Triggers: add Triggers, events that are tied to a square, which are activated on stepping over them. They can trigger sounds, flags (such as the is_visible flag on an NPC), or activate traps; then extend their usage to allow add-ons to build on them.
- Create a Macro System: create a Python-like Macro system.
- Add Card support: add Card RPG support with a way to deck-build easily, smoothly, and a way to create and see cards.
- Add Traveling support: add the support for the Travel mechanic in YARS, and make it modular and extendable.
Why yet another virtual tabletop?
I decided to create YAVTT to have a place where to test my new system, YARS, online. Since I do not know JavaScript, I decided to try building everything in Python. I actually implemented some Rust after I hit a wall with Python performance for dynamic lightning.
To create YAVTT I drew inspiration from other VTTs, such as Foundry VTT. Foundry is a great piece of software and I have used it happily for years! However, I have always preferred the feel of "native" programs, and I think a non-browser client is better than a web app as long as cross-platform compatibility is assured.
Why AGPL 3.0?
The license for YAVTT is AGPL 3.0. I believe in open-source software and in sharing with the community!
Thanks
Thanks to: andymeneely, aussiesim, carl-olsen, caro-asercion, cathelineau, catsu, darkzaitzev, delapuoite, faithtoken, felbrigg, generalace135, guard13007, heavenly-dog, irongamer, john-colburn, john-redman, kier-heyl, lorc, lord-berandas, lucasms, pepijn-poolman, pierre-leducq, priorblue, quoting, rihlsul, sbed, seregacthtuf, skoll, sparker, spencerdub, starseeker, viscious-speed, wildabeast, zajkonour, zeromancer for their extraordinary art work with icons and their good heart. Thank you for sharing them: https://game-icons.net/
Thanks to Abbie Gonzalez for her OpenDyslexic font: https://opendyslexic.org/
Thanks to the awesome devs who create FoundryVTT and inspired YaVTT: https://foundryvtt.com/
Thanks to the contributors Xuciloda, Disu, Science3398.