Every repository is a collection of RDF resources living in your Solid pod — a URL space you own. Every commit, pull request, and collaborator has a permanent address. No platform lock-in. No sign-up required.
Every repository lives in a Solid pod — a personal URL namespace you control. No central server holds your history. Anyone can self-host; anyone can federate.
Every pod request carries a DPoP-bound access token tied to your WebID — a URL, not a username. Stolen tokens are useless without the matching EC private key.
Commits, trees, refs, PRs, and issues are Turtle RDF resources at permanent URLs. Query your entire history with SPARQL. Link to any commit from anywhere on the web.
How it works
Three steps: authenticate with your Solid pod, push with the standard git protocol, then grant collaborators access via WAC — all without touching a third-party platform.
The auth service discovers your OIDC issuer by dereferencing your WebID URL, runs the Solid-OIDC browser flow, and returns a DPoP-bound access token.
The git remote helper translates the standard git push/fetch protocol into authenticated requests against your pod. Commits and trees become Turtle RDF at permanent URLs.
Grant any WebID access to your repository container. Collaborators authenticate against their own pod — no shared secret or pre-registration between pods needed.
Components
solid-git is a small stack of focused tools. Each does one thing and composes cleanly with the others.
A small Express server that handles the Solid-OIDC browser flow
for the CLI. Manages PKCE and ephemeral DPoP EC key pairs.
A public instance runs at solid-git.redpencil.io —
no local setup needed for end users.
A git remote helper that git discovers automatically for
solid:// remotes. Translates the git push/fetch
protocol into authenticated HTTP calls against the pod.
Commits and trees are stored as Turtle RDF; blobs as a
binary pack file.
The solid-git command handles login, token
management, collaborator grants, and opening pull requests
and issues via ActivityStreams 2.0 activities posted to
your repo's LDP inbox.
Features
Every access token is cryptographically bound to an ephemeral EC key pair generated at login. Stolen tokens cannot be replayed from another machine.
Grant read or read+write to any WebID with a single command. Access control lists live in your pod as Turtle RDF — no separate permission system to manage.
PRs and issues are ActivityStreams 2.0 resources in your pod's LDP inbox. Contributors POST activities to your inbox; you own the data, always.
Works with solid.redpencil.io, or any self-hosted Community Solid Server instance. If it speaks Solid-OIDC and LDP, solid-git works with it.
git push, git pull, git clone.
No new commands, no new mental model. The remote helper
is invisible — git just works.
Every commit is a Turtle document at a permanent URL. Traverse your history with SPARQL, link to any commit from papers or documentation, or build tooling on top of the RDF graph directly.
Quick start
Download the solid-git and git-remote-solid
binaries from the
releases page
and put them on your PATH. No Node.js required.
Run solid-git login <your-webid>. The CLI contacts
the hosted auth service at
solid-git.redpencil.io — no local service
needed. A browser window opens, you log in, and your
DPoP token is saved automatically.
Point git at your pod with
git remote add origin solid://you.pod/git/myrepo.
The remote helper handles the rest.
git push origin main — your commits, trees, and
refs are now first-class linked data resources living
at permanent URLs in your pod.
Deploy
A public auth service runs at solid-git.redpencil.io — the CLI
uses it by default so most users need nothing local. Self-hosters can
run their own instance behind nginx-proxy.
The default. No configuration needed — the CLI points here out of the box. Get a pod at solid.redpencil.io and start pushing.
Run the auth service locally when developing against
a local Solid pod. Set SOLID_GIT_AUTH_PORT=3456
to override the default public URL.
Deploy your own instance behind jwilder/nginx-proxy
with automatic TLS. Point users at it with
SOLID_GIT_AUTH_URL.
Built on open standards
solid-git is assembled entirely from W3C and IETF standards. Your data is portable, linkable, and yours. Shut down the auth service tomorrow — your repository is still in your pod, fully intact, ready to clone.
Get a Solid pod, install solid-git, and push your first commit to a URL you control.