RAD-ID(1)
π rad-id β¨
okay so bestie, welcome to rad-id β that's section 1 of the Radicle CLI Manual, and it's literally the glow-up department for your repo's identity π
πΈ NAME πΈ
rad-id β manage changes to a Radicle repository's identity. yes, identity. it's giving main character energy for your repo π«Ά
π¦ SYNOPSIS π¦
rad id [<option>...]
rad id list [<option>...]
rad id update [--title <string>] [--description <string>] <option>...
rad id edit <revision-id> [--title <string>] [--description <string>]
[<option>...]
rad id show <revision-id> [<option>...]
rad id accept | reject <revision-id> [<option>...]
rad id redact <revision-id> [<option>...]
β¨ DESCRIPTION β¨
so rad id is the command you use to manage and propose changes to the identity of a Radicle repository. every repo has an identity document attached to it β it's like the repo's lil profile page, containing metadata like the repository name, description, and delegates π
the identity document is versioned, and changes to it have to be signed off by a quorum of delegates. no sneaky solo edits, periodt π
also: the identity document is stored as a Canonical JSON document. fancy. iconic. keep that in mind, iykyk π
π COMMANDS π
run rad id with no arguments and it defaults to the list command, showing you the list of revisions to the identity of the current repository. easy β¨
π list
lists all revisions to the identity document. that's it, that's the vibe.
π§ update
proposes a new revision to the identity document. revisions have a title and a description in addition to the proposed updated identity document β literally just like source code commits, no cap π
if you don't pass a title and description on the command line, you'll get prompted to enter one via your text editor. don't panic, it's fine π
π«Ά heads up bestie: if you're the repository's only delegate, proposed changes get automatically accepted and included into the identity document. congrats, you ARE the quorum π
--title <string>β set the title for the new revision βοΈ--description <string>β set the description for the new revision π--delegate <did>β update the identity by adding a new delegate, identified by their DID. new friend unlocked π«Ά--rescind <did>β update the identity by removing a delegate identified by their DID. bye bestie π--threshold <num>β update the identity by setting the number of delegates required to accept a revision π’--visibility <private> | <public>β update the identity by setting the repository visibility to private or public π--allow <did>β update the identity by giving a specific peer access to a private repository ποΈ--disallow <did>β update the identity by removing a specific peer's access to a private repository. note that the peer could have the contents of the repository up until the point that access was revoked π (yes, that's a real caveat, be aware)--payload <id> <key> <val>β update the identity by setting metadata in one of the identity payloads. this can be used to update a repository's project name or description, for example. to delete a field from a payload, simply set it tonullποΈ--no-confirmβ don't ask for confirmation before creating the revision. skip the "r u sure" text, you're confident π--editβ opens your$EDITORto edit the JSON contents directly ποΈ
π edit
edit an existing revision to the identity document. the revision must still be in the "active" state. same options as for update are available β¨
π important distinction, bestie: this edits a proposed revision to the identity. to edit the identity document itself, use update. two different things, don't mix them up π
β show
show a specific revision of the identity document. peek behind the curtain π
πΈ accept
accept a proposed revision to the identity document. the revision must be in the "active" state and the caller must be a delegate β
πΊ reject
reject a proposed revision to the identity document. the revision must be in the "active" state and the caller must be a delegate β
π¦ redact
redact an existing revision to the identity document. the revision must not be in the "accepted" state, and the caller must be the author of the revision. so basically: your revision, your redaction rights π«Ά
π OPTIONS π
--repo <rid>β specify the repository to operate on. defaults to the current repository π--quiet,-qβ suppress output. shhh π€«--helpβ print help information. classic π«Ά
π₯ EXAMPLES π₯
π Adding a delegate
to add a new delegate to a repository and update the threshold, use the update command:
$ rad id update --title "Add Bob" --description "Add Bob as a delegate" \
--delegate did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk \
--threshold 2
this creates a new revision proposing to add the delegate identified by the given DID and set the threshold to 2 β meaning two delegates must sign off on future identity changes. two votes minimum, periodt βοΈ
π Changing repository visibility
to change a repository from public to private:
$ rad id update --visibility private
note that this will require acceptance from a quorum of delegates to take effect. you can't just flip the switch alone bestie π
π Changing a repository payload
to change a repository's name and description, this is usually done through the xyz.radicle.project payload:
$ rad id update --title "Update title and description" \
--description "Improve clarity" \
--payload xyz.radicle.project name '"radicle-beans"' \
--payload xyz.radicle.project description '"Tasty Radicle beans"'
π note that the values passed to--payload, eg."radicle-beans", must be valid JSON values. this means that strings should be double quoted, as in the example above. yes double. inside the single quotes. it's giving nesting doll energy but that's the rule π
π¦ Removing a delegate
to remove a delegate and update the threshold, use the --rescind option:
$ rad id update --title "Remove Bob" \
--description "Bob is no longer a delegate" \
--rescind did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk \
--threshold 1
as with adding a delegate, this change will require approval from the remaining delegates. make sure you set an appropriate new threshold when removing delegates! π«Ά seriously, don't leave it vibing at a number that no longer makes sense π
β Adding Canonical References Rules
to update the canonical reference rules of the project, use the --payload xyz.radicle.crefs option while updating, rules as the key, and the rules object as the value. here's an example below:
$ rad id update --title "Update canonical reference rules" \
--payload xyz.radicle.crefs rules '{
"refs/heads/master": { "threshold": 1, "allow": "delegates" },
"refs/tags/*": { "threshold": 2, "allow": "delegates" },
"refs/tags/qa/*": { "threshold": 1, "allow": "delegates" }
}'
alternatively, you can use the --edit option for the update command and edit the payload directly. here's an example of what that may look like:
{
"payload": {
"xyz.radicle.crefs": {
"rules": {
"refs/heads/master": {
"allow": "delegates",
"threshold": 1
},
"refs/tags/*": {
"allow": "delegates",
"threshold": 1
},
"refs/tags/qa/*": {
"allow": "delegates",
"threshold": 1
}
}
},
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
],
"threshold": 1
}
π AUTHOR π
The Radicle Team. kings, honestly π
and that's the whole page bestie!! this one's from rad version 1.0.0, dated 2026-09-10 β so go forth, manage that identity, and remember: quorum or it didn't happen π
β¨π
π¦ where this page comes from
- arch rolling: radicle 1.10.3-1 Β· Apache-2.0 OR MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms