How to Use Alternative Servers with osu-winello: A Complete Guide to the `--devserver` Flag
You can connect osu! to alternative servers like Akatsuki or Gatari by passing --devserver <address> to the osu-wine launcher or by setting POST_LAUNCH_ARGS="-devserver <address>" in a configuration file inside ~/.local/share/osuconfig/configs/.
The osu-winello project by nellokudo provides a Linux wrapper for osu! that simplifies Wine prefix management and launch configuration. When you want to test beatmaps on a private server or compete on alternative leaderboards, you need to redirect the game client away from the official osu! servers. Understanding how osu-winello handles command-line arguments allows you to seamlessly switch between server environments.
Understanding the osu-winello Launch Architecture
osu-winello uses a Bash wrapper script named osu-wine located at the repository root. This script acts as the intermediary between your terminal commands and the actual osu!.exe process running inside the Wine prefix.
The wrapper implements a configuration system that reads every *.cfg file from $XDG_DATA_HOME/osuconfig/configs (defaulting to ~/.local/share/osuconfig/configs). Within these files, you define two critical variables:
PRE_LAUNCH_ARGS: Arguments prepended before the Wine binary (e.g.,gamemoderun,prime-run).POST_LAUNCH_ARGS: Arguments appended afterosu!.exe(e.g.,-devserver,-screen-width).
When you invoke osu-wine, the script's LaunchOsu function assembles the final command by combining these variables with any runtime flags you provide.
Method 1: Temporary Connection via Command Line
For one-time connections to an alternative server, use the built-in --devserver flag. The wrapper script explicitly handles this case in lines 200–204 of osu-wine:
--devserver)
LaunchOsu "-devserver" "${@:2}"
;;
This passes -devserver followed by your server address directly to osu!.exe.
Example: Connect to Akatsuki for a single session
osu-wine --devserver akatsuki.gg
Example: Connect to Gatari
osu-wine --devserver gatari.pw
The game launches immediately and routes all score submissions and leaderboard requests to the specified server. When you close osu! and relaunch without the flag, it reverts to the official servers.
Method 2: Persistent Configuration via Config Files
If you primarily play on a specific alternative server, hardcoding the flag into a configuration file prevents you from typing the address repeatedly. The repository includes an example.cfg in stuff/example.cfg demonstrating this pattern.
Step 1: Create or edit a config file
mkdir -p ~/.local/share/osuconfig/configs
nano ~/.local/share/osuconfig/configs/private-server.cfg
Step 2: Set POST_LAUNCH_ARGS
Add the following line to the file:
POST_LAUNCH_ARGS="-devserver gatari.pw"
Save and exit. The osu-wine script sources all .cfg files from this directory on every launch, automatically appending -devserver gatari.pw to the executable arguments.
Verification
Simply run:
osu-wine
The game connects to Gatari without requiring additional flags.
Combining Devserver with Other Launch Arguments
Alternative servers often run older protocol versions or benefit from performance tweaks. You can combine -devserver with other flags using both PRE_LAUNCH_ARGS and POST_LAUNCH_ARGS.
Example: Gamemode + Devserver
Create ~/.local/share/osuconfig/configs/performance.cfg:
PRE_LAUNCH_ARGS="gamemoderun"
POST_LAUNCH_ARGS="-devserver akatsuki.gg"
Example: NVIDIA Optimus + Custom Server
PRE_LAUNCH_ARGS="prime-run"
POST_LAUNCH_ARGS="-devserver my.custom.server.com"
Example: One-time override with existing config
If you have POST_LAUNCH_ARGS set in a config file but want to temporarily use a different server, pass --devserver on the command line. The script's argument parsing ensures that explicit CLI flags take precedence or combine correctly with the config-based POST_LAUNCH_ARGS.
# Config contains: POST_LAUNCH_ARGS="-devserver gatari.pw"
# Override for one launch:
osu-wine --devserver akatsuki.gg
Summary
osu-wine --devserver <address>provides immediate, temporary connections to alternative osu! servers like Akatsuki or Gatari.- Persistent configuration is achieved by setting
POST_LAUNCH_ARGS="-devserver <address>"in any.cfgfile inside~/.local/share/osuconfig/configs/. - The wrapper script at
osu-wine(lines 200–204) handles the--devserverflag by passing-devserverdirectly toosu!.exevia theLaunchOsufunction. - You can combine server switching with performance tools like
gamemoderunorprime-runusingPRE_LAUNCH_ARGSandPOST_LAUNCH_ARGStogether.
Frequently Asked Questions
What servers support the -devserver flag?
The -devserver flag is respected by the official osu! client when connecting to community-run alternative servers such as Akatsuki (akatsuki.gg), Gatari (gatari.pw), and most other private server implementations that mirror the official bancho protocol. The flag simply tells the client which IP address or domain to use for its initial connection handshake.
Can I switch between official and alternative servers quickly?
Yes. If you use the command-line method (osu-wine --devserver <address>), simply omit the flag to connect to official servers. If you use a config file, you can create multiple .cfg files (e.g., akatsuki.cfg and official.cfg) and move or rename them to enable/disable the POST_LAUNCH_ARGS line, or comment it out with # when you want to revert to the official server.
Where are the osu-winello configuration files stored?
Configuration files reside in $XDG_DATA_HOME/osuconfig/configs, which defaults to ~/.local/share/osuconfig/configs/ on most Linux distributions. The osu-wine wrapper script sources every *.cfg file found in this directory during launch, allowing you to modularize settings like PRE_LAUNCH_ARGS and POST_LAUNCH_ARGS across multiple files.
Does using a devserver affect performance or compatibility?
Connecting to an alternative server does not inherently change the client's rendering or audio performance; however, some private servers run older protocol versions that may lack newer osu! features. Additionally, network latency to the alternative server may differ from the official infrastructure. You can still use performance wrappers like gamemoderun or mangohud via PRE_LAUNCH_ARGS without conflict when using a devserver.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →