Why Use Tor with gitGost?
gitGost strips your name, email, and commit timestamps—but your IP address is still visible to the server during the push. If you need stronger anonymity guarantees, route your Git push through the Tor network.Tor routes your connection through three encrypted relay nodes worldwide, so the gitGost server only sees a Tor exit node IP, not yours.
How Tor Anonymizes Your Push
The gitGost server sees the Tor exit node’s IP, not yours. Combined with gitGost’s metadata stripping, this provides strong anonymity.Installation
Linux (Debian/Ubuntu)
Linux (Arch)
macOS (Homebrew)
Windows
See Windows alternatives below.torsocks is not available natively on Windows.
Starting Tor
- Linux (systemd)
- Linux (SysV)
- macOS
127.0.0.1:9050 (SOCKS5 proxy) by default.
Pushing Through Tor
Push with torsocks
Wrap your Git push with The
torsocks:X-Gost-Authorship-Confirmed header acknowledges you’re making an anonymous contribution.Persistent Configuration
To avoid typing the full command every time, configure Git:Per-Repository
Inside your repository:Global Alias
Add aghost alias to your ~/.gitconfig:
Combined Configuration
For full automation:Windows Alternatives
torsocks is not available on Windows natively. Use one of these options:
Option 1: Tor Browser + SOCKS5 (Easiest)
Download Tor Browser
Get it from: https://www.torproject.org/download/
Launch Tor Browser
Open Tor Browser and leave it running. It exposes a SOCKS5 proxy on
127.0.0.1:9150.Option 2: WSL2 (Windows Subsystem for Linux)
If you have WSL2, use the Linux instructions:WSL2 has its own network stack separate from Windows, so anonymity is preserved correctly.
Verifying Your IP is Hidden
Before pushing, verify Tor is routing your traffic:Without torsocks (for comparison)
Performance Considerations
Expected Push Times
| Commit Size | Without Tor | With Tor |
|---|---|---|
| < 1 KB | 2-5 seconds | 30-60 seconds |
| 100 KB | 5-10 seconds | 1-2 minutes |
| 1 MB | 10-20 seconds | 2-5 minutes |
| 10 MB | 30-60 seconds | 5-15 minutes |
Why is Tor Slow?
Your data passes through three relay nodes:- Entry node: Your computer → Entry (encrypted)
- Middle node: Entry → Middle (encrypted)
- Exit node: Middle → Exit (encrypted)
- Destination: Exit → gitGost (HTTPS)
Tor Circuit Changes
Tor rotates circuits periodically. If your push fails mid-transfer:Advanced: Tor Configuration
Customize Tor behavior by editing/etc/tor/torrc (Linux/macOS):
Use Specific Exit Nodes
Force Tor to use exits in certain countries:Increase Circuit Timeout
For large pushes:Combining Tor with Other Anonymity Practices
For maximum anonymity:Tor Browser
Use Tor Browser (not regular browser) to view your PR after creation. This prevents GitHub from linking your IP to the PR.
Unique Style
Avoid unique coding patterns. Use common formatting (e.g.,
gofmt, prettier) to blend in.Generic Messages
Write commit messages in neutral language. Avoid phrases like “I always…” or company-specific jargon.
Random Timing
Push at irregular times to avoid timezone correlation. Don’t push only during your local work hours.
Troubleshooting
”Connection refused” Error
“DNS resolution failed” Error
If using Windows with SOCKS5:socks5:// instead of socks5h://.
Solution: Update proxy URL:
h suffix makes DNS resolution happen through Tor.
Tor Circuit Building Fails
- Check Tor logs:
sudo journalctl -u tor -f - Ensure firewall allows Tor (ports 9001, 9030)
- Try using bridges if Tor is blocked in your region
Push Hangs Indefinitely
If the push hangs for > 20 minutes:- Cancel with
Ctrl+C - Verify Tor is working:
torsocks curl https://check.torproject.org/api/ip - Retry with a smaller commit
Security Best Practices
Viewing Your PR Anonymously
After pushing, the gitGost server returns a PR URL:- Open Tor Browser (not your regular browser)
- Navigate to the PR URL
- Don’t log into GitHub in Tor Browser
Limitations of Tor Anonymity
See the Threat Model for details on what gitGost protects against.Next Steps
Commit Messages
Write effective commit messages without revealing your identity
Threat Model
Understand gitGost’s anonymity guarantees
Anonymous Push
Learn what metadata gitGost strips
Basic Usage
Review core gitGost workflows