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 after osu!.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 .cfg file inside ~/.local/share/osuconfig/configs/.
  • The wrapper script at osu-wine (lines 200–204) handles the --devserver flag by passing -devserver directly to osu!.exe via the LaunchOsu function.
  • You can combine server switching with performance tools like gamemoderun or prime-run using PRE_LAUNCH_ARGS and POST_LAUNCH_ARGS together.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →