Rust client → custom server list

Documentation for each RustClient build in this Testing Area: embedded URLs, which files hold them, and what to implement or change for your own server list backend.

Client documentation

FolderClient(s)
alkad-rust/Alkad Rust
arab-rust/Arab Rust
real-rust-skylight/Real Rust and SKYLIGHT RUST (same global-metadata.dat)

Files that matter (all clients)

  1. RustClient_Data\il2cpp_data\Metadata\global-metadata.dat
    IL2CPP string literal pool. Full https://… API base URLs for nexus, player auth, public server list, banned list, Discord, companion, etc. (not plain text in GameAssembly.dll for the main endpoints).
  2. GameAssembly.dll (next to RustClient.exe)
    Native IL2CPP code; references metadata strings by index. Editing URLs is usually done in metadata or via advanced binary patches.

What to change to point at your host

  1. Patch global-metadata.dat
    Replace embedded URL strings with your base (e.g. https://yourdomain.com/api/), keeping path segments compatible (public/serverlist, nexus/, playerAuth/steam, etc.) unless you change server code or use a reverse proxy that rewrites paths.
  2. Implement HTTPS endpoints that match what the client calls. The client expects JSON and fields such as is_official for list rows; manifest-related paths may be required for “official servers” UI flows.
  3. Legal / ToS
    Repointing the retail client or impersonating Facepunch infrastructure may violate Facepunch and Steam terms. Use only for private, authorized, or research contexts.

Quick reference — core routes (typical Facepunch-style)

Path suffixes in metadata (full host differs per build):

Discord and companion URLs are separate; see each client page.

Start with the page that matches your client copy. See also Implementing your own server list, Official servers & your API (is_official, tags, server.official), and Backend route checklist.