floodgate --start
- [boot] loading spillway protocol engine…
- [boot] loading beryl coordinator…
- [net] binding 0.0.0.0:3000
- [socket.io] listening — official Fluid/Routerlicious drivers
- [phx] listening — Phoenix Channels (levee-driver, levee-client)
- [ready] floodgate is up. two protocols, one process.
A Fluid Framework server written in Gleam, running on the BEAM. One process speaks the official Fluid wire protocol and Phoenix Channels at once, so it's also a drop-in replacement for the sibling Levee Elixir server.
why the BEAM- [sup] restart_strategy: one_for_one
- [sup] each document session is its own isolated process
- [sup] a crashed session does not take the node down
- [gleam] protocol logic is compiled and type-checked before it ever runs
Gleam compiles to the same virtual machine that has run telecom switches for decades. Every document gets its own supervised process: one session crashing and restarting is normal operation, not an incident, and the sequencing logic that decides what happened next is checked by the compiler before it ships.
capabilities- [cap] dual-mode wire protocols — Socket.IO + Phoenix Channels, from one process
- [cap] presence_v1 — server-backed roster, both endpoints, no client heartbeat needed
- [cap] git-like storage — blobs, trees, commits, refs — per tenant
- [cap] multi-tenancy — dynamic tenants, two rotating JWT secret slots each
- [cap] self-hosted — single binary or `docker compose up`
view source
Floodgate doesn't have its own repository yet — it lives inside the Levee monorepo today.
view source at tylerbutler/levee/server/floodgate