Your data, your node
No SaaS account, no API key, no hosted backend. The dashboard talks to a Radicle daemon you control.
Open source · self-hosted
An open-source Next.js dashboard for radicle-httpd. Point it at your local seed and ship a polished public profile.
See it live
A live glance at the top of /profile on this node — open full size for the heatmap and repo grid.
No SaaS account, no API key, no hosted backend. The dashboard talks to a Radicle daemon you control.
Laptop, home server, VPS. Anywhere Node.js runs. Caddy + Cloudflare Tunnel publish it for free.
Generative avatar, search, sort, copy-as-clone. Familiar to anyone who's used a code-hosting profile.
Works even when /repos returns empty. Configure the RIDs you care about and they show up.
App Router, Tailwind v4, lucide-react. Tweak the components, theme, fonts. No proprietary primitives.
Zero analytics, zero third-party scripts, zero hosted backend. Just static HTML rendered from your node.
Quickstart
Get it running, then point it at your repos.
git clone <repo-url> radprofile
cd radprofile/dashboard
cp .env.example .env.local
npm install
npm run dev # http://localhost:3100# .env.local — make it yours
RADICLE_HTTP_BASE=http://127.0.0.1:8090
RADICLE_PROFILE_ALIAS=your_alias
RADICLE_DELEGATE_DID=did:key:z6Mk...
RADICLE_REPO_IDS=\
rad:zAbCd...,\
rad:zEfGh...Bring your own node — point this at it.
Run a Radicle node + HTTP daemon
rad node start && radicle-httpd --listen 0.0.0.0:8090
Point the dashboard at it
Set RADICLE_HTTP_BASE and an optional RADICLE_REPO_IDS.
Build & start
npm run build && npm start
FAQ
radicle.network/nodes/<seed>/<rid>. The Explorer page then asks that seed for your repo over the network. If the seed has not replicated your RID yet (or your browser blocks the request), fetches fail with that error. Set NEXT_PUBLIC_RADICLE_EXPLORER_NODE in env to a hostname that actually hosts your repository, try another public seed (e.g. iris.radicle.xyz, iris.radicle.network, or seed.radicle.dev), or wait for replication. You can also set NEXT_PUBLIC_RADICLE_EXPLORER_ORIGIN if you use a different Explorer deployment. Try a normal browser if an embedded preview blocks cross-site loads.radicle.network). This dashboard is your personal homepage on the network: a curated profile of your repos with activity and identity. Both read the same JSON API, so they’re complementary, not competing.npm run dev and visit localhost. To make it public, use Cloudflare Tunnel (free, no port-forward) or open ports 80/443 on your router. See the project repo’s infra/PUBLISH_WITH_CLOUDFLARE.md.RADICLE_HTTP_BASE at any reachable radicle-httpd. You give up sovereignty (you’re trusting that node’s data), but you can stand up a profile in minutes against e.g. a friend’s seed.RADICLE_REPO_IDS in your env to a comma-separated list of RIDs, or edit src/lib/profileRepos.ts and redeploy. The page fetches each one in parallel from /api/v1/repos/<rid>. Seed each RID on the same machine as radicle-httpd so those requests return 200.Clone it, point at radicle-httpd, and you’re live in about two minutes.