Prototype — built in the open

Community tools that travel with people.

Riot is a home for public conversation, community decisions, shared tools, and collective memory—carried by the people who make it matter.

Jump to: For communities For partners For builders

More than a social feed

Communities carry their own tools.

A Riot community holds shared state and the small apps its organizers approve: checklists, alerts, decisions, events, and whatever the group needs next. Use them for a festival rota, neighborhood publication, community meal, or cooperative decision; familiarity matters before conditions become difficult.

In the lineage of Indymedia, protest.net, and TXTMob. Read the lineage →

Riot Spaces screen showing a mutual-aid community and its tools
Riot's organizer-approved apps screen
Composing a message in Riot
Riot's Nearby screen syncing a community over Bluetooth or local network
Real app screens
from the iPhone simulator build
What's different — a conventional platform vs. Riot's direction
Conventional platformRiot's direction
The service holds the canonical community databaseParticipants carry community state
Offline means waiting for the service to returnAlready-held data and installed tools remain locally useful on a functioning device
A server outage cuts off the productA compatible nearby peer can exchange updates when the local path is available
Extensions belong to the platformCommunities approve and carry their own tools
A domain and hosted account anchor identityWillow data carries community continuity

For communities

Your community should still work when the network doesn't.

A tenants union carrying alerts, meeting changes, rides, and checklists. Disaster responders carrying shelter maps and supply requests into disconnected areas. A mutual-aid network coordinating needs, offers, schedules, and knowledge. An independent publication keeping and re-sharing its material when a website is blocked or a gateway disappears.

These are examples of what Riot is designed to enable — not claims that Riot has completed field validation for each kind of organization.

  • Keep working locally. Reading, writing, organizing, and preparing updates happen on the device — no server round-trip required.
  • Exchange without internet. Compatible nearby devices can connect when a local transport is actually available, review offered updates, and choose whether to add them. Current evidence is prototype local-network (Bonjour) testing; physical two-iPhone Bluetooth remains unverified.
  • Publish a public web view. The reference gateway renders exported public community content for ordinary browsers. It is not yet a live sync server for Riot devices.
  • Carry more than messages. A community can carry structured information and community-approved tools — checklists, wikis, events, decisions — not just a chat log.
  • Manage several communities. Creating, following, switching, archiving, restoring, and reopening communities are supported in the core; the Using Riot guide names which screens exist on each platform.
  • Keep human control. External updates are previewed before acceptance, and unapproved community tools do not execute.

Riot turns every participating device into part of the community's library, newsroom, toolbox, and distribution network.

See it running

Different apps, one community, no cloud.

Live screens from the Riot desktop build. Each one is a separate app a community carries — events, decisions, a newswire, a photo wall, shared checklists — all running on-device, exchanged device to device.

Riot desktop Home screen listing a community's tools: Events, Decisions, Chat, and Wiki
HomeEvery tool the community runs, in one place.
Riot Events app showing a community garden workday and courtyard supper with RSVPs
EventsPut a time on the calendar and see who is in.
Riot Decisions app voting on how to make a school crossing safer
DecisionsPropose options, vote, decide together.
Riot Dispatches newswire with neighborhood notes about routes and a water table
DispatchesA community newswire — longer notes worth keeping.
Riot Photo wall sharing an image of a long table set for a street feast
Photo wallShare what the community is looking at.
Riot shared checklist with tasks to pick up lunch, reserve the venue, and remind people
ChecklistShared to-dos anyone in the space can add to.

Real screens from the Riot desktop build. The app is in active development — get the current build.

For partners, funders, and journalists

Infrastructure communities can possess, not merely access.

A Riot community's Willow data carries its own continuity — it is not derived from a domain name or a hosted account. Participant devices provide shared custody of the community's information. Public gateways are replaceable views over exported public data, not the authority. Communities choose their tools and their editorial practices, and public Newswires can combine open publishing with transparent editorial actions instead of invisible ranking.

