radprofiles

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.

Open the full profile

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.

  1. 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:8090
  2. Step 2

    Clone radprofiles over Radicle

    rad clone rad:z2v11Gpk44QqZ7zy8W9fva8wXXDBi
    cd radprofiles/dashboard
    npm install
  3. Step 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.example lists 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.
  4. Step 4

    Build and publish

    Then put it behind your reverse proxy or a tunnel. Prefer static hosting? npm run build:static writes a site you can upload anywhere.

    npm run build
    npm run start:personal   # http://localhost:3100

Questions

How is this different from Radicle Explorer?
Explorer is for browsing one repository at a time on a seed. radprofiles is about a person: who you are, what you’ve been working on, and every project you publish, on one page you control. Both read the same radicle-httpd API, and every repository here links to Explorer.
Does it publish my private work?
No. The profile lists public repositories only, and skips any repository your node marks private, even one you list by hand. If you use the optional activity scripts, private repositories can add shade to calendar days, but their names, IDs, commits, and exact counts never leave your machine.
Can I use radprofiles anonymously?
Yes, with care. radprofiles never shows your IP address, and running your node over Tor doesn’t change that. What can identify you is what you put on the page: your Radicle ID is a pseudonym, and a real name, personal website, or recognizable avatar ties it to you. To stay anonymous, use a pseudonymous alias, skip personal links, and host the profile as a .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?
Not to try it: 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?
Yes. Point 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?
Every public repository you maintain shows up on its own, read from your node, most recently updated first. To show only some, list their repository IDs in 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?
Optional helpers in the repository’s 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?
Yes. Every profile serves its calendar as an image at /calendar.svg, so a README can include ![Radicle activity](https://you.example/calendar.svg). 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?
For a website, prove it’s yours with your Radicle key: run 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?
It’s opt-in: open a patch to radprofiles that adds your DID, and your site’s address if you run one, to directory/people.json. directory/README.md walks through it.
A repository link opens Explorer with a network error.
Explorer loads the repository from the seed named in the link, and that seed may not have replicated it yet. Set NEXT_PUBLIC_RADICLE_EXPLORER_NODE to a seed that does, or wait for replication.
What does it cost?
Nothing. It’s open source under Apache-2.0 and runs on whatever machine already runs your node, whether that’s a laptop, a Raspberry Pi, or a VPS.
radprofiles · Public profiles for Radicle