> For the complete documentation index, see [llms.txt](https://esmp-fun.gitbook.io/plugins/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://esmp-fun.gitbook.io/plugins/community-chat/using-it/governance.md).

# Running a healthy network

Two things keep a multi-community network from falling apart: the **staff guild** (technical, 15 minutes) and the **network charter** (a short set of rules the community leaders adapt and *agree to before launch*). The tech enforces; humans decide. Skipping the charter is how five friendly communities end up in a ban-war by month two.

## 1. The staff guild

One private Discord where every community's staff can see the same picture:

1. Create a new Discord server, e.g. **" Staff"**, with three channels:
   * `#mod-log-all` — the bot mirrors every sanction from every community here.
   * `#council` — one representative per community; decisions land here.
   * `#alerts` — reserved for automod escalations and bridge outage notices.
2. Invite the network bot to the staff guild (same invite link as in the [setup guide](/plugins/community-chat/getting-started/set-up-the-network.md); Send Messages is enough).
3. Set `staffLogChannelId` in the relay config to the `#mod-log-all` channel id.
4. Per community (optional but recommended): a private `#mod-log` in their own guild with `modLogChannelId` set — their staff sees their view, the staff guild sees everything.
5. Moderation rights:
   * **Discord side:** the slash commands (`/gmute`, `/gban`, `/gwarn`, `/gunmute`, `/gunban`, `/history`) require the **Moderate Members** permission in the guild where they're used — communities manage that through their normal role setup.
   * **In-game side:** grant the `crosschat.mod` permission (LuckPerms) to network moderators.

## 2. The network charter

A template — replace the `<angle-bracket>` parts, then have every community leader agree to it before the network goes live.

### Scope

Global chat, the bridged Discord channels, and network events. Everything else (local chat, local worlds, local Discord channels) stays under each community's own rules.

### Global chat rules (the short list players see)

1. Language: `<fill in — e.g. English in global chat>`.
2. No slurs, harassment, or hate speech. No NSFW.
3. No advertising other servers outside the network.
4. No spam; don't paste links that aren't `<allowed domains>`.
5. Local rules still apply to you on your home server.

### Moderation powers

* **Local first:** each community moderates its own members with its own tools; a local mute automatically keeps that player out of global chat.
* **Network moderators** (the people with `crosschat.mod` / Moderate Members) may `/gmute` any player network-wide for up to `<48h>` without consultation. Longer mutes and any `/gban` require a second moderator from a *different* community, posted in `#council`.
* **Automod** (word lists, link policy, spam escalation) applies to everyone equally, including staff.

### Disputes

* A community may appeal any sanction on its own member in `#council`; majority of community representatives decides; the relay operator implements the outcome.
* A community can leave the network at any time (`/crosschat pause`, or removal from the relay config) — no hostage situations.

### Adding a community

Requirements: `<player-count / age / conduct expectations>`. Process: the candidate is proposed in `#council`, majority approves, the relay operator adds the config block, one bot invite, chat + events channels created, tag assigned (max 10 characters, unique).

### Operations

* Relay operator: `<name>`. Hosting costs split: `<how>`.
* The `logTraffic` flag and the audit table exist for debugging and accountability; message content is not stored — only sanctions and the audit trail of mod actions are persisted.

## 3. Handover checklist (per community)

* [ ] `#cross-chat`, `#cross-events`, private `#mod-log` created; ids in the relay config
* [ ] Bot invited with View Channels / Send Messages / Manage Webhooks / Read Message History
* [ ] **Moderate Members** reviewed: only intended staff roles have it
* [ ] `crosschat.mod` granted to in-game network staff via LuckPerms
* [ ] `linkedRoleId` set if the community wants a "Linked" role
* [ ] Charter signed off by the community's leader in `#council`
