Skip to main content

Cross-Server Setup

When CommandGuard is installed on both the proxy and backend servers, the proxy pushes its allowed command list to each backend via plugin messaging. This feature is called TabSync.

TabSync ensures players see a unified tab-complete list that includes commands from both the proxy and the backend — without having to define proxy commands on every backend.

How TabSync Works

Each layer manages its own commands independently:

  • Proxy handles proxy plugin commands (/server, /hub, /skin...)
  • Backend handles backend plugin commands (/home, /spawn...)
  • TabSync combines both lists on the backend side

Setup

Step 1 — Proxy config

velocity-config.yml (or bungee-config.yml):

is_network: true

tab:
default:
priority: 0
commands:
- "/hub"
- "/server"
- "/skin"

Step 2 — Backend config

config.yml on each backend server:

is_network: true

tab:
default:
priority: 0
commands:
- "/home"
- "/spawn"
# Proxy commands are added automatically via TabSync — no need to list them here
warning

Both sides must have is_network: true. If only one side has it enabled, TabSync will not work.


Reloading After Changes

After editing the proxy config:

/cgv reload

This reloads the config and immediately pushes TabSync to all online players — no relog needed.

After editing a backend config:

/cg reload

Force-Update a Single Player

Push an updated tab-complete list to one player without a full reload:

/cgv updategroup <player>   ← proxy
/cg updategroup <player> ← backend

This is useful after manually changing a player's permission group.


tab_sync_delay

On the proxy, TabSync is sent after a short delay when a player connects. The default is 500 ms:

tab_sync_delay: 500

If players connect to slow backend servers and see an incomplete tab list on join, increase this value (e.g. 1000).