Connect Architecture
This page shows the complete Connect picture in a user-friendly way: who talks to whom, which parts are optional, and how commands, routing, and public server status move through the system.
High-level overview
mermaid
flowchart LR
subgraph Clients["Users and clients"]
Dash["Dash"]
Launcher["Launcher"]
Player["Minecraft player"]
end
subgraph Host["Server host"]
Game["Minecraft server"]
Connect["Connect mod/plugin"]
SDK["External Java app via connect-sdk"]
Agent["Connect Agent (optional)"]
end
subgraph Cloud["Shared backend"]
API["Public API"]
Mongo["MongoDB"]
Watcher["Gateway watcher"]
Proxy["Gateway mcproxy"]
end
Dash <-->|"commands, settings,\nnetworks, metadata"| API
Launcher <-->|"public server list,\ndownload metadata"| API
Connect -->|"server actions,\nsettings, heartbeats,\npublic status"| Agent
SDK -->|"same Connect API\ncontract"| Agent
Connect -.->|"direct API mode\nwhen no agent is used"| API
SDK -.->|"direct API mode\nwhen no agent is used"| API
Agent -->|"proxy + short-lived\ncache/fallback"| API
API <--> Mongo
Connect -->|"gateway candidate lookup\nand route ownership"| API
API -->|"active route snapshot"| Watcher
Watcher -->|"routes.json"| Proxy
Connect -->|"tunnel/control\nport 9001"| Proxy
Player -->|"Minecraft TCP\n25565"| Proxy
Proxy -->|"forwarded traffic"| Game
Connect -->|"reporter snapshots\nMOTD + player stats"| API
SDK -->|"reporter snapshots\nfor non-loader JVM apps"| API
API -->|"aggregated network\npublic-server status"| LauncherWhat each piece does
Dash: operator UI for commands, settings, Connect networks, and metadata.Connect mod/plugin: runs inside Fabric, NeoForge, Paper, or Velocity and executes remote actions for a specific server.connect-sdk: lets any other JVM program use the same Connect registration, auth, gateway, and reporter APIs without shipping a Minecraft loader entry point.Connect Agent: optional local proxy on the host. It reduces direct API calls and keeps some functionality available during short API outages.Public API: central control plane and source of truth for Connect state.Gateway watcher: reads routing state from the API and materializes it for the runtime.Gateway mcproxy: handles the Minecraft TCP edge and forwards player traffic to the currently active backend.Launcher: consumes the public server listing and download/update metadata.
Main flows
1. Commands and settings
- Dash writes commands or settings to the Public API.
- Connect polls or streams that state.
- The game server executes the action or applies the config.
- Connect can publish updated settings back to the API.
2. Optional host-agent mode
- Connect talks to the local Connect Agent.
- The agent forwards
/v1/connect/*traffic to the Public API. - If the API is briefly unavailable, the agent can still serve cached data for selected flows.
3. Gateway routing
- Connect asks the Public API for gateway candidates.
- Connect probes the available gateways and chooses the best one.
- Connect publishes route ownership to the Public API.
- Gateway watcher pulls that route state and writes
routes.json. - Gateway mcproxy uses the active route to forward Minecraft traffic.
4. Public server stats
- A Connect server or a JVM app using
connect-sdkreports MOTD and player stats. - The Public API stores one raw snapshot per Connect server.
- Fresh snapshots of the same network are aggregated into one public listing.
- The launcher reads the aggregated network status instead of pinging every backend separately.
Typical setups
Simple single server
- Dash <-> Public API <-> Connect <-> Minecraft server
Server host with agent
- Dash <-> Public API <-> Connect Agent <-> Connect <-> Minecraft server
Connect network with gateway and public stats
- Dash manages the network in the Public API.
- Multiple Connect servers publish status into one shared public listing.
- One active gateway route exposes the network to players.
- The launcher reads the aggregated listing from the Public API.