Open source · free, built on Willow

Free, open source, and forkable.

Riot is open source so communities can run, read, audit, adapt, and fork it, reducing dependence on any single company that can be pressured or bought. The code and this marketing site live at github.com/rabble/riot.

License

Free and open source.

Riot is free software. You can run it, read it, copy it, change it, and share it. Its open licenses and participant-held copies reduce proprietary lock-in and dependence on any one company's continued permission. The full source lives at github.com/rabble/riot. Most of the repository is MIT-licensed; the crates/riot-anchor and crates/riot-anchor-protocol crates are AGPL-3.0-or-later.

Free as in speech, not just free as in beer. Fork it, audit it, adapt it for your community, or run your own. The Willow protocol it builds on is independently licensed and open too.

How the repository is organized

A Rust core, with native apps on top.

The shared logic is Rust; each platform is a thin native shell over it via FFI. This keeps the signing, merge, and storage code in one auditable place rather than reimplemented per platform.

Core

Rust workspace

Shared protocol, storage, and merge logic. cargo test --workspace --all-features is the canonical test command.

crates/riot-core
FFI

Native bindings

Rust core exposed to Swift (iOS/macOS) and Kotlin (Android) through a generated FFI layer so apps stay thin.

crates/riot-ffi
Apps

iOS, Android, gateway

Native UIs and an optional gateway for Willow site content. The marketing site is separate from the gateway.

apps/ios · apps/android · apps/gateway

The development workflow — TDD, coverage thresholds, spec-driven work, and the orchestration agents — is documented in AGENTS.md at the repo root. It applies equally to human and agent contributors.

Build and verify

Read it, build it, check it yourself.

Everything here can be reproduced locally from the repository. The commands below are the same ones the project's own checks run.

Rust core

Test the workspace

Run the full test suite and the lint/format checks that gate pull requests.

cargo test --workspace --all-features cargo fmt --all -- --check && cargo clippy
Marketing site

Verify this site is dependency-free

Run the contract check that enforces byte-identical mirrors, no remote fetches, and no analytics — then preview locally.

node scripts/marketing/protocol-page-contracts.mjs python3 -m http.server 4173 --directory marketing/public