01

Community media

Publishing without one canonical publishing server — readers' devices can carry material they have received, so blocking one website need not erase every participant-held copy.

02

Coordination that survives outages

Ordinary community infrastructure — boards, schedules, checklists — that can remain locally useful from already-held data on a functioning device during outages, shutdowns, or censorship.

03

Tools each community chooses

Organizers approve the tools their community carries. There is no central app store deciding for every community at once.

04

Shared foundations

The same substrate serves mutual aid, tenant organizing, clinics, cooperatives, disaster response, protests, and independent media.

This section makes no claim of production readiness, completed security audits, an availability guarantee, completed remote-device sync, or confidentiality for the public Newswire. See what works today.

For builders

Willow separates shared data from the network carrying it.

Riot publishes your update into the community's Willow space. Willow is designed so the update is not permanently tied to one transport. Riot's current prototype carries updates locally; internet seed synchronization is the next path under development.

Offline and online do not need separate community databases. They can be different ways of carrying the same shared state.

Under the hood

Willow provides

  • independent namespaces;
  • subspaces, paths, timestamps, and arbitrary payloads;
  • deterministic joins for partial replicas;
  • a data model independent of any one network transport; and
  • optional Meadowcap capability and Willow synchronization protocols.

Riot adds

  • community and profile semantics;
  • community relationships and per-community data identities;
  • public Newswire records and editorial actions;
  • community-approved, content-addressed mini-apps;
  • app-scoped bridge access and hardened native execution;
  • preview, validation, and acceptance policy;
  • durable multi-community management;
  • transport integrations and public export rendering; and
  • native interfaces for people who should never need to learn Willow.

Willow itself does not define Riot profiles, communities, Newswires, moderation, mini-apps, gateways, or native sandbox behavior — that is Riot's layer.

Protocol comparison Where does Riot fit?Compare Riot, Willow, and neighboring protocols by data model, authority, transport, privacy, offline behavior, and extension model.
For the technically curious

Every post is a signed entry in a Willow-protocol namespace — content-addressed and capability-scoped, built for exactly this kind of partial, offline-first sync.

Device-to-device sync is one small, transport-independent exchange: Hello → each side sends a Summary of what it has → each side Requests only what it's missing → Entries cross the wire → both sides send an updated Summary → Complete. Malformed, oversized, or out-of-sequence messages get a hard Reject, not a best-effort parse. The same frame bytes travel over local IP, QR, or a plain file — the sync layer doesn't know or care which.

That exchange still can't skip the same admission boundary the UI uses: inspect → preview → plan → commit. Nothing is live in your store until you've explicitly planned and committed it — sync just gets bytes to your device, it doesn't get to decide what you publish.

Your signing key never leaves your device in the clear. It's sealed behind your device's hardware-backed keystore — Keychain on iOS, Android Keystore on Android — and only unwrapped in memory for the moment it's needed.

Compare Riot with adjacent protocols →

One update, different paths

The update is not tied to the wire that carries it.

Willow does not tie an update to one network path. In the current prototype, nearby Riot devices can exchange updates over a local network, and exported public content can be rendered on the web. Remote Riot-device synchronization through an internet seed is the next transport path being built.

  1. You post or update something
  2. Riot publishes a Willow update
  3. The same update can then travel more than one way:

Nearby / local exchange

Tested locally

Devices on the same local network find each other and exchange updates directly — with preview before anything is accepted.

Internet seed

In development

A server-mediated path carrying Willow updates between remote Riot devices. Being built — not an integrated product capability today.

  1. Riot devices reconcile the update

Separate public window: exported public content is rendered by a web gateway for ordinary browsers. The gateway is a replaceable view for web readers — it is not a live Willow sync server for Riot devices.

How it works

One story, wherever you meet Riot

Five beats hold the whole mental model — what Riot actually verifies, and what a browser mirror could lie about. Read the web for reach; open the app when provenance matters. The screen-by-screen workflow follows below.

  1. No central account or publishing server

    Your identity is a cryptographic key, not a service login. Volunteer seeds, anchors, and mirrors can run on servers, but none owns your identity or is the single place Riot must publish.

  2. Publishing moves peer to peer

    Signed posts move between phones and volunteer seeds. Peer-to-peer does not mean anonymous: devices and infrastructure may observe connections.

  3. Many mirrors, not one site

    Websites are replaceable views, not the authority. A mirror can display altered text or false attribution, but it cannot produce an independently synced signed record Riot accepts as the claimed author.

  4. Signed records, checked in the app

    Riot checks the signature and authorization of the independently synced record. That establishes who signed an unchanged admitted record—not whether its claims are true, current, complete, safe, or endorsed.

  5. Web for reach; the app for provenance

    Use the web to reach readers. When provenance matters, read the independently synced record in Riot instead of trusting what a mirror displayed.

What you do

What actually happens, screen by screen

01

Preload

Install it before you need it. With data already held on a functioning device, local tools can remain useful when no internet path is available.

02

Open or create a community

Create a public community with a name — "Berlin Mutual Aid" — or join one that already exists with a link or QR code. A community is a namespace; there's no admin approval gating who can publish into it.

03

Compose & sign

Draft a headline and what people need to know. Flag it honestly if a model helped write it. Nothing goes anywhere until you tap "review complete — sign locally" — a model can draft, it can't sign, and it can't publish.

04

Carry it

A signed entry is just bytes — hand it off any way a bytestring can move: a file or QR code, or the prototype's tested local-network exchange between nearby devices. Physical two-iPhone Bluetooth remains unverified.

05

Preview before you accept

Incoming entries land in an import queue first. You see the signer and the content before anything touches your board — nothing is accepted automatically, ever.

06

Merge, don't overwrite

When a compatible exchange path is available, devices can merge records they have received. Riot cannot recover records that no reachable participant holds.

Privacy

Privacy through control, not secrecy.

Riot is privacy-respecting, not secret by default. Public community updates are meant to circulate. Privacy comes from reducing centralized collection, keeping community data on participants' devices, supporting separate community identities, limiting what tools can access, and letting people exchange information without always exposing their activity to internet infrastructure.

Riot cannot promise anonymity, conceal public posts, or erase every copy after information has spread. Encrypted private groups are planned separately and are not shipped today.

You control your participation and your local data — not every copy of public information once it has been shared.

Willow possibility vs. current Riot behavior — the protocol can express more than Riot ships
Willow can express or supportCurrent Riot public communities
End-to-end encryptable dataPlaintext by design
Meadowcap scoped read/write capabilitiesWrite authority is checked; no confidential public read boundary
Confidential interest-overlap syncNot the current public sync path
Logical destructive editingNo recall or secure erasure of copies already received

Open Newswire

Available in the prototype

Open publishing for alerts, mutual aid, reporting, and community publications — meant to circulate, plaintext, with transparent editorial actions as a lens rather than a gate.

Encrypted private groups

Direction, not shipped

Private, encrypted spaces for affinity groups, coops, and crews are a separate planned system with its own threat model. They are not part of today's prototype.

Not guesswork

Grounded in the field, not assumed at a whiteboard

Every major design call is checked against two bodies of evidence: how mutual aid, protest comms, and movement media have actually worked under pressure — Occupy Sandy, TXTMob, Verificado 19S, Indymedia's RNC desk, the 2019 Hong Kong protests, and disaster response after the 2023 Türkiye earthquakes and Hurricane Maria — and what makes prosocial local spaces healthy when the pressure is off — the Front Porch Forum study, the 2025 "Local Connection Crisis" survey, and the 14 Civic Signals framework.

Crisis response & movement media

What people actually reach for when the network is down or the state is watching. Consumer chat apps are the incumbent even for trained responders; trust is established in person, not by software; and many parallel, functionally distinct channels beat one general-purpose feed. Riot's intake → verify → dispatch pipeline, its channel matrix, and its moderation-as-lens model all come from this evidence.

Sources: Occupy Sandy archive; Verificado 19S; Insecurity Insight / CDAC Network Türkiye study; ARRL Hurricane Maria archive; Urman et al., PLOS ONE 2021 (Hong Kong). Full citations in the research docs ↗.

Prosocial local spaces

What makes a local digital space healthy when the network is up. Three independent studies — Front Porch Forum (235,000 members, 13,473 surveyed), the 2025 "Local Connection Crisis" survey (2,028 people), and New_ Public's Roundabout — converge on the same structural answer: bounded content, named human stewards, and non-extractive incentives. The finding that matters most here: forums that were more active were rated less favorably. The platform people value is the one they don't live inside.

Sources: New_ Public / Center for Media Engagement, "Front Porch Forum" (2024); "The Local Connection Crisis" (Nov 2025); "Introducing Roundabout"; the 14 Civic Signals framework. Synthesis in docs/research ↗.

Why this matters for Riot specifically

The prosocial-spaces literature warns against engagement addiction — its Nourish and Take a Breath signals are about not driving compulsive use. Riot satisfies both by transport design, not by policy: a peer-to-peer, sync-bounded model has no server pushing a feed and no algorithm optimizing for time-on-device. Riot carries community tools, not a feed to scroll. That is its distinctive contribution relative to platforms that fight engagement extraction with moderation labor alone.

This is a design argument grounded in the cited research, not a security or anonymity claim. Riot does not promise protection from surveillance, and pseudonymity is not anonymity.

Lineage

Indymedia.org
Open publishing
Frictionless posting, editorial curation as a lens — not a gate.
Protest.net
Structured events
Actions as typed, discoverable records — not free text.
TXTMob
Broadcast alerts
SMS swarm alerts at the 2004 RNC/DNC — the channel matrix Riot rebuilds.
Divine.video
Syndicated media
Subscriber devices can distribute received material alongside servers, reducing dependence on one seizable endpoint.

Built by @rabble

Decades into the same unfinished work.

@rabble is building Riot using the Willow libraries — a new system from a long practice of helping communities publish and keep control of their own infrastructure. Read the full lineage and why it exists →

Seizure resistance is not theoretical

In 2017, Germany's interior ministry banned Linksunten Indymedia and police raided spaces associated with its alleged operators. In June 2026, interior ministers from all 16 German states asked the federal government to examine a complete ban of de.indymedia.org, alongside seizures, hosting takedowns, and network blocks. Riot is being built in the shadow of that history.

Status

Built in the open

Riot is a prototype being built right now, in public — every increment lands on the releases page as it ships. Every claim above carries its own label; this is the summary, not a correction.

Available in the prototype

  • Durable core support for creating, following, switching, archiving, restoring, and reopening multiple communities
  • Native iOS community chooser and link/QR join flows
  • Local Newswire creation and durable display
  • Human confirmation and preview-before-accept import in nearby flows
  • Public gateway rendering from exported community data
  • Community-approved mini-app packages
  • App-scoped bridge access and hardened app execution
  • Fresh per-community author identities when joining another community

Tested locally

  • Local-network (Bonjour) peer exchange; physical two-iPhone Bluetooth remains unverified

In development

  • Integrated remote Riot-device synchronization through an internet seed

Direction, not shipped

  • Encrypted private groups
  • Confidentiality for public communities
  • Full deletion from devices that already copied public content
  • Production scale, audited security, or an availability guarantee
  • Full interoperability with every Willow draft and transport
  • Physical two-iPhone Bluetooth exchange

Follow the build.

Riot is part of the protest.net family of tools. Updates on the evidence sprint, the research behind it, and an eventual release will post as each phase clears its gate.