New Ripple's score server
Giuseppe Guerra df403fd6e8 🔼 1.14.1 🔼 1 day ago
common @ fb893bdc25 Updated submodule common 2 months ago
constants .SCORES. Use levbod rather than bloodcat in osu!direct beatmaps listing/search 1 year ago
handlers Compatibility patch for client version >= 20180322 1 day ago
helpers Correctly handle BOM in .osu files 5 months ago
objects Chocolate egg container 3 days ago
pp Update catch-the-pp 2 months ago
pubSubHandlers .SCORES. Cythonized some files 1 year ago
secret @ 1ba50e14bb Updated submodule secret 3 days ago
.gitignore .SCORES. Add distutils setup file 1 year ago
.gitmodules CTB pp 2 months ago
.landscape.yaml .HIDE. Update landscape config file 1 year ago
LICENSE Update README and LICENSE 1 year ago Update README 2 months ago First (uncomplete) release 1 year ago Add full build script 1 year ago Achievements! 2 months ago .SCORES. .HIDE. Log personal best stuff as debug 1 year ago
requirements.txt Force latest Cython version because the old one doesn't work well with catch_the_pp 2 months ago Use pyoppai rather than calling oppai as a subprocess 8 months ago
runserver.bat .SCORES. More error checks in ripp 1 year ago .SCORES. Add distutils setup file 1 year ago WHERE AND 1 month ago .SCORES. General refactoring 1 year ago
version 🔼 1.14.1 🔼 1 day ago

LETS Code Health

Latest Essential Tatoe Server

This server handles every non real time client feature, so:

  • Ingame scoreboards
  • Score submission
  • Screenshots
  • Replays
  • osu!direct, thanks to cheesegull
  • Tillerino-like API (partially broken)
  • osu!standard and taiko pp calculation with oppai-ng, made by Franc[e]sco
  • osu!mania pp calculation with wifipiano2, made by Nyo with reference code from Tom94’s osu-performance
  • catch the beat pp calculation with catch-the-pp, made by Sunpy and cythonized by Nyo


  • Python 3.5+
  • Cython
  • C compiler

How to set up LETS

First of all, initialize and update the submodules

$ git submodule init && git submodule update

afterwards, install the required dependencies with pip

$ pip install -r requirements.txt

compile all *.pyx files to *.so or *.dll files using (distutils file). This compiles catch-the-pp as well.

$ python3 build_ext --inplace

then, run LETS once to create the default config file and edit it

$ python3
$ nano config.ini

finally, compile oppai-ng (inside pp/oppai-ng). is a tool that allows you to calculate pp for specific scores. It’s extremely useful to do mass PP recalculations if you mess something up. It uses lets’ config and packages, so make sure lets is installed and configured correctly before using it.
tomejerry supports a lot of parameters, the main ones are:

  • -r, to recalculate PP for every score on every game mode
  • -z to calculate PP for scores with 0 pp
  • -g x to recalculate PP for scores for x gamemode (0: std, 1: taiko, 2: ctb, 3: mania)
  • -i x to recalculate PP for score with x id
  • -n x to recalculate PP for scores submitted by user with x username
    For a full list of all the arguments supported by tomejerry, run python3 --help


This project is licensed under the GNU AGPL 3 License.
See the “LICENSE” file for more information.
This project contains code taken by reference from osu-performance by Tom94.