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
61 lines
2.9 KiB
Markdown
61 lines
2.9 KiB
Markdown
# 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.
|
|
|
|
## Related repos
|
|
|
|
| Repo | What |
|
|
|------|------|
|
|
| **this** — `RunicGateway/link` | The Rust sidecar (`sidecar/`). |
|
|
| [RunicGateway/servuo-plugins](https://gitea.whitlocktech.com/RunicGateway/servuo-plugins) | The **C# ServUO plugin** — the shard side of the bridge (`overlay/`, `patches/`, `deploy.ps1`, test scaffolding). |
|
|
| [RunicGateway/docs](https://gitea.whitlocktech.com/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`](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:
|
|
|
|
```bash
|
|
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`](sidecar/README.md)
|
|
for configuration and the wire protocol.
|
|
|
|
## Deployment & compatibility
|
|
|
|
The plugin ([RunicGateway/servuo-plugins](https://gitea.whitlocktech.com/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](https://gitea.whitlocktech.com/RunicGateway/docs/src/branch/main/link/PLAN.md) §5/§7 and
|
|
[INTEGRATION.md](https://gitea.whitlocktech.com/RunicGateway/docs/src/branch/main/link/INTEGRATION.md).
|
|
Because a wedged or absent sidecar cannot stall the shard, either side can be deployed or restarted
|
|
independently.
|