Run the whole stack yourself.
ShatteredArchive is a Docker Compose stack of small, independent services for MUD players and builders — a scriptable web client, an area builder, a map and data browser, a single sign-on hub and a few tools that grew out of the same workshop. Every service below is running live so you can see what you get before you clone anything.
Live demos
Public instances of the services in
deploy/docker-compose.yml and
deploy/docker-compose.shattered-archive-experimental.yml. They are shared, so treat
anything you create as disposable — the point is to show what a self-hosted deployment looks like,
not to be durable storage.
Game Client
LiveA browser MUD client with plugins, triggers and user-authored scripts running in an embedded Lua and Python interpreter.
game-client.shatteredarchive.devWeb Client
LiveMap and world-data browser for the archive — continents, areas and the reference data behind them.
web-client.shatteredarchive.devScrum Poker
LivePlanning poker with no accounts at all — create a room, share the link, estimate. The room URL is the only membership there is.
scrum-poker.shatteredarchive.devAuth Hub
LiveThe single sign-on hub the other services authenticate against: accounts, API keys, device-bound credentials and SSO.
auth.shatteredarchive.devSoulsteel
LiveA Herald's dashboard for The Umbral Cloak and the Soulsteel Dagger — track players, roles, nightly actions and eliminations for this social-deduction rite. No accounts, everything stays in your browser.
soulsteel.shatteredarchive.devMUD Builder
LiveFull area authoring for a Merc-derived MUD — rooms, mobs, objects, resets, scripts and generated area maps, with hot reload into a running game. Free to browse; sign in at trusted tier or above to edit.
build.shatteredarchive.devSimulacrum
LiveThe near-stock ROM 2.4 world that MUD Builder edits, reachable only by a signed-in trusted+ account — sign in at the Auth Hub and request access rather than connecting anonymously.
simulacrum.shatteredarchive.devKingdom Tactics
Coming soonA turn-based tactics game built on the archive's class, skill and alignment data — online matches and local hotseat share one engine.
kingdom-tactics.shatteredarchive.devSelf-hosting setup
The stack addresses its services by hostname rather than by port, so a local deployment needs those names pointing at your own machine before Docker will resolve them. This is a one-time step.
1. Map the development domains to localhost
Windows (Administrator PowerShell):
pnpm setup:hosts:win
macOS / Linux:
sudo pnpm setup:hosts:nix
This writes entries pointing the following names at 127.0.0.1:
shatteredarchive.devgame-client.shatteredarchive.devgame-server.shatteredarchive.devweb-client.shatteredarchive.devweb-server.shatteredarchive.devbuild.shatteredarchive.devauth.shatteredarchive.devkingdom-tactics.shatteredarchive.devscrum-poker.shatteredarchive.devsoulsteel.shatteredarchive.devsimulacrum.shatteredarchive.dev
2. Bring the stack up
From deploy/. The default compose file runs the published services; the
experimental one adds MUD Builder, Kingdom Tactics, and Simulacrum. Simulacrum's own
container also ships in the default file, but it needs MUD Builder's shared role
store to grant anyone access, so it only works when run via the experimental stack.
docker compose -f docker-compose.yml up -d
3. Open the client
Browse to http://game-client.shatteredarchive.dev. If you land back on this page
instead, the host entries from step 1 have not taken effect — restart Docker and reload.
Seeing this page on a subdomain you expected an app on? That is the symptom of an incomplete step 1: the name resolved to this edge rather than to your local Docker network.