# Commands

/ssvc-proxy admin commands, failure behaviour and building the proxy jar

Source: https://socketsvc.vercel.app/proxy/commands
## Admin commands

| Command | Purpose |
| --- | --- |
| `/ssvc-proxy status` | Listener address (or `offline`), active relayed connections and rejected-connection count |
| `/ssvc-proxy reload` | Re-reads `config.yml` and restarts the relay listener |

Both require the `socketsvc.proxy.admin` permission. Grant it explicitly: proxy platforms don't have Bukkit's default-op permission model.

`/ssvc-proxy reload` stops the current listener before starting the new one. If the new config cannot be loaded or the listener cannot start, the command reports the failure, the relay stays offline and the details are in the proxy log; fix `config.yml` and reload again. Metrics settings are not affected by reload (see [Metrics](/proxy/configuration#metrics)).

## Failure behaviour

The relay simply closes the incoming connection (and counts it as rejected) when:

- the connection has no valid `uuid` query parameter;
- the player's UUID can't be resolved to a backend, for example in a race right after a server switch;
- the resolved server name isn't in `servers:`;
- connecting to the backend fails.

The client's existing reconnect/backoff logic (waiting 5, 10, 20, then 30 seconds; see [Voice protocol](/server/voice-protocol)) handles this exactly like any other failed connection attempt — no special client-side handling is needed or exists for proxy mode.

## Building the proxy jar

Build, test and package the proxy relay engine and the universal plugin jar:

<Tabs items={['PowerShell', 'Linux/macOS']}>
  <Tab value="PowerShell">
    ```powershell
    .\gradlew.bat buildAllProxy
    ```
  </Tab>
  <Tab value="Linux/macOS">
    ```sh
    sh gradlew buildAllProxy
    ```
  </Tab>
</Tabs>

`buildAllProxy` runs `:proxy:common:test` and `:proxy:plugin:build`; `buildAll` includes it. Adding `-Ploaders=none` skips configuring the loader projects and keeps only Paper and the proxy, which speeds up a proxy-only build.

The jar to install is `proxy/plugin/build/libs/socketsvc-proxy-<proxy>.jar`, where `<proxy>` is `proxy.version` in [gradle/socketsvc.properties](https://github.com/HippoDev03/SocketSVC/blob/main/gradle/socketsvc.properties). Do not install `-plain.jar` or `-slim.jar`, and do not use leftovers from the old `proxy-plugin/build/` directory.