Introduction to gitGost
gitGost enables developers to contribute to any GitHub repository while maintaining complete anonymity. No accounts, no tokens, no metadata—just pure, anonymous contributions.What is gitGost?
gitGost is an open-source proxy service that strips all identifying metadata from Git commits and creates pull requests on your behalf through a neutral bot account (@gitgost-anonymous). It’s designed for developers who need privacy without sacrificing their ability to contribute to open-source projects.
gitGost provides strong anonymity features, but not perfect anonymity. See the Threat Model for details on what is and isn’t protected.
Why gitGost Exists
The Problem
Every Git commit contains identifying metadata that creates a permanent public record:- Author name and email visible in commit history
- Timestamp showing when you worked on the code
- GitHub account linked to pull requests
- Contribution graph revealing your activity patterns
The Solution
gitGost acts as an anonymizing proxy between you and GitHub:@gitgost-anonymous with no trace back to you.
Privacy Guarantees
gitGost implements several layers of anonymization:Metadata Stripping
All author names, emails, and timestamps are replaced with neutral values:Source: internal/git/receive.go:337-341
Bot-Based PR Creation
Pull requests are created by the Source: internal/github/pr.go:558
@gitgost-anonymous bot account, breaking the link between your GitHub identity and the contribution.Zero Data Retention
gitGost does not store:
- Your commits, blobs, or refs (stream-only processing)
- GitHub tokens or access keys
- IP addresses or request logs with identifiers
- Emails, names, usernames, or SSH fingerprints
- Request histories or session metadata
What gitGost Protects
gitGost is designed to protect against common identification threats:Public Metadata Exposure
Your name, email, and commit metadata are never visible in the public contribution history.
Account Linking
No direct association between your personal GitHub account and the PR.
Email Harvesting
Your email address never appears in commit logs or PR metadata.
Contribution Tracking
Minor contributions don’t create permanent records on your profile.
What gitGost Does NOT Protect
Network-Level Identification
IP addresses are visible to both the gitGost server and GitHub. For stronger anonymity, use Tor:Code Fingerprinting
- Stylometry: Your coding style, variable naming, and comment patterns can reveal identity
- Diff analysis: Unique changes or domain knowledge can be identifying
- Temporal correlation: If you push and the PR appears immediately, observers can correlate timing
Advanced Adversaries
gitGost does not protect against:- Nation-states with infrastructure access
- Actors performing active surveillance
- Deep forensic code analysis
- Compromised gitGost operators who add telemetry
Comparison with Alternatives
| Feature | gitGost | GitHub CLI | Forgejo |
|---|---|---|---|
| Anonymity | ✅ Full metadata stripping, neutral bot | ❌ Requires account, full traceability | ⚠️ Depends on instance configuration |
| Setup | ✅ One command: git remote add | ❌ Install CLI + authenticate | ❌ Self-host entire instance |
| Providers | ✅ GitHub (GitLab/Bitbucket planned) | ⚠️ GitHub only | ✅ Any self-hosted instance |
| Limits | ⚠️ 5 PRs/IP/hour, 500MB repos, 10MB commits | ⚠️ GitHub API rate limits | ⚠️ Instance-dependent |
| Trust Model | ⚠️ Trust gitGost operator | ⚠️ Trust GitHub | ✅ Self-hosted (no trust needed) |
Security and Abuse Prevention
gitGost implements multiple protections to prevent abuse while maintaining anonymity:Legitimate Use Cases
gitGost is designed for good-faith contributions where identity exposure is unnecessary:- Typo fixes without permanent contribution records
- Employer policy conflicts (contributing to competing/controversial projects)
- Political sensitivity (jurisdictions where certain contributions create risk)
- Email privacy (avoiding scraping and harvesting)
- Experimentation (testing changes without personal attribution)
- Geographic risk (contributions that may create legal exposure)
How It Works (High-Level)
You push to gitGost
gitGost processes the push
- Receives the packfile containing your commits
- Clones the target repository from GitHub
- Unpacks your commits into a temporary directory
- Rewrites commit metadata to anonymize author, email, and timestamps
Fork and push
- Creates (or reuses) a fork of the target repository under the
@gitgost-anonymousaccount - Pushes the anonymized commits to a uniquely-named branch
Open Source and Auditable
gitGost is 100% open source under the AGPL-3.0 license:- Full transparency: Every line of code is public and auditable
- Self-hostable: Run your own instance if you don’t trust the public service
- Copyleft protection: Any public instance must provide source code
Next Steps
Quickstart
Get started with your first anonymous contribution in under 60 seconds
How It Works
Deep dive into the Git Smart HTTP protocol and metadata stripping
Threat Model
Understand what gitGost protects against and its limitations
Self-Hosting
Run your own gitGost instance for maximum control