Skip to content

System architecture

AstorisTheBrave edited this page Aug 10, 2026 · 3 revisions

System architecture

Elah's intended architecture separates gameplay from coordination.

Minecraft client
       |
       v
Velocity proxy and Sling
       |
       v
ElahFolia workers
       ^
       |
     elahd

This is a future runtime target. The current release does not provide Sling or ElahFolia.

Planned components

Component Responsibility
elahd Control-plane membership, topology, future cell ownership, and ownership epochs.
elah Administrator command-line interface, including Observer.
ElahFolia Thin Folia integration for Minecraft worker processes.
Sling Velocity integration for routing, backend switching, handoff retries, and handoff visibility.
Shepherd Future placement and workload scheduler inside elahd.
Stone Future persistent world-storage service.
Brook Future generation and pregeneration service.

Horizontal and vertical work

Folia is planned to handle vertical concurrency inside one worker process. Elah is planned to handle horizontal coordination between worker processes and machines.

Keeping those responsibilities separate avoids placing distributed coordination inside normal tick paths without evidence.

Control plane

The control plane manages identities, protocol versions, worker sessions, health, topology, and future ownership decisions. It must not carry normal gameplay messages such as movement, block changes, inventory clicks, entity ticks, or chunk packets.

Data plane

The data plane stays on the path between the Minecraft client, Velocity, Sling, and the current worker. This keeps ordinary gameplay away from controller latency.

Ownership model

The design assigns each active (world, dimension, cell) to exactly one authoritative worker at an ownership epoch. A stale worker must be rejected. Read-only neighboring state may exist later, but it must never become a second authority.

Repository shape

The monorepo keeps Rust, Java, JavaScript, TypeScript, Protocol Buffers, schemas, and laboratories versioned together. Protocol changes can therefore be generated and tested across languages in one release gate.

Clone this wiki locally