rad.1
1 .TH "RAD" "1" "2025-09-23" "rad 1.0.0" "Radicle CLI Manual" 2 .ie \n(.g .ds Aq \(aq 3 .el .ds Aq ' 4 .ss \n[.ss] 0 5 .nh 6 .ad l 7 .de URL 8 \fI\\$2\fP <\\$1>\\$3 9 .. 10 .als MTO URL 11 .if \n[.g] \{\ 12 . mso www.tmac 13 . am URL 14 . ad l 15 . . 16 . am MTO 17 . ad l 18 . . 19 . LINKSTYLE blue R < > 20 .\} 21 .SH "NAME" 22 rad \- Radicle command\-line tooling. 23 .SH "SYNOPSIS" 24 .sp 25 \fBrad\fP * 26 .SH "DESCRIPTION" 27 .sp 28 The Radicle CLI is a set of tools designed for users of the Radicle 29 peer\-to\-peer code collaboration stack. The CLI provides the ability to manage 30 Radicle profiles and publish repositories to the Radicle network. 31 .SH "REQUIREMENTS" 32 .sp 33 There are a few important requirements for running the Radicle CLI: first, a 34 recent version of \fBgit\fP (\fB2.34.0\fP or later) must be installed. You can check 35 your installation by running \fBgit \-\-version\fP. Second, \fBssh\-agent\fP must be 36 installed and running. To bypass ssh\-agent, it\(cqs possible to set the 37 \fBRAD_PASSPHRASE\fP environment variable. See the \fIEnvironment\fP section. 38 .SH "GETTING STARTED" 39 .sp 40 Let\(cqs see how we can setup Radicle and clone a repository from the network. 41 .sp 42 Before we start, make sure that the \fBrad\fP binary is available on your system by 43 running: 44 .sp 45 .if n .RS 4 46 .nf 47 .fam C 48 $ rad 49 .fam 50 .fi 51 .if n .RE 52 .sp 53 This is the base command and the output will show you all available 54 sub\-commands. 55 .SS "Creating a profile" 56 .sp 57 When using Radicle for the first time, you have to create a new Radicle 58 \fIprofile\fP. A profile is simply a cryptographic key pair associated with some 59 storage space on your local device. Radicle stores everything under the Radicle 60 \fIhome\fP directory, which defaults to \fB~/.radicle\fP on most systems. 61 To create your profile, run: 62 .sp 63 .if n .RS 4 64 .nf 65 .fam C 66 $ rad auth 67 .fam 68 .fi 69 .if n .RE 70 .sp 71 Follow the instructions by entering an alias and a passphrase to protect your 72 key pair. When you\(cqve completed the steps, your new Radicle \fIDID\fP 73 (Decentralized Identifier) will be displayed. This identifies your device, as 74 well as all the code you publish. Share it freely with collaborators. Your 75 alias is a non\-unique name that is shared across the network to identify your 76 node. It can always be changed at a later time. 77 .sp 78 After running \fBrad auth\fP, you should have a new profile and key pair under your 79 Radicle home. The key pair is used for identifying peers across the network, as 80 well as signing code and other artifacts published on the network. 81 .sp 82 To avoid having to re\-enter your passphrase every time a signature is required, 83 \fBrad auth\fP adds your secret key to \fBssh\-agent\fP. 84 .sp 85 You can always display the full path to your Radicle home directory using: 86 .sp 87 .if n .RS 4 88 .nf 89 .fam C 90 $ rad self \-\-home 91 .fam 92 .fi 93 .if n .RE 94 .sp 95 The \fBself\fP sub\-command is useful for querying profile information. You can 96 run it without any arguments to show all of your profile information, including 97 your DID: 98 .sp 99 .if n .RS 4 100 .nf 101 .fam C 102 $ rad self 103 .fam 104 .fi 105 .if n .RE 106 .SS "Connecting to the network" 107 .sp 108 Radicle is a peer\-to\-peer system. This means that there are no clients or 109 servers; only \fInodes\fP, and every user has to run their own. This ensures 110 that there is no single point of failure, and the Radicle network can keep on 111 existing as long as there are users to run nodes. 112 .sp 113 The Radicle node is a lightweight process that runs in the background and 114 manages connections with other nodes, as well as data replication. To check your 115 node\(cqs status, run: 116 .sp 117 .if n .RS 4 118 .nf 119 .fam C 120 $ rad node status 121 .fam 122 .fi 123 .if n .RE 124 .sp 125 If the node is not running, you can start it with: 126 .sp 127 .if n .RS 4 128 .nf 129 .fam C 130 $ rad node start 131 .fam 132 .fi 133 .if n .RE 134 .sp 135 This will start the node in the foreground. Simply add \fB\-\-daemon\fP to run the 136 node in the background. 137 .sp 138 When daemonized, the node will log all output to a file under your Radicle home. 139 On most systems, this will be \fB~/.radicle/node/node.log\fP. 140 .sp 141 You can also display the latest logs at any time using: 142 .sp 143 .if n .RS 4 144 .nf 145 .fam C 146 $ rad node logs 147 .fam 148 .fi 149 .if n .RE 150 .sp 151 After your node starts, it will attempt to connect to peers on the network. 152 .sp 153 Note that if you set up your node to be started using \fBsystemd\fP(1), 154 the logs will go to the system journal. These can be viewed with \fBjournalctl\fP(1): 155 .sp 156 .if n .RS 4 157 .nf 158 .fam C 159 $ journalctl \-u radicle\-node \-S today 160 .fam 161 .fi 162 .if n .RE 163 .sp 164 To connect to a specific peer, the \fBconnect\fP sub\-command can be used: 165 For example, to connect to a community node, you can run: 166 .sp 167 .if n .RS 4 168 .nf 169 .fam C 170 $ rad node connect z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@iris.radicle.xyz:8776 171 .fam 172 .fi 173 .if n .RE 174 .sp 175 The argument given to \fBconnect\fP is called a node \fIaddress\fP. It is composed of 176 a Node ID (NID), followed by an \fB@\fP symbol, and the \fIhost\fP name and \fIport\fP. 177 You can display your NID with \fBrad node status\fP. 178 .sp 179 To make these connections permanent, such that they are always tried on 180 startup, add the addresses to your configuration file at 181 \fB~/.radicle/config.json\fP, under the \fB"connect"\fP field. 182 .sp 183 Now that you\(cqre connected to the network, we can try to clone a repository 184 hosted on Radicle. 185 .SS "Cloning a repository" 186 .sp 187 To clone a repository from the Radicle network, you need to be connected to a 188 seed which is hosting the repository. Eventually, this won\(cqt be necessary, 189 but for now, a direct connection with the seed you are cloning from is 190 required. Once the connection is established, you can run the \fBrad clone\fP 191 command to clone a repository, by supplying a Repository Identifier (RID). 192 RIDs are globally unique URNs that identify a repository on Radicle. 193 For example, let\(cqs clone the Radicle heartwood repository: 194 .sp 195 .if n .RS 4 196 .nf 197 .fam C 198 $ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 199 .fam 200 .fi 201 .if n .RE 202 .sp 203 If the command succeeds, you will have a checkout of the repository under 204 \fB./heartwood\fP, with a \fBrad\fP remote setup, which you can pull from and push to. 205 .sp 206 The \fBrad\fP remote is special in that it will always return the \fIauthoritative\fP 207 branch of the repo, when fetched from. This is defined as the latest commit 208 on the repository\(cqs default branch that a threshold of delegates have published. 209 .sp 210 Under the hood, the \fBclone\fP command does a few important things: 211 .sp 212 .RS 4 213 .ie n \{\ 214 \h'-04'\(bu\h'+03'\c 215 .\} 216 .el \{\ 217 . sp -1 218 . IP \(bu 2.3 219 .\} 220 It subscribes to updates from this repository; this is called \fItracking\fP. 221 .RE 222 .sp 223 .RS 4 224 .ie n \{\ 225 \h'-04'\(bu\h'+03'\c 226 .\} 227 .el \{\ 228 . sp -1 229 . IP \(bu 2.3 230 .\} 231 It creates a copy of the repository under your local storage, which provides 232 a replica to the network. 233 .RE 234 .sp 235 .RS 4 236 .ie n \{\ 237 \h'-04'\(bu\h'+03'\c 238 .\} 239 .el \{\ 240 . sp -1 241 . IP \(bu 2.3 242 .\} 243 It creates a Git remote for every repository \fIdelegate\fP. These are usually 244 the repository maintainers. 245 .RE 246 .sp 247 .RS 4 248 .ie n \{\ 249 \h'-04'\(bu\h'+03'\c 250 .\} 251 .el \{\ 252 . sp -1 253 . IP \(bu 2.3 254 .\} 255 It creates a fork of the repository that is under your public key. 256 .RE 257 .sp 258 .RS 4 259 .ie n \{\ 260 \h'-04'\(bu\h'+03'\c 261 .\} 262 .el \{\ 263 . sp -1 264 . IP \(bu 2.3 265 .\} 266 It creates a \fBrad\fP remote which you can push to, to update your fork. 267 .RE 268 .sp 269 You can see all replicated and locally\-available repositories using: 270 .sp 271 .if n .RS 4 272 .nf 273 .fam C 274 $ rad ls \-\-all 275 .fam 276 .fi 277 .if n .RE 278 .sp 279 By default, your node will subscribe to updates from \fIall\fP peers. This 280 behavior can be changed by passing \fB\-\-scope followed\fP when cloning. It can 281 also be changed later via the \fBrad seed\fP command. 282 .SS "Publishing a repository on Radicle" 283 .sp 284 To publish an existing Git repository on the Radicle network, navigate to 285 a working copy and run the \fBrad init\fP command: 286 .sp 287 .if n .RS 4 288 .nf 289 .fam C 290 $ cd my\-repo 291 $ rad init 292 .fam 293 .fi 294 .if n .RE 295 .sp 296 You will be prompted to enter a repository name and default branch. Once the 297 repository is created, the Repository Identifier (RID) will be printed. 298 Share this with collaborators so that they can clone your repository. 299 .sp 300 Note that your new repository will only be replicated by nodes that you are 301 connected to and either have an open tracking policy, or trust your Node ID. 302 .sp 303 The \fBrad init\fP command creates a special remote in your working copy named 304 \fBrad\fP. Pushing to this remote publishes changes to your local storage and to 305 the network. 306 .sp 307 You can view information about the \fBrad\fP remote with: 308 .sp 309 .if n .RS 4 310 .nf 311 .fam C 312 $ git remote show rad 313 .fam 314 .fi 315 .if n .RE 316 .sp 317 You can display the Repository ID (RID) from the root of any Git repository 318 by running: 319 .sp 320 .if n .RS 4 321 .nf 322 .fam C 323 $ rad . 324 .fam 325 .fi 326 .if n .RE 327 .sp 328 You can also show the repository\(cqs identity payload, which contains its name, 329 description and default branch by running: 330 .sp 331 .if n .RS 4 332 .nf 333 .fam C 334 $ rad inspect \-\-payload 335 .fam 336 .fi 337 .if n .RE 338 .SH "FILES" 339 .sp 340 \fB~/.radicle\fP 341 .RS 4 342 The \fIRadicle Home\fP. This is the default location for Radicle configuration 343 files, keys, and repository storage. Can be controlled by settting the 344 \fBRAD_HOME\fP environment variable. 345 .RE 346 .sp 347 \fB~/.radicle/config.json\fP 348 .RS 4 349 The default configuration file for Radicle. To display its exact 350 location on your system, you can use the \fBrad self \-\-config\fP command. 351 .RE 352 .SH "ENVIRONMENT" 353 .sp 354 Various environment variables are used by \fBrad\fP. 355 .sp 356 \fBRAD_HOME\fP 357 .RS 4 358 This sets the location of your Radicle home. If unset, your Radicle home will 359 be located at \fB~/.radicle\fP. 360 .RE 361 .sp 362 \fBRAD_PASSPHRASE\fP 363 .RS 4 364 If you would like to bypass \fBssh\-agent\fP, you can store your passphrase in this 365 environment variable. Note that this is not secure and is equivalent to having 366 an unencrypted secret key. 367 .RE 368 .SH "AUTHOR" 369 .sp 370 The Radicle Team