// self-hosted, private git — on your own server
thecrux❯
The crux is in the code.
A keyboard-first, self-hosted home for your code — private by default, push over Smart-HTTP or SSH, issues and pull requests included. No telemetry, no database, no sprawl. Your code never leaves your server.
01 What it does
Private by default
New repos are private — browsing and cloning are gated to the people you choose. Flip to public when you want.
Git over HTTP & SSH
Clone, fetch and push over Smart-HTTP or with your SSH keys. No daemons, no special client — just git.
Revocable tokens
Push with per-device access tokens instead of your password. Shown once, stored hashed, revoked in a click.
Issues & pull requests
Real diffs, labels and assignees, server-side merges (fast-forward or a true merge commit) with conflict detection.
Organizations
Shared namespaces with owners and members. Group repos for a team — everyone in the org can push.
Webhooks & audit log
Fire HMAC-signed post-receive payloads at your CI. Every security-relevant action lands in an append-only log.
Keyboard-first UI
A ⌘K command palette, vim-style navigation, light/dark themes. Server-rendered — works without JS.
One box, no database
A single Node app + Docker. Everything is files under one data dir, so a backup is a tar. No telemetry.
02 See it
Keyboard-first, server-rendered, private by default — here's the actual UI.
03 Run your own
Free and self-hosted — no product account, no email gate. The only account you make is the admin account on your instance.
docker run -p 3000:3000 -p 2222:2222 -v crux-data:/data thecrux
http://localhost:3000. Put a reverse proxy in front for HTTPS.
Prefer source? git clone, npm install, npm run dev.
crux❯ start