A local SOCKS5 endpoint that works with anything that speaks the protocol — curl, requests, Playwright, Puppeteer, browsers, even full WireGuard chains.
Filter peers by minimum bandwidth, ISO country code, or a specific libp2p peer ID. Configure as many endpoints as you need in a single Config.yaml.
Warm libp2p streams stay open between requests. SOCKS5 handshakes don't pay the dial cost twice — typical request setup is sub-100ms.
Run a US pool, a JP pool and a high-bandwidth pool from a single Config.yaml. Each listener gets its own peer filter and pool settings.
p2proxy runs on your machine. Bitping provides the peer network — your routing logic, your config, your hardware, no centralised middleman.
PolyForm Shield 1.0. Read the source on GitHub, audit the binary, build from source. No black box between your traffic and the wire.
Your client opens a SOCKS5 connection to p2proxy on localhost. Anything that speaks SOCKS5 works — no SDK, no library, no rewrite.
p2proxy authenticates with the Bitping network using your API key and selects a peer matching your filter — country, minimum bandwidth, or specific peer ID.
A warm libp2p stream to the chosen peer carries the request. Direct peer-to-peer where possible, relay-fallback when not. Pool keeps streams hot between requests.
The peer forwards your traffic to the destination from its own IP. Response flows back through the same stream. The destination sees the peer; you see the response.
| p2proxy | Traditional proxy provider | |
|---|---|---|
| Architecture | ✓ Peer-to-peer over libp2p | API gateway → opaque peer pool |
| Control plane | ✓ Local app you own | Vendor API |
| Source | ✓ Open source (PolyForm Shield) | Closed source |
| Peer filtering | ✓ Country / bandwidth / peer ID | Country / session sticky (typical) |
| Connection pooling | ✓ Warm streams, sub-100ms setup | Per-request gateway lookup |
| Integration | ✓ Local SOCKS5 socket | HTTPS API or upstream URL |
| Observability | ✓ Prometheus metrics, live TUI | Vendor dashboard |
import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: { server: "socks5://localhost:1080" },
});
const page = await browser.newPage();
await page.goto("https://example.com");import requests
proxies = {
"http": "socks5h://localhost:1080",
"https": "socks5h://localhost:1080",
}
r = requests.get("https://ifconfig.me", proxies=proxies)
print(r.text) # peer IP, not yoursport: 45445
servers:
- protocol: Socks5
port: 1080
country: US
min_bandwidth: 50Mbps
- protocol: Socks5
port: 1081
country: JP
- protocol: Socks5
port: 1082
min_bandwidth: 200MbpsOne command on macOS or Linux. A Bitping API key. A peer routing your first request before your terminal scrolls.
brew install --cask BitpingApp/tap/p2proxyBitping Hosted Proxy is coming soon — your own
SOCKS5 endpoint at you.bitping.com:1080, managed in the
dashboard alongside your other tools. WireGuard, HTTPS and OpenVPN
coming after.