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.
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 (for now D&D 5e, 5.5 is coming, and many more!), 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.
- 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!
- Quickly and easily sketch your maps, on the fly: don't feel like creating an elaborate map or need a quick room after your players chose to randomly enter a house? Quickly draw a room with the paint tools and let players go wild!
- 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!
- 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
All features, FAQs and guides are available at https://www.YaVTT.eu.

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 by first adding the actual program to Applications. Then try running it; after you close the warning, go to Settings and give YaVTT permission to run.
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.
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: https://codeberg.org/Derto/YaVTT/src/branch/main/docker
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.
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 not very appealing. Improve the UI.
- Ship a tutorial YARS adventure: ship a tutorial ready-to-play YARS adventure with the server.
- Add a System GUI: add a way to create the system.yaml and rules.yaml (and, in the future, the charactermancer.yaml) with an ad-hoc GUI.
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.-- Done!
- 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.
Features that will probably never be in YaVTT
- Local-first touchscreen support: I do not think I will ever add local-first play support to YaVTT. I think it is a great idea to add UX where it counts while keeping the joy to physically have a sheet in hand, but I do not own large touch-screen or ultra-technologic tables, meaning I'm not quite sure what should be needed; neither I use digital maps or VTTs to help with local sessions. If you are interested there is the excellent Digital TableTops.
- Full in-game coding: Due to technical constraint and my aim to keep YaVTT simple, it will probably lack a fully featured in-game coding language like MapTools, one of the most flexible VTTs out there, does. Instead I am focusing on creating a generic enough framework to make the creation of a system as easy as possible.
- Add map creation: similarly, I am not interested in making YaVTT a place where to create detailed maps other than the simple one already available. You can check Arkenforge if you are looking for a local VTT with map-making potential.
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.
I also wanted a way to quickly draft RPG systems without having to code... so I coded a VTT. Duh! Jokes aside, the system framework offers a no-code way to build systems. And you can get it as complex as you want! Add tens of automations or just have the skeleton of the system built: your choice! Soon, I will create a guide that will be available on yavtt.eu. Stay tuned!
Why AGPL 3.0?
The license for YaVTT is AGPL 3.0. I believe in open-source software and in sharing with the community! I'd wish for nothing more than see this project forked or gaining traction to remove the worse AI-generated code and replace it with fully human-generated code.
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 Shmeppy for its wonderful website: https://shmeppy.com/
Thanks to Arkenforge for their detailed guide on the UVTT format: https://arkenforge.com/
Thanks to the contributors Xuciloda, Disu, Science3398.
AI disclosure
YaVTT has AI generated code, especially for front-end. The generated code is reviewed and tested. My aim is to reduce reliance on AI as time passes and I get better at coding, and hopefully if the project gains traction, to have skilled contributors who can help!
The YARS system and the Darkness Falls world will NEVER have any AI-generated rules, text or images, ever.
