Commands

NeroLink adds a single command tree, /nerolink, built with vanilla Brigadier so it behaves identically on every loader. Player sub-commands work for anyone; operator sub-commands require permission level 2 (game-master / op).

Sub-commandWhoWhat it's for
/nerolink pairany playerMint a one-time pairing code for a new device.
/nerolink devicesany playerList your own paired devices.
/nerolink revoke <device>any playerRevoke one of your own devices.
/nerolink statusop (level 2)Bridge + relay health, device count, module list.
/nerolink setup [origin]op (level 2)Register with the relay and open the tunnel.
/nerolink setup force [origin]op (level 2)Re-register and get a fresh Server ID.

Mints a single-use pairing code and whispers it — and only it — to the running player. Nothing is broadcast or logged. The whisper contains:

  • Pairing code — format XXXX-XXXX, bold/gold. Valid for 5 minutes, single-use.
  • Server ID — shown only when a relay registration is active; this is what players enter in the app alongside the code.
  • Bridge address — host:port for LAN/direct mode (the first site-local IPv4 and the configured port), tagged (LAN/direct mode — NOT the 'open to LAN' game port).

Only a player can run this (it needs an in-game identity); running it from console fails with "Only a player can pair a device." If the bridge isn't running you'll see "The NeroLink bridge is not running on this server."

The in-game session is the identity proof — there are no passwords or emails. A client redeems the code once via the API to receive its device token.

Lists your paired devices, one per line, as deviceName (deviceId). Tokens are never shown — only names and ids. Ends with a reminder to revoke with /nerolink revoke <device-id>. If you have none, it prints "No paired devices." Scoped to the calling player's own devices only.

Revokes one of your own devices by its id (<device> is the device id from /nerolink devices). The bridge deletes the stored token hash and forgets the device's rate-limit bucket, so that device can no longer authenticate. If the id isn't one of yours it fails with "No such device of yours: <id>" — you can never revoke another player's device.

Operator-only summary of the bridge:

[NeroLink] Bridge running. Paired devices: N. Relay: connected. Server ID: <id>. Modules: core, ...
  • Paired devices — an aggregate count across online players (no personal data).
  • Relay — connected, connecting, or disabled.
  • Server ID — shown when a relay registration is active.
  • Modules — the link modules currently registered (always at least core).

If the bridge isn't running it reports "Bridge is not running."

One-shot relay onboarding. Registers this server with a NeroLink relay (POST <origin>/register) off the server thread, persists the returned credentials per-world, and dials the tunnel immediately — no server restart.

  • With no argument it uses the relayOrigin config value (default https://nerorelay.neroserver.xyz).
  • /nerolink setup <https-origin> registers against a specific relay origin.
  • If this server is already registered with that origin, plain setup doesn't re-register — it just re-dials the existing tunnel and reports the stored Server ID.

On success the operator sees "Relay registered!", then the bold/gold Server ID (players enter this in the app), the App URL, and a Tunnel connecting — check /nerolink status hint. The secret serverKey is never printed or logged.

Failure messages are specific:

  • Unreachable — "Could not reach the relay at <origin>…" (check the origin and the server's connection).
  • Registration closed — "Registration is closed on this relay (REGISTRATION_OPEN=false)…" (ask the relay operator to reopen it).
  • Bad response — "The relay returned an unexpected response…" (make sure the origin points at a NeroLink relay).

Same as setup, but discards the stored credentials and registers afresh, producing a new Server ID even if a registration already exists. Use this to move to a different relay or rotate the registration. Optionally takes an [origin] (/nerolink setup force <https-origin>).

See also

Search across every Nero mod wiki.