Your Radicle profile, served from your own node.
Radicle lets you share code peer to peer, with no platform in the middle. radprofiles adds the part people miss from the big forges: a public page that shows who you are and what you’re building, read straight from your own Radicle node.
What a profile should have, and nothing it shouldn’t.
- Identity you can verify
- Your alias, bio, and links, next to your DID, node ID, and SSH key. All derived from the key that signs your code.
- A year of work at a glance
- A contribution calendar, streaks, and recent commits, each linked to the exact change on the network.
- Every project, findable
- Pin the ones that matter, then list the rest with seed counts, open patches, and a one-click rad clone.
- Private work, counted privately
- Private repositories can shade your calendar without revealing names, commits, or exact counts.
- A feed and proper share cards
- An Atom feed of your commits, and link previews that show your name and face, not a placeholder.
- Nothing in the middle
- No accounts, no hosted backend, and no analytics or third-party scripts in the app. If your node is off, your page says so.
Look anyone up
No node of your own yet, or curious about someone else? Search public Radicle repositories and the people who maintain them, or paste a DID or node ID to build anyone’s profile from public seeds.
Find yours with rad self --did, or see an example.
Run your own
You need Node.js 20 or newer and a Radicle node. If you don’t have one yet, download Radicle; the user guide gets you there in a few minutes.
Using an agent? Have it set this up for you with these instructions.
Step 1
Start your node and its HTTP API
The API is read-only and stays on this machine; the site talks to it locally.
rad node start radicle-httpd --listen 127.0.0.1:8090Step 2
Clone radprofiles over Radicle
rad clone rad:z2v11Gpk44QqZ7zy8W9fva8wXXDBi cd radprofiles/dashboard npm installStep 3
Tell it who you are
Your public repositories show up on their own. Bio, links, avatar, and pinned or hand-picked repositories are optional;
.env.examplelists every setting.# dashboard/.env.local RADICLE_PROFILE_ALIAS=your-alias # rad self --alias RADICLE_DELEGATE_DID=did:key:z6Mk… # rad self --did RADICLE_PROFILE_BIO=What you build, in one line.Step 4
Build and publish
Then put it behind your reverse proxy or a tunnel. Prefer static hosting?
npm run build:staticwrites a site you can upload anywhere.npm run build npm run start:personal # http://localhost:3100
Questions
How is this different from Radicle Explorer?
radicle-httpd API, and every repository here links to Explorer.Does it publish my private work?
Can I use radprofiles anonymously?
.onion site or somewhere not registered to you. Your commits also carry an author name, email, and time zone; those are already public on every seed, so check your git settings too. To say on your profile that your node uses Tor without giving out an onion address, set RADICLE_PROFILE_TOR.Do I need a public IP or a domain?
npm run dev serves it on localhost. To publish, put it behind any reverse proxy, or use a tunnel such as Cloudflare Tunnel with no open ports (see infra/PUBLISH_WITH_CLOUDFLARE.md). Or run npm run build:static and upload the out/ folder to any static host.Can I use it without running my own node?
RADICLE_HTTP_BASE at any reachable radicle-httpd, such as a public seed that replicates your repositories. You’re then trusting that node’s copy of your data, which is the trade-off Radicle exists to avoid, so your own node is better.Which repositories show up, and in what order?
RADICLE_REPO_IDS, separated by commas. A repository ID (RID, like rad:z2v11Gpk…) is Radicle’s permanent address for a repository: rad . inside a clone prints it, and rad ls lists the ones on your node. Put up to six names or RIDs in RADICLE_PINNED_REPOS to feature them at the top.What are the activity scripts?
scripts/ folder. You don’t need them for a live site, which reads activity from your node. They save activity to files instead: npm run export-activity snapshots your public commits for static builds or a faster page, npm run count-private-activity turns commits in private local clones into calendar shade without names or counts, and npm run import-local-git adds history from before a project moved to Radicle. docs/SNAPSHOT_SYNC.md covers the details.Can I show my activity calendar in a README?
/calendar.svg, so a README can include . It follows the reader’s light or dark setting; add ?theme=light or ?theme=dark to pin one. The same data is at /profile.json for anything you want to build.How do I get the check marks next to my links?
npm run link-proof -- https://you.example and publish the file it writes at https://you.example/.well-known/radicle-proof.txt (or paste the snippet it prints into the page, if your host can’t serve that path). For X, post your DID from that account and add the post’s address to RADICLE_PROFILE_PROOFS. Email can’t be proved publicly, so it never gets a check mark.How do I get listed under People?
directory/people.json. directory/README.md walks through it.A repository link opens Explorer with a network error.
NEXT_PUBLIC_RADICLE_EXPLORER_NODE to a seed that does, or wait for replication.