Skip to content

What is TomYum? ​

TomYum is an open-source private server for the rhythm game osu!, written in C# on .NET 10. One TomYum server takes the osu!stable client, the osu!lazer client and many older stable builds, all on the same accounts and leaderboards.

This site is about TomYum-OSS, the open source version, and is written for people who want to run their own server with it.

somtum.fun runs a modified TomYum

somtum.fun runs its own, modified version of TomYum-OSS, with changes and plugins that are only for somtum.fun (such as its Discord bot and anti-cheat). New features often reach somtum.fun first and TomYum-OSS later. So something you see on somtum.fun may not be in TomYum-OSS yet, or may never be. These docs only describe what's in TomYum-OSS.

Not affiliated with ppy

TomYum is a fan project. It isn't affiliated with or endorsed by ppy Pty Ltd, and "osu!" is ppy's trademark. Run your server under your own name and branding.

How it fits together ​

TomYum isn't one program on its own. A full server is a small stack, run with Docker Compose:

PartWhat it does
TomYum (server)The game server: bancho for stable, /web/*.php, score submission, osu!direct, IRC, custom beatmaps, the admin API the website's staff panels use.
osu-webThe website: profiles, rankings, beatmap pages, forums, and the /api/v2 and OAuth that lazer logs in with. It's ppy's Laravel site with TomYum's changes (osu-web-tomyum).
ppy's servicesThe score processor (lazer pp and stats), the spectator server (lazer multiplayer, spectating and presence), the score indexer and the notification server.
MySQL, Redis, ElasticsearchStorage, shared by everything above.
CaddySplits requests between TomYum, osu-web and the spectator server by host name.

TomYum and the website share one account system: an account made on the website logs into the game, and an in-game sign-up shows up on the website. Every vanilla score is copied to the website, so profiles, rankings and beatmap leaderboards fill up as people play.

Status ​

TomYum is at version 0.6.0 (0.5.0 was its first stable release). The roadmap lists what's left before 1.0.0: scaling, object storage, and taking the remaining somtum.fun-specific choices out of the code.

Where to go next ​

Thanks ​

TomYum is heavily inspired by bancho.py, and learned from BanchoNET, Sunrise, g0v0-server, rosu-pp, and ppy's own open-source osu! and osu-server-spectator.

TomYum is MIT licensed (LICENSE).

TomYum is MIT licensed. Not affiliated with ppy Pty Ltd; osu! is a trademark of ppy Pty Ltd.