Open source · self-hosted

A beautiful public face for yourRadicle node.

An open-source Next.js dashboard for radicle-httpd. Point it at your local seed and ship a polished public profile.

See it live

The same dashboard, running right here.

The frame below is the actual /profile page served by this node. No screenshot.

https://radprofile.xyz/profile

Open full size →

Sovereign by default. Familiar by design.

Your data, your node

No SaaS account, no API key, no hosted backend. The dashboard talks to a Radicle daemon you control.

Bring your own host

Laptop, home server, VPS. Anywhere Node.js runs. Caddy + Cloudflare Tunnel publish it for free.

Modern dev hub feel

Generative avatar, search, sort, copy-as-clone. Familiar to anyone who's used a code-hosting profile.

Per-RID resilient

Works even when /repos returns empty. Configure the RIDs you care about and they show up.

Plain Next.js

App Router, Tailwind v4, lucide-react. Tweak the components, theme, fonts. No proprietary primitives.

No telemetry, no SaaS

Zero analytics, zero third-party scripts, zero hosted backend. Just static HTML rendered from your node.

Quickstart

Quickstart

Get it running, then point it at your repos.

1 · Run it
git clone <repo-url> radprofile
cd radprofile/dashboard
cp .env.example .env.local
npm install
npm run dev                  # http://localhost:3100
2 · Make it yours
# .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...

Self-host in three steps

Bring your own node — point this at it.

  1. 1

    Run a Radicle node + HTTP daemon

    rad node start && radicle-httpd --listen 0.0.0.0:8090

  2. 2

    Point the dashboard at it

    Set RADICLE_HTTP_BASE and an optional RADICLE_REPO_IDS.

  3. 3

    Build & start

    npm run build && npm start

FAQ

Common questions

How is this different from Radicle Explorer?
Explorer is great for browsing one repository at a time on a shared seed (radicle.network). This dashboard is your personal homepage on the network: a curated profile of your repos, plus a whole-node view that respects pinning and search. Both read the same JSON API, so they’re complementary, not competing.
Do I need a public IP or a domain?
No. For local-only use, just 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.
Can I host this without running my own Radicle node?
Yes — point 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.
How do I update which repos appear on /profile?
Set 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>.
Why is /node empty even though I’ve seeded repositories?
radicle-httpd defaults /api/v1/repos to show=pinned. The dashboard queries show=all by default, but you can toggle to Pinned via the segmented control. To curate, run rad pin <rid> on your node.
What does it cost to run?
$0/month for the software (open source). Hosting cost is just your electricity if you self-host on a Mac/Pi/NUC, plus ~$10/yr per domain. No usage-based billing, no surprise charges, no SaaS account.

Ready to publish your node?

Clone it, point at radicle-httpd, and you’re live in about two minutes.

radprofile.xyz · A beautiful public face for your Radicle node