Installation¶
ResoniteIO has two halves that install separately: the C# mod (runs inside the Resonite
client) and the resonite-io Python client (imported as resoio, runs wherever your
Python code runs). They
connect over a Unix Domain Socket, so both halves must run on the same host (or share the
socket directory).
Linux only
ResoniteIO targets Resonite running on Linux through Steam Play (Proton) and communicates over a Unix Domain Socket. Windows is not supported, and there are no plans to support it.
Documentation versions
These docs are versioned with mike and deployed to
GitHub Pages by CI: pushing to main updates the dev version, and a stable release
tag publishes a numbered version and moves the latest alias. Use the version selector
(top of the page) to switch. To build locally, run just docs-serve / just docs-build.
C# mod — GitHub Releases¶
The mod is distributed as a zip on GitHub Releases and installed into Gale via Import > Local mod....
1. Download the latest mod zip. It lands in the current directory by default; change the
output path with -o / -O.
curl -L -o ResoniteIO.zip https://github.com/MLShukai/ResoniteIO/releases/latest/download/ResoniteIO.zip
# or:
wget -O ResoniteIO.zip https://github.com/MLShukai/ResoniteIO/releases/latest/download/ResoniteIO.zip
2. Install the supporting plugins first. A local import does not resolve dependencies automatically (unlike a Thunderstore install), so add these to your Gale profile from the mod manager before importing ResoniteIO:
ResoniteModding-BepisLoaderResoniteModding-BepInExResoniteShimResoniteModding-BepisResoniteWrapperResoniteModding-BepInExRenderer— Camera v2 (Renderite framebuffer)ResoniteModding-RenderiteHook— injects doorstop into the renderer processNytra-InterprocessLib— shared-memory queue between engine and renderer
3. Import the mod. In Gale, choose Import > Local mod... and select the downloaded
ResoniteIO.zip.
4. Set the Steam launch option so BepisLoader can hook the client:
The repository README explains why the launch option is mandatory. Prefer to build the mod yourself? See Build from source below.
Python client — PyPI¶
or, inside a uv project:
The distribution is named resonite-io on PyPI but imports as resoio
(import resoio). It requires Python ≥ 3.12, is pyright-strict, and ships type
information (PEP 561).
Optional: resoio launch needs umu-launcher
The resoio launch / resoio terminate commands start and stop the Resonite client as
host processes, instead of launching it yourself through Steam. They invoke
umu-launcher's umu-run, so it
must be on your PATH — install it from your distribution's packages or the upstream
release (the dev container already ships it). The rest of the client — connecting to a
Resonite you start via Steam — does not need it.
Build from source¶
Building from source is the path for contributing to ResoniteIO or running an unreleased
version. The full development environment — .NET 10, uv,
protoc, and tooling — lives inside a dev container; see the
repository README for the one-time
just init host setup and how to open the dev container.
C# mod¶
From inside the dev container:
just build # dotnet build -c Release
just deploy-mod # pack the Thunderstore zip and unpack it into the Gale profile
deploy-mod builds the Thunderstore package (just mod-pack) and unpacks it into
gale/ exactly the way Gale's installer lays it out, so the local mod matches what
users install — the engine plugin lands at
gale/BepInEx/plugins/ResoniteIO/ResoniteIO/ and the renderer plugin at
gale/Renderer/BepInEx/plugins/ResoniteIO/ResoniteIO.Renderer/.
The mod requires a Gale profile with BepisLoader and the supporting plugins, plus the Steam
launch option WINEDLLOVERRIDES="winhttp=n,b" %command%. The README documents the exact
plugin list and why the launch option is mandatory.
Python client¶
Socket location¶
By default the client resolves the socket under ~/.resonite-io/. Override it with
RESONITE_IO_SOCKET (full path) or RESONITE_IO_SOCKET_DIR (directory). See
ConnectionClient for the resolution order.