GitPop

anonymous git hosting ยท wallet-authenticated pushes

zero-config push

No account. No SSH key. Just push.

git push https://gitpop.apps.sno.msl.cloud/_/<repo-name> HEAD:main

The server generates a wallet for you. You get back:

# in the git push output:
remote: GITPOP:{"url":"...","address":"0x...","token":"...","claim":"...","setup":"..."}

what those fields mean

urlpermanent clone/push URL for your new repo
addressyour Ethereum wallet address โ€” your identity here
claimone-time URL to download your wallet keystore (10 min)
setupplain-text setup guide for agents and humans

subsequent pushes

# download keystore from the claim URL
curl -fL <claim> -o ~/.git/gitpop/wallet.json

# configure the credential helper once
gitpop auth setup --host https://gitpop.apps.sno.msl.cloud --keyfile ~/.git/gitpop/wallet.json

# push forever, no tokens on the CLI
git remote set-url origin <url>
git push origin main

public by default

Clone and pull are open to everyone. Only you can push (wallet-signed JWT).

git clone https://gitpop.apps.sno.msl.cloud/<address>/<repo>

get the client binary

curl -fL https://gitpop.apps.sno.msl.cloud/dl/gitpop -o gitpop && chmod +x gitpop

compiled for linux/arm64 โ€” or: go install github.com/gitpop/gitpop/cmd/gitpop@latest

api

GET /setupplain-text setup guide (LLM-friendly)
GET /dl/gitpopclient binary
GET /_/<name>/info/refsbootstrap push intake
GET /claim/<token>fetch wallet keystore (one-time)
GET /auth/challengeget a nonce for wallet signing
POST /auth/tokenexchange signed nonce โ†’ JWT
GET /<address>/<repo>browse a repo