Skip to main content

Quickstart Guide

Get started with gitGost in three simple steps. No accounts, no tokens, no configuration files—just add a Git remote and push.

Prerequisites

All you need is Git installed on your machine. That’s it.
git --version
# Should output: git version 2.x.x or higher

Your First Anonymous Contribution

1

Add gitGost as a remote

Add gitGost as a remote to any repository you want to contribute to:
# Format: https://gitgost.leapcell.app/v1/gh/{owner}/{repo}
git remote add gost https://gitgost.leapcell.app/v1/gh/torvalds/linux
Replace torvalds/linux with the actual owner and repository name.
The remote name gost is just a convention—you can use any name you like.
2

Create your branch and commit

Make your changes and commit them with a detailed message:
# Create a new branch
git checkout -b fix-readme-typo

# Make your changes
echo "Fixed typo in README" > CHANGES.txt

# Commit with a descriptive message
git commit -am "fix: correct spelling of 'receive' in README

This commit fixes a grammatical error in the installation
instructions. The word 'recieve' should be 'receive'."
Your commit message becomes the PR description. Write detailed messages to provide context to maintainers while staying anonymous.
3

Push through gitGost

Push your branch to the gitGost remote:
git push gost fix-readme-typo:main
You’ll see output like this:
remote: gitGost: Processing your anonymous contribution...
remote: gitGost: Commits anonymized successfully
remote: gitGost: Creating fork...
remote: gitGost: Fork ready at gitgost-anonymous/linux
remote: gitGost: Pushing to fork...
remote: gitGost: Branch 'gitgost-1709654321' created
remote: gitGost: Creating pull request...
remote: 
remote: ========================================
remote: SUCCESS! Pull Request Created
remote: ========================================
remote: 
remote: PR URL: https://github.com/torvalds/linux/pull/12345
remote: Author: @gitgost-anonymous
remote: Branch: gitgost-1709654321
remote: PR Hash: a3f8c1d2
remote: 
remote: Subscribe to PR notifications (no account needed):
remote:   https://ntfy.sh/gitgost-pr-a3f8c1d2
remote: 
remote: To update this PR on future pushes, use:
remote:   git push gost <branch>:main -o pr-hash=a3f8c1d2
remote: 
remote: Your identity has been anonymized.
remote: No trace to you remains in the commit history.
remote: 
remote: ========================================

What Just Happened?

Here’s what gitGost did behind the scenes:
1

Received your push

gitGost’s server received your commits via the Git Smart HTTP protocol (the same protocol GitHub uses).
2

Stripped metadata

All identifying information was removed:
- Author: John Doe <[email protected]>
- Date: Mon Mar 5 14:23:45 2026 -0800
+ Author: @gitgost-anonymous <[email protected]>
+ Date: Mon Mar 5 22:24:01 2026 +0000
3

Created a fork

gitGost created (or reused) a fork of the target repository under the @gitgost-anonymous account.
4

Pushed to the fork

Your anonymized commits were pushed to a unique branch in the fork (e.g., gitgost-1709654321).
5

Opened a PR

A pull request was created from the fork to the original repository with your commit message as the description.

Updating an Existing PR

You can update your anonymous PR without creating a new one:
# Use the pr-hash from the initial push
git push gost fix-readme-typo:main -o pr-hash=a3f8c1d2
The -o pr-hash=a3f8c1d2 option tells gitGost to update the existing PR instead of creating a new one.
The PR hash is deterministic—it’s generated from the owner/repo/branch combination. Save it if you plan to update the PR later.

Advanced: Multiple Commits

You can push multiple commits in a single push:
# Make several commits
git commit -m "fix: typo in README"
git commit -m "docs: improve installation instructions"
git commit -m "chore: update copyright year"

# Push all commits at once
git push gost my-branch:main
All commits will be anonymized and included in the pull request.

Verifying Your Anonymity

Once your PR is created, inspect the commit history on GitHub:
# Open the PR URL from the push output
open https://github.com/owner/repo/pull/12345
Your original name, email, and timestamp are never visible in the commit history. Only the anonymized values appear.

Notifications Without an Account

gitGost provides anonymous PR notifications via ntfy.sh:
# Subscribe in your browser
open https://ntfy.sh/gitgost-pr-a3f8c1d2

# Or use the ntfy CLI
ntfy subscribe gitgost-pr-a3f8c1d2
You’ll receive notifications when:
  • Your PR is updated
  • Comments are added
  • The PR is merged or closed
No account required. ntfy.sh is an open-source notification service.

Stronger Anonymity with Tor

gitGost strips metadata from commits, but your IP address is still visible to the server and GitHub. For stronger anonymity, route your push through Tor:
1

Install Tor

# Debian/Ubuntu
sudo apt install tor torsocks

# macOS
brew install tor torsocks

# Arch
sudo pacman -S tor torsocks
2

Start Tor service

# Linux
sudo systemctl start tor

# macOS
brew services start tor
3

Verify Tor is running

torsocks curl https://check.torproject.org/api/ip
# Should return: {"IsTor": true, "IP": "185.220.101.x"}
4

Push through Tor

torsocks git -c http.extraHeader="X-Gost-Authorship-Confirmed: 1" \
  push gost my-branch:main
Tor is slow. A push that normally takes seconds may take several minutes. This is expected—Tor routes traffic through three encrypted nodes worldwide.

Why the Extra Header?

gitGost requires the X-Gost-Authorship-Confirmed: 1 header when pushing through Tor to prevent abuse. It’s a simple confirmation that you’re aware you’re making an anonymous contribution.

Troubleshooting

”Rate limit exceeded”

remote: Rate limit exceeded: max 5 PRs per hour per IP.
remote: Please try again later.
Cause: gitGost limits each IP to 5 PRs per hour to prevent abuse. Solution: Wait an hour, or use a different network/VPN. If using Tor, your IP changes with each circuit.

”Repository too large”

remote: error: repository exceeds 500 MB limit
Cause: gitGost limits repository size to 500 MB to prevent resource exhaustion. Solution: gitGost is designed for small contributions, not massive repositories. Consider contributing through traditional means.

”Commit too large”

remote: error: commit size exceeds 10 MB limit
Cause: gitGost limits individual commit size to 10 MB. Solution: Split your changes into smaller commits, or avoid committing large binary files.

”Failed to create fork”

remote: error creating fork: failed to create fork: 403 Forbidden
Cause: The target repository may be private, or GitHub’s API is experiencing issues. Solution: gitGost only works with public repositories. Verify the repository is public and try again.

”Service temporarily suspended”

remote: SERVICE TEMPORARILY SUSPENDED
remote: The panic button has been activated.
Cause: The gitGost operator detected abuse (bot activity, mass PRs) and activated panic mode. Solution: Wait 15 minutes and try again. Panic mode is temporary and automatically lifted once the threat subsides.

Example Workflows

Fix a Typo

# Clone the repository (or use an existing clone)
git clone https://github.com/owner/repo.git
cd repo

# Add gitGost remote
git remote add gost https://gitgost.leapcell.app/v1/gh/owner/repo

# Create branch and fix the typo
git checkout -b fix-typo
sed -i 's/recieve/receive/g' README.md

# Commit with detailed message
git commit -am "fix: correct spelling in README

Fixed 'recieve' → 'receive' in installation section."

# Push anonymously
git push gost fix-typo:main

Contribute to a Controversial Project

# Add gitGost remote to existing repository
git remote add gost https://gitgost.leapcell.app/v1/gh/controversial/project

# Create feature branch
git checkout -b feature-improvement

# Make changes
# ... (edit files)

# Commit
git commit -am "feat: add support for new protocol

Implements RFC-1234 for improved performance."

# Push through Tor for maximum anonymity
torsocks git -c http.extraHeader="X-Gost-Authorship-Confirmed: 1" \
  push gost feature-improvement:main

Update an Existing PR

# Make additional changes
# ... (edit files)

# Commit the updates
git commit -am "fix: address review feedback

Updated implementation based on maintainer comments."

# Push update using the pr-hash from the original push
git push gost feature-improvement:main -o pr-hash=a3f8c1d2

Best Practices

Write Detailed Commit Messages

Your commit message becomes the PR description. Provide context and rationale to help maintainers review your contribution.

Use Tor for Sensitive Contributions

If you’re contributing to politically sensitive projects or from restrictive jurisdictions, route your push through Tor.

Avoid Identifiable Patterns

Don’t reuse unique phrases, coding styles, or domain-specific knowledge that could reveal your identity.

Don't Mix Accounts

Avoid contributing to the same repository with both your personal account and gitGost. This correlation can expose you.

Next Steps

How It Works

Learn how gitGost implements the Git Smart HTTP protocol and strips metadata

Threat Model

Understand what gitGost protects against and its limitations

Self-Hosting

Run your own gitGost instance for complete control

API Reference

Explore the full API for advanced use cases

Pro tip: Save your PR hash from the first push so you can update the PR later without creating duplicates.

Build docs developers (and LLMs) love