Elixir · Phoenix LiveView · Canvas 2D
The world is weaving itself.
A persistent living tapestry woven in real time from Wikimedia edits, Bluesky activity, RIPE routing motion, Solana slots, drand rounds, earthquakes, global weather — and three small anonymous gestures from whoever is watching. The present lives at the luminous right edge.
Three gestures, no account and no name — the same three the live loom accepts. Here they are woven in your browser only.
Seven signals, one cloth
Every source keeps its own hand
Each public source becomes a distinct formation with its own colour family, so the cloth stays legible as it thickens. These are the shapes and the materials the loom actually uses.
On this page the earthquake ruptures and the drand crystals are fetched live from their public endpoints; the other five families are drawn from a fixed seed for illustration. The status beside each name says which is which right now.
Your hand
Three gestures, and nothing about you
There are no accounts, names, chat messages, uploads or visitor profiles. Anonymous browser and network values exist only long enough to enforce contribution limits, and are never written to loom events or public output.
Bend the living edge
A warm intervention that pulls the present strand out of true.
Join what is there
Ties the edge together where two formations meet.
Light it
Brightens a region so later visitors see where attention fell.
Every formation is stored before it is broadcast. Two connected browsers see the same committed artifact, and a restart reconstructs the cloth from PostgreSQL rather than from memory. What you add is permanent and shareable by link; browsing an earlier UTC chapter never changes its history.
How it holds together
Commit first, then broadcast
The browser draws compact, versioned instructions. It never receives raw upstream payloads.
Normalise and bound
Seven upstream sources are normalised and independently bounded.
Bounded buffer
A single bounded signal buffer absorbs bursts without unbounded growth.
One coordinator
A single loom coordinator decides what becomes a formation.
Transaction
PostgreSQL commits the formation. Only on success does it exist.
Broadcast
Phoenix PubSub fans the committed instruction out to LiveView clients.
Source posture
All seven run by default. Each environment switch is an operator circuit breaker: turning one off removes that source and its upstream connection while the rest of the world keeps weaving.
| Source | Public freshness | Recovery posture |
|---|---|---|
| Wikimedia | Quiet after 20 seconds | At most 60 seconds from a durable event ID |
| USGS | Quiet after 3 minutes | Idempotent rolling-feed polling with a private ETag |
| Open-Meteo | Stale after 30 minutes | Keep the last ambient state; retry locally |
| drand Quicknet | Stale after 12 seconds | At most 20 exact rounds; report a larger gap |
| Bluesky Jetstream | Quiet after 20 seconds | Five-second overlap within a 60-second horizon |
| RIPE RIS Live | Quiet after 20 seconds | Rejoin the live edge; never claim replay |
| Solana slots | Quiet after 20 seconds | Rejoin the live edge; preserve observed gaps |
Reduced motion is a renderer
Not a disabled feature. The reduced-motion path draws the same cloth without losing controls, and a textual live summary describes formations for screen readers.
Every pointer act has a key
Semantic controls, visible focus, non-colour signal shapes and responsive touch targets throughout — inspect a formation with pointer, touch or keyboard.
Deliberately single-instance
v1 runs one loom coordinator. The invariants, recovery paths and bounds that choice buys are written down in ARCHITECTURE.md rather than implied.
Proven at launch capacity
The heavy suite runs 100 independent Chromium contexts with real LiveView snapshot progress, WebSocket stability, aggregate Presence cleanup, and one server-owned connection per streaming source.
Run it
Public source, local experience
Worldloom is available as public source and a local experience. A hosted demo link appears in the repository only once public infrastructure is configured and verified.
Live
Connect to all seven
Needs Elixir 1.20.2 on OTP 29.0.4, Node 24.18.0 and PostgreSQL 14+. Development connects to every public source by default.
git clone https://github.com/romankhadka/worldloom.git
cd worldloom
mix setup
npm ci
mix phx.serverThen open localhost:4000.
Offline
A repeatable hour
Disable the feed workers and seed one deterministic hour. The seed task is idempotent — rerunning it does not duplicate its 120 demo signals.
WORLDLOOM_FEEDS_ENABLED=false mix worldloom.seed_demo
WORLDLOOM_FEEDS_ENABLED=false mix phx.serverVerify
The gates
Source normalisation, transactional persistence, retry and checkpoint behaviour, LiveView interaction, deterministic rendering, keyboard and touch operation, reduced motion, two-browser convergence and reload reconstruction.
mix precommit
npm test
npm run test:e2eRead first
What it is not
An artistic aggregate — not an alerting, forecasting, operational, social, cryptographic-verification, financial or scientific analysis service. Upstream activity is best-effort and may be delayed, revised, incomplete or unavailable.