New Ripple's score server
Giuseppe Guerra 9e26d76871 Updated submodule pp/catch_the_pp 1 week ago
common @ 36d6c0dac5 Updated submodule common 1 month ago
constants .SCORES. Use levbod rather than bloodcat in osu!direct beatmaps listing/search 1 year ago
handlers CTB pp 2 weeks ago
helpers Correctly handle BOM in .osu files 3 months ago
objects CTB pp 2 weeks ago
pp Updated submodule pp/catch_the_pp 1 week ago
pubSubHandlers .SCORES. Cythonized some files 1 year ago
secret @ a52b7fd1cf Ops 3 months ago
.gitignore .SCORES. Add distutils setup file 1 year ago
.gitmodules CTB pp 2 weeks ago
.landscape.yaml .HIDE. Update landscape config file 1 year ago
LICENSE Update README and LICENSE 1 year ago Update README 2 weeks ago First (uncomplete) release 1 year ago Add full build script 1 year ago CTB pp 2 weeks 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 weeks ago Use pyoppai rather than calling oppai as a subprocess 6 months ago
runserver.bat .SCORES. More error checks in ripp 1 year ago .SCORES. Add distutils setup file 1 year ago Tomejerry: use an appropriate number of MySQL connections 1 week ago .SCORES. General refactoring 1 year ago
version 1.13.1 9 months ago

LETS Code Health

  • Origin:
  • Mirror:

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.