Files
radicle.xyz/_pages/download.md
T

8.8 KiB

title, subtitle, layout, variant
title subtitle layout variant
Download Radicle Download a Radicle release page wide

This is Radicle's download page. Radicle uses a reproducible build pipeline to ensure that anyone can reproduce the binaries on this page from source.

Radicle

OS Arch File Signature Checksum
Linux Loading… 💾 Loading… Loading… Loading…
Loading… 💾 Loading… Loading… Loading…
macOS Loading… 💾 Loading… Loading… Loading…
Loading… 💾 Loading… Loading… Loading…
Signer
Keyssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL460KIEccS4881p7PPpiiQBsxF+H5tgC6De6crw9rbU
FingerprintSHA256:iTDjRHSIaoL8dpHbQ0mv+y0IQqPufGl2hQwk4TbXFlw
Ownercloudhead@radicle.xyz

Radicle HTTP Daemon

OS Arch File Signature Checksum
Linux Loading… 💾 Loading… Loading… Loading…
Loading… 💾 Loading… Loading… Loading…
macOS Loading… 💾 Loading… Loading… Loading…
Loading… 💾 Loading… Loading… Loading…
Signer
Keyssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFw+wCPZUh8OndhgavJMSZluorVvzJjz22PH81XrkvIu
FingerprintSHA256:HYV32eX6vSKEXpuXNstYGsbWDYTOxG1eqv/HjwuZnck
Ownerme@sebastinez.dev

Download

OS Arch Target
Linux x86_64 x86_64-unknown-linux-musl
aarch64 (ARM) aarch64-unknown-linux-musl
macOS x86_64 x86_64-apple-darwin
aarch64 (ARM) aarch64-apple-darwin

You can download the appropriate tarball for your operating system with:

curl -O -L https://files.radicle.xyz/releases/latest/radicle-$TARGET.tar.xz

For Radicle proper, and:

curl -O -L https://files.radicle.xyz/releases/radicle-httpd/latest/radicle-httpd-$TARGET.tar.xz

For Radicle HTTP Daemon.

Replace $TARGET with the appropriate target for your system, from the table above.

Verification

After you've downloaded the archive (ARCHIVE.tar.xz in the examples below), verify the signature using the .sig file and ssh-keygen. The output must match the following, including the respective signing key fingerprint from the section above. For example:

$ ssh-keygen -Y check-novalidate -n file -s ARCHIVE.tar.xz.sig < ARCHIVE.tar.xz
Good "file" signature with ED25519 key SHA256:iTDjRHSIaoL8dpHbQ0mv+y0IQqPufGl2hQwk4TbXFlw

To verify the checksum, download the .sha256 file, and run:

$ sha256sum -c ARCHIVE.tar.xz.sha256
ARCHIVE.tar.xz: OK

The output must correspond to the above.

Installation

To install, simply extract the files to a location in your PATH, for example:

$ tar -xvJf ARCHIVE.tar.xz --strip-components=1 -C ~/.radicle/

This will place binaries in ~/.radicle/bin and manuals in ~/.radicle/man, and overwrite any existing Radicle binaries.

<script> getRelease("Radicle", "https://files.radicle.xyz/releases/latest", "radicle"); getRelease("Radicle HTTP Daemon", "https://files.radicle.xyz/releases/radicle-httpd/latest", "radicle-httpd"); function getRelease(name, urlBase, releaseId) { const releases = document.getElementById(`${releaseId}-releases`); releases.classList.remove("hidden"); fetch(`${urlBase}/${releaseId}.json`) .then(res => res.json()) .then(data => { const version = data.version; const commit = data.commit; const release = document.getElementById(`${releaseId}-release-header`); const releaseName = document.getElementById(`${releaseId}-release-name`); const releaseInfo = document.getElementById(`${releaseId}-release-info`); document.querySelectorAll(`#${releaseId}-releases [data-release-binary]`).forEach((row) => { const arch = row.dataset.releaseArch; const binary = row.dataset.releaseBinary; const archive = `${releaseId}-${version}-${arch}-${binary}.tar.xz`; const url = `${urlBase}/${archive}`; row.querySelector(".release-arch").innerText = arch; row.querySelector(".release-url").innerText = archive; row.querySelector(".release-sig").innerText = ".sig"; row.querySelector(".release-checksum").innerText = ".sha256"; row.querySelector(".release-url").href = url; row.querySelector(".release-sig").href = `${url}.sig`; row.querySelector(".release-checksum").href = `${url}.sha256`; }); release.classList.remove("loading"); releaseName.innerText = `${name} ${version}`; releaseInfo.innerHTML = `Built from commit ${commit} on ${new Date(data.timestamp * 1000).toUTCString()}.`; }); } </script>