A little software which lets you share your RetroAchievements activity with your friends on Discord.
- Python3 or Docker
pip install -r requirements.txtblessedhttps://pypi.org/project/blessed/configparserhttps://pypi.org/project/configparser/pypresencehttps://pypi.org/project/pypresence/pillowhttps://pypi.org/project/pillow/
- From RetroAchievements, your username and your API key
- On the website go to your profile settings, scroll down to the
Authenticationsection and there you will find your Web API Key.
- On the website go to your profile settings, scroll down to the
Note: If you don't care about fancy terminal graphics, use sracli.py. In that case, you only need to install pypresence and configparser for the requirements.
- Detailed Rich Presence on your Discord profile (name of the game, details about what you're currently doing in the game, icons, etc.)
- Two clickable buttons (only others can see them): One leads to the RA page of the game you're currently playing; the other leads to your RA profile. You can enable or disable them using
python racli.py -s. - A CLI that provides some information, fetches the icon of your current game and attempts to recreate it in the terminal or command line you're using.
- Character presets for recreating the game icon, or you can create your own by editing
charset.txt. - A little automation feature called
timeout. It tries to detect when you are actually playing and activates or deactivates the rich presence accordingly. It is disabled by default.
After installing the requirements and ensuring you have all the necessary data, start by launching the setup script with python racli.py -s from terminal. Navigate using the corresponding numbers, provide the requested details, and you're good to go. Or, if you prefer you can manually modify config.ini, but be careful, as incorrect changes could break the code. Also, never ever modify data.ini.
When you have provided all your details, you can launch the script without flags by running python racli.py.
Important
The Docker container requires manual editing of config.ini because it runs non-interactively. Alternatively you may run python racli.py -s manually as shown above and copy the generated config.ini into the Docker bind mount path in the docker-compose.yml file.
![]() |
![]() |
![]() |
|---|---|---|
![]() |
![]() |
![]() |
A Compose file example is available here. The example includes the desktop Discord client provided by kasmweb which will allow you to run a headless stack on a server without requiring a traditional desktop Discord client.
The Discord image is pinned to a verified Kasm image digest. When updating it, verify that the
Discord renderer starts and the local RPC endpoint responds before changing the pinned image in
docker-compose.yml.
With this, you can play games on a Steam Deck or other handheld emulation device and your Discord status will stay updated without requiring a Discord client running on that device.





