Skip to main content

Running Multiple Rooms

A single room server can host multiple rooms (channels), each with independent access control and settings. This is common for community networks that run both a public room and a private emergency operations room.

Room architecture

In MeshCore, a “room” is a message space with:

  • A name (visible to clients connecting to the server)
  • An optional PSK (empty = public room; set = encrypted private room)
  • Its own message history stored separately
  • Its own participant list

Clients choose which rooms to join when they connect to a room server. A client can be in multiple rooms simultaneously.

Example multi-room configuration

rooms:
  # Public room - anyone can join, no encryption
  - name: "RegionMesh-Public"
    psk: ""
    description: "Public community channel for the region"
    max_history: 1000          # Messages to keep in memory

  # Emergency net - shared PSK with authorized operators
  - name: "EmergencyNet"
    psk: "secretkeyhere"
    description: "For emergency coordinators only"
    max_history: 500

  # Local club - private to members
  - name: "ClubNet"
    psk: "clubsecretkey"
    description: "For club members"
    max_history: 200

Distributing room PSKs

PSK distribution should happen through a separate secure channel (encrypted email, in-person, Signal, etc.), not over the mesh network itself. Anyone with the PSK can read all messages in that room — treat it like a shared password and change it if an unauthorized person may have obtained it.

For public emergency preparedness networks, the EmergencyNet PSK is typically shared with vetted local emergency management personnel, ARES/RACES members, and CERT team leads — not published publicly.

Monitoring room activity

The room server exposes a simple status endpoint that can be queried for operational monitoring:

# Number of connected clients per room
curl http://localhost:7070/status

# Or via the room server CLI (if available in your version)
python3 manage.py status

Room server federation

Multiple room servers can be peered together, allowing clients connected to different servers to exchange messages. This is the foundation for multi-city mesh networks where each city runs its own server but they’re all peered.

peers:
  - host: "room-server-portland.example.com"
    port: 7070
    secret: "shared-peer-secret"
  - host: "room-server-seattle.example.com"
    port: 7070
    secret: "shared-peer-secret"

Peered servers exchange messages from all shared rooms. Set a unique peer secret for each server pair — this prevents unauthorized servers from federating with your infrastructure.