Ghostfork: Git hosting where the server never sees your code

2 min read Original article ↗

How to use it

A vault is the encrypted container on Ghostfork — one per git repo. You create a vault, then push your existing git repo into it. How vaults work →

A. Push a new project into a vault

$ gf login --server https://app.ghostfork.io --username <username>

$ gf init-vault my-project

$ mkdir my-project && cd my-project

$ git init -b main

$ echo "# my-project" > README.md

$ git add . && git commit -m "first commit"

$ git remote add origin gf://<username>/my-project

$ git push -u origin main

✓ pushed. encrypted in transit.

B. Push an existing repo into a vault

$ gf login --server https://app.ghostfork.io --username <username>

$ gf init-vault my-project

$ cd <existing project folder>

$ git remote add origin gf://<username>/my-project

$ git push -u origin <branch name>

✓ pushed.

C. Clone on a new machine, same username

$ gf login --server https://app.ghostfork.io --username <username>

$ git clone gf://<username>/my-project

[gf] decrypting locally...

✓ done. your code, intact.

D. Clone with a different username

$ gf login --server https://app.ghostfork.io --username <new-username>

$ gf add-user my-project <new-username>

✓ access granted.

$ git clone gf://<original-owner>/my-project

✓ done. your code, intact.

All encryption and decryption happens locally on your machine. The server holds ciphertext it cannot read.