Files
link/README.md
Claude 21d5de9fd4 chore: extract ServUO plugin to RunicGateway/servuo-plugins
The C# ServUO plugin (overlay/, patches/, deploy.ps1, tools/) has been
extracted with full history via git filter-repo into the new
RunicGateway/servuo-plugins repo. This repo is now the Rust sidecar only.

Rewrite the README to be sidecar-focused: related-repos table, build/run,
and a deployment/compatibility section describing the runtime protocol
relationship with the plugin. No source cross-references existed between the
two halves, so nothing else needed repointing.

Plugin repo: https://gitea.whitlocktech.com/RunicGateway/servuo-plugins
2026-07-18 00:58:32 -05:00

2.9 KiB

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.