Skip to content

Adapter Overview

Passage uses a pluggable adapter system to customize every aspect of how player connections are handled. Each route independently configures its own set of adapters, so you can run entirely different configurations for different hostnames.

Every route has four adapter categories:

Controls what players see in the Minecraft server list (MOTD, player count, version, favicon).

TypeDescription
fixed (default)Returns a static, preconfigured status response
httpFetches status from an HTTP endpoint with caching
grpcDelegates to an external gRPC service

Status Adapter Reference →


Verifies player identity before routing them to a backend server.

TypeDescription
mojang (default)Standard Mojang/Microsoft authentication
disabledSkips authentication entirely (testing only)
fixedUses a hardcoded player profile for all connections
grpcDelegates to an external gRPC service

Authentication Adapter Reference →


Finds available backend servers and selects one for the player. This is a two-part system:

  1. A discovery adapter produces an initial list of targets
  2. An actions pipeline filters, reorders, or transforms the list sequentially

Discovery adapters:

TypeDescription
fixed_discovery (default)Returns a static list of targets
dns_discoveryDiscovers targets via DNS SRV or A/AAAA records
agones_discoveryDiscovers targets through Agones GameServer allocations
grpc_discoveryDelegates target discovery to a gRPC service

Actions (applied in order after discovery):

TypeDescription
meta_filterFilters targets based on metadata key-value pairs
player_allow_filterWhitelists players by username, regex, or UUID
player_block_filterBlacklists players by username, regex, or UUID
player_fill_strategyReorders targets to fill the fullest server first
grpcDelegates action logic to an external gRPC service

Discovery Adapter Reference → | Discovery Actions Reference →


Provides translated disconnect messages based on the player’s client locale.

TypeDescription
fixed (default)Returns messages from a static configuration map
grpcDelegates to an external gRPC service

Localization Reference →


Use CaseStatusAuthDiscoveryActions
Single serverfixedmojangfixed_discovery
Multiple lobbies, fill evenlyfixedmojangfixed_discoveryplayer_fill_strategy
DNS-based with filteringhttpmojangdns_discoverymeta_filter + player_fill_strategy
Kubernetes + Agoneshttpmojangagones_discovery
Custom routing logicgrpcgrpcgrpc_discoverygrpc
Whitelisted beta serverfixedmojangfixed_discoveryplayer_allow_filter

A route combining DNS discovery with metadata filtering and player fill:

routes:
- hostname: "mc.example.net"
status:
type: http
address: "https://status.example.net/status"
cache_duration: 30
authentication:
type: mojang
discovery:
type: dns_discovery
domain: "servers.example.net"
record_type: srv
actions:
- type: meta_filter
name: "online-filter"
rules:
- key: "status"
op: equals
value: "online"
- type: player_fill_strategy
name: "fill-strategy"
field: "players"
max_players: 50

For implementation examples using custom gRPC adapters, see Custom gRPC Adapters.