Radicle

Installation

# Via pre-compiled binaries (recommended)
curl -sSf https://radicle.xyz/install | sh

# Via Cargo (Rust)
cargo install radicle-node radicle-cli

# Verify
rad --version
rad --help

Prerequisites: Git installed, network connection for sync.

Identity

# Create an identity (Ed25519 key, once only)
rad auth
# You choose an alias and a passphrase

# Display your identity
rad self
# Shows: DID (did:key:z6Mk...), alias, node ID

# The identity is stored locally
# No central server, no account to create

DID = Decentralized Identifier. It's your public key, your identity on the network.

Project

# Initialize a Radicle project (in an existing git repo)
cd my-project
git init && git add . && git commit -m "init"
rad init
# Choose: name, description, default branch, visibility

# Inspect the project
rad inspect              # RID, name, description, delegates
rad id                   # your identity in this project

# Created structure
# .git/refs/namespaces/   - Radicle refs
# No files added to the working tree

Network - Push / Sync

# Publish changes to the network
rad push                 # push to connected seed nodes

# Synchronize (sends and receives updates)
rad sync                 # synchronize with peers

# Clone a remote project
rad clone rad:z3gqcJ...  # clone via RID (Radicle ID)

Patches (equivalent to Pull Requests)

# Create a patch (from a branch)
git switch -c my-feature
# ... make changes, commit ...
rad patch create         # creates a patch from the branch

# List patches
rad patch list           # all patches
rad patch list --state open  # only open ones

# View a patch
rad patch show PATCH_ID

# Comment / review
rad patch comment PATCH_ID --message "LGTM!"
rad patch review PATCH_ID --accept
rad patch review PATCH_ID --reject

# Merge a patch
rad patch merge PATCH_ID

# Close without merging
rad patch close PATCH_ID

Issues (decentralized tickets)

# Create an issue
rad issue create
# Opens an editor for title + description

# List
rad issue list
rad issue list --state open

# View
rad issue show ISSUE_ID

# Comment
rad issue comment ISSUE_ID "Great idea!"

# Close
rad issue close ISSUE_ID

Node - Node management

# Start the local node
rad node start           # starts in the background
rad node status          # node status
rad node stop            # stop

# Logs and debug
rad node logs            # see logs in real time
rad node config          # display configuration

# The node listens on port 8776 (TCP)
# Required for P2P sync

Tracking - Follow projects

# Track a project (replicate it locally)
rad track rad:z3gqcJ...       # by RID
rad untrack rad:z3gqcJ...     # stop replicating

# Inspect the current project (RID, delegates, etc.)
rad inspect

GitHub vs Radicle comparison

ConceptGitHubRadicle
RepositoryRepositoryProject (RID)
IdentityGitHub AccountDID (crypto key)
ContributionPull RequestPatch
TicketsIssueIssue
CopyForkClone (implicit fork)
FavoriteStarTrack
CI/CDGitHub Actionsradicle-ci
Hostinggithub.comP2P Seed nodes
ModelCentralizedDecentralized (P2P)
AvailabilityDepends on GitHubDistributed network
CensorshipPossible (DMCA, etc.)Resistant

Seed Node - Hosting

# A seed node is a permanent Radicle node
# It replicates projects and makes them accessible

# Server prerequisites
# - Linux, port 8776 open (TCP)
# - radicle-node installed

# Configuration
rad node config
# File: ~/.radicle/config.json
# Policies: block (blacklist) or allow (whitelist)

# Systemd (automatic startup)
# /etc/systemd/system/radicle-node.service
# [Service]
# ExecStart=/usr/local/bin/radicle-node
# User=radicle
# Restart=always

sudo systemctl enable radicle-node
sudo systemctl start radicle-node

# Firewall
sudo ufw allow 8776/tcp     # Ubuntu
sudo firewall-cmd --add-port=8776/tcp --permanent  # Fedora