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
In Freedom: ens://app.swarmit.eth
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:
- Permissions and identity: origin-keyed grants, permission tiers, manifests, and which key signs your data.
- Errors and node readiness: user rejections, missing grants, node not ready, limits, and when to retry.