New Ripple's score server

Giuseppe Guerra 499461bd61 Force ASCII encoding when sending #1 message to #announce 2 weeks ago
common @ 8c391098e0 Updated submodule common 2 weeks ago
constants .SCORES. Use levbod rather than bloodcat in osu!direct beatmaps listing/search 10 months ago
handlers Force ASCII encoding when sending #1 message to #announce 2 weeks ago
helpers Correctly handle BOM in .osu files 1 month ago
objects Add taiko pp 1 month ago
pp Fix /api/v1/pp not working (fokabot's "error in LETS api call") 4 weeks ago
pubSubHandlers .SCORES. Cythonized some files 11 months ago
secret @ a52b7fd1cf Ops 1 month ago
.gitignore .SCORES. Add distutils setup file 11 months ago
.gitmodules Add oppai-ng submodule 2 months ago
.landscape.yaml .HIDE. Update landscape config file 10 months ago
LICENSE Update README and LICENSE 1 year ago Update README, add .landscape.yaml 11 months ago First (uncomplete) release 1 year ago Add full build script 11 months ago Removed .data/oppai/cache folder check 4 months ago .SCORES. .HIDE. Log personal best stuff as debug 1 year ago
requirements.txt Removed pyoppai from requirements.txt 1 month ago Use pyoppai rather than calling oppai as a subprocess 4 months ago
runserver.bat .SCORES. More error checks in ripp 1 year ago .SCORES. Add distutils setup file 11 months ago tomejerry: don't force completed=3 when running with -i argument 1 month ago .SCORES. General refactoring 11 months ago
version 1.13.1 7 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
  • PP calculation through oppai (std) and wifipiano2 (mania)
  • Screenshots
  • Replays
  • osu!direct
  • Tillerino-like API


  • Python 3.5
  • Cython
  • C compiler
  • MySQLdb (mysqlclient)
  • Tornado
  • Bcrypt
  • Progressbar2 (only for )
  • Raven
  • Datadog
  • oppai

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)

$ python3 build_ext --inplace

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

$ python3
$ nano config.ini

finally, configure oppai as described below.

How to set up oppai with LETS

LETS uses lolisamurai's oppai as pp calculator for std. We use a slightly modified version of oppai, you can find it here.
Go one directory above LETS (in the same directory where you have old-frontend,, lets and so on) and clone oppai inside the oppai folder, compile it with make and create the maps folder:

$ cd ..
$ git clone
$ cd oppai
$ make
$ chmod +x oppai
$ mkdir maps

Note: wifipiano (mania pp calculator) is tailor-made for LETS and doesn't require any configuration. 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 (only std and mania are supported at the moment)
  • -z to calculate PP for scores with 0 pp
  • -g x to recalculate PP for scores for x gamemode (0: std, 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.