How memoxiiii/portal works
Portal is a Minecraft: Bedrock transfer proxy: players connect once, join a backend, and can be transferred between backends while Portal relays and translates gameplay packets. Backend services connect separately over the socket protocol to authenticate, register servers, and request proxy operations. Supporting capabilities include health-aware and weighted selection, status and resource-pack handling, admin and metrics surfaces, events, and optional cross-proxy clustering. The README documents these capabilities; only selected source was sampled, so uncertain internal wiring is omitted.
Main entry points: portal.go Portal proxy · registry.go Server registry · session.go Player sessions · server.go Socket server
Components 24
Player proxy
- Portal proxy
portal.go - Player transport
transport.go - Player sessions
session/session.go - Packet relay
session/packet_handler.go - Protocol translation
session/translator.go - Transfer selection
session/load_balancer.go
Backend management
- Socket server
socket/server.go - Backend authentication
socket/handler_auth_request.go - Backend requests
socket/handler.go - Socket packets
socket/packet/packet.go - Server registry
server/registry.go - Backend state
server/server.go
Operations and state
- Health checks
server/health_checker.go - Player status
status_provider.go - Resource packs
resource_pack_manager.go - Admin console
admin.go - Metrics
metrics/registry.go - Event bus
event/bus.go - Session store
session/store.go
External integrations
- Cluster backend
cluster/backend.go - Redis backend
cluster/redis.go
Other components
- Bedrock players
- Backend servers
- Minecraft backends
Connections 24
- Bedrock players → Player transport: connect
- Player transport → Portal proxy: accepts traffic
- Portal proxy → Player sessions: creates sessions
- Player sessions → Minecraft backends: dials backend
- Player sessions → Packet relay: relays packets
- Packet relay → Protocol translation: translates packets
- Player sessions → Transfer selection: selects destination
- Transfer selection → Server registry: chooses server
- Backend servers → Socket server: connects
- Socket server → Backend authentication: dispatches auth
- Socket server → Backend requests: dispatches requests
- Backend requests → Socket packets: handles messages
- Backend requests → Server registry: registers servers
- Server registry → Backend state: stores entries
- Health checks → Server registry: checks servers
- Portal proxy → Player status: provides status
- Portal proxy → Resource packs: loads packs
- Portal proxy → Session store: stores sessions
- Admin console → Server registry: administers servers
- Metrics → Server registry: reports state
- Metrics → Session store: reports players
- Socket server → Event bus: publishes events
- Portal proxy → Cluster backend: uses presence
- Cluster backend → Redis backend: stores presence