uo-link — Rust sidecar

The Rust sidecar half of the Runic Gateway bridge. The ServUO shard dials out to this sidecar over a loopback TCP socket (newline-delimited JSON); the sidecar owns the WebSocket + REST API the website consumes, along with auth, buffering, and fan-out.

ServUO plugin (C#, net48)  ──loopback TCP, newline-JSON──►  Rust sidecar  ──WebSocket/JSON──►  website
   (RunicGateway/servuo-plugins)                           >>> THIS REPO <<<

The shard never speaks WebSocket and exposes no port of its own — the sidecar is the only network-facing component, which is what keeps the game unreachable from the internet.

Repo What
thisRunicGateway/link The Rust sidecar (sidecar/).
RunicGateway/servuo-plugins The C# ServUO plugin — the shard side of the bridge (overlay/, patches/, deploy.ps1, test scaffolding).
RunicGateway/docs All project documentation — design docs, protocol spec, integration guide, research.

Layout

Path What
sidecar/ The Rust sidecar crate — terminates the loopback link to the shard, exposes WS + REST to the website. See sidecar/README.md.
.gitea/workflows/release.yml Builds + releases the sidecar binary (Linux + Windows) on every merge to main.

Build & run

The sidecar is a standard cargo crate:

cd sidecar
cargo build --release        # binary at target/release/uo-link-sidecar
cp sidecar.toml.example sidecar.toml   # then edit
cargo run --release

.gitea/workflows/release.yml cross-compiles Linux + Windows binaries and cuts a Gitea release on every merge to main (conventional-commit versioning). See sidecar/README.md for configuration and the wire protocol.

Deployment & compatibility

The plugin (RunicGateway/servuo-plugins) and this sidecar are deployed together but built independently:

  • The plugin is deployed as source into the ServUO server root and compiled by ServUO at boot — no build artifact, no CI build.
  • The sidecar is a standalone Rust binary released from this repo.

The only coupling is the loopback JSON protocol (the shard dials 127.0.0.1). Compatibility is a protocol concern, not a build-order one — keep the event/command catalog in sync across the two repos. Canonical spec: PLAN.md §5/§7 and INTEGRATION.md. Because a wedged or absent sidecar cannot stall the shard, either side can be deployed or restarted independently.


License

Runic Gateway is free software, licensed under the GNU General Public License v3.0 or later — see LICENSE.md.

Copyright (C) 2026 Runic Gateway

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. It is distributed WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

Contributions are welcome — please read CONTRIBUTING.md (note the AI-usage disclosure requirement) and our Code of Conduct. Report vulnerabilities privately per SECURITY.md.

Description
No description provided
Readme 947 KiB
v1.0.0 Latest
2026-08-01 06:47:57 +00:00
Languages
Rust 98.1%
Python 1.9%