Build on Freenet

Getting Started

Build decentralized applications using familiar tools (Rust, TypeScript) and deploy them to a global peer-to-peer network with no servers to maintain.

  • Tutorial - Build your first Freenet app
  • Manual - Architecture, components, and reference

AI-Assisted Development

Install the freenet-dapp-builder skill for Claude Code:

/plugin marketplace add freenet/freenet-agent-skills
/plugin install freenet-dapp-builder

This skill guides you through building contracts, delegates, and UI for Freenet apps.

Developer Tools

GitHub Crates.io

  • freenet-scaffold: A Rust utility crate that simplifies the development of Freenet contracts by providing tools to implement efficient, mergeable state synchronization.

  • ghostkeys: A Freenet delegate for managing ghost key identities, enabling trust verification without revealing identity through blind-signed cryptographic certificates.

Example Apps

  • freenet-ping - a simple example demonstrating how to build a Freenet app
  • River - decentralized group chat app built on Freenet (in development)
  • Freenet Wiki - decentralized wiki with real-time collaborative editing (in development)

Ideas: Open Issues for Decentralized Services

Loading...

Weekly Developer Meetings

Recently Merged Features

Loading...

Freenet Manual

This guide provides comprehensive documentation on Freenet’s components, architecture, and usage. Use the table of contents below to navigate through the manual.


📚 Table of Contents

  1. Introduction
  2. Components
  3. Architecture
  4. Developer Guide
  5. Examples
  6. Community and Support
  7. Reference

📝 Introduction

Learn the basics of Freenet and its purpose.


Components

Explore the key components of Freenet:

  • Overview: A high-level overview of Freenet’s components.
  • Contracts: Details about contracts in Freenet.
  • Delegates: Explanation of delegates and their roles.
  • User Interfaces: Information on available user interfaces.

🏗️ Architecture

Understand Freenet’s architecture and how it works: