Developer docs

Documented against main @ bbedf98 (0.8.9-dev, 4 November 2026) · latest release v0.8.8

Overview

Build dapps on your users' own nodes

Freedom gives every web page a consented line to the user's own Swarm and Radicle nodes. Your app publishes, reads, signs and messages without servers, gateways or API keys.

On this page

Freedom Browser runs a Swarm node and, if the user enables it, a Radicle node inside the browser. Two page providers, window.swarm and window.radicle, plus the rad: URL scheme let an ordinary web page use those nodes with the user's consent.

Building with an agent? Start at /llms.txt.

Why build on Freedom#

Your user's node is the backend

Pages publish, read and sign through the user's own Swarm and Radicle nodes. No servers, no gateways, no API keys, and no exposing the node's HTTP API to localhost.

Wallet-grade consent for data

An EIP-1193-style API with origin-scoped grants and tiered prompts, from connecting to publishing, feeds, messaging and signing. Size limits and read budgets are enforced by the browser, not trusted to the page.

Serverless end to end

Ship the app on bzz:// or an ENS name, keep its state in Swarm feeds and single-owner chunks, and collaborate through Radicle issues and comments signed with the user's own identity.

Real time without servers

PSS and GSOC messaging with swarm_subscribe, swarm_sendPss and swarm_sendGsoc, while durable Swarm structures stay the source of truth.

An open standard

window.swarm is proposed as SWIP #94, and swarm-kit's provider-compliance page checks an implementation against it.

Publish from a page in ten lines#

if (!window.swarm?.isFreedomBrowser) throw new Error('Open this page in Freedom');

await window.swarm.requestAccess();              // the user connects this site once

const { bzzUrl } = await window.swarm.publishData({
  data: '<!doctype html><h1>Hello from my own node</h1>',
  contentType: 'text/html',
});                                              // the user approves the publish

console.log(bzzUrl);                             // bzz://<reference>, open it in Freedom

The Quickstart takes this further: feeds, reading, and deploying your app to Swarm and ENS.

Built with Freedom#

Canopy

A GitHub-style forge for the Radicle network, served from Swarm and powered by the user's own node.

rad: fetch window.radicle

Swarmit

Discussion boards on Swarm: posts are Swarm content, announced on Gnosis Chain and ranked by curator feeds.

window.swarm window.ethereum

swarm-kit chat

A chat example built on swarm-kit's live messaging primitives over PSS and GSOC.

window.swarm messaging

More in Demos.

Pick a protocol#

Swarm

Publish, keep state in feeds, sign and message with window.swarm. Quickstart, guides for feeds, live messaging and swarm-kit, and the API reference.

window.swarm

Radicle

Read public repositories with rad: URLs and write issues and comments with window.radicle. A guide and both references.

rad: fetch window.radicle

Demos

Open-source apps and example pages to read, run and copy from, tagged with the APIs they use.

Contribute

Work on the browser itself: setup, architecture, workflow, and issues open for contribution.

Shared guides#

These apply to both providers: