islands in the net // text worlds // federated
"Every word travels somewhere."
— after Bruce Sterling, 1988
Archipelago is an Elixir/OTP engine for sovereign text worlds. The local realm is playable now. AFP/1 framing, identity, peer state, trust policy, and witness-only signal propagation are implemented and tested; production QUIC binding, travel, customs, and the sea remain unfinished.
AFP/1 uses canonical CBOR, Ed25519 signatures, explicit peer approval, replay protection, and local trust policy. A remote signal enters witness-only dispatch: it can be perceived, never obeyed as local authority.
NPC brains have perception, persistent memory, reflection, planning, schedules, circuit breakers, and per-realm budgets. Authored greetings and topic banks remain the fallback when cognition is silent.
Connect with OpenSSH or play in the browser. A first public key creates a local account and a self-resolving did:key; password registration is also present. No custom player client is required.
Rooms, details, NPCs, items, senses, and conversations are authored in Markdown and seeded into an immutable event history. Live edits append transactions; projections and snapshots rebuild the current view.
Chart mode can create, describe, edit, soft-delete, and undo through compensating events. Its capability checks work, but stock SSH login does not yet load operator capabilities; Markdown is the reliable authoring path today.
Player and item transfer, customs, sealed mail, provenance, confederations, and sea lanes are designed but not shipped. The code marks that boundary instead of presenting a roadmap as a harbor.
You move through rooms, examine details, read documents, use separate smell, sound, touch, and taste channels, speak with other players, and work through authored NPC conversations. The parser, event store, local economy, formal speech, maps, and detective notebook are live code.
The federation core is an active branch, not a public network. AFP/1 envelopes, peer rows, trust decisions, loopback links, and witness-only propagation exist. The supervised QUIC listener still stops before the real bind, and no player or item can cross between nodes.
for travelers
Run the showcase realm locally and connect via SSH. Move through Winding Stair and Ironholt content, use the sensory parser, speak with authored NPCs, and inspect the parts of the world that already exist.
$ ssh -p 2222 traveler@localhost
Signal steady. Connection established.
Choose a name for this island to know you by:_
for operators
Clone the Elixir umbrella, start PostgreSQL, author rooms and NPCs in Markdown, validate them, and seed their event streams. The deployment and privileged account surfaces are still developer-facing.
$ cp .env.example .env
$ mix setup
$ mix content.new room my-island/harbor
$ mix content.validate my-island
$ mix run --no-halt
SSH listening on port 2222
The realm is playable from source. The federation is being built in public, one verified boundary at a time.
developer preview: mix setup && mix run --no-halt