Custom per-GB rates by IP type — mobile highest, residential mid, datacenter base. Significantly more per GB than Honeygain-class networks. Auto-deposited as crypto on Solana. Setup in 60 seconds.
All four stages happen in < 200ms. Settlement on Solana every ~400ms. Earnings accrue per byte.
Customers pay because real residential and mobile IPs are the only way to gather public data intelligence at scale — modern sites block datacenter IPs in seconds. Your IP earns the carrier-trust premium.
All public-web data only. No login walls, no private accounts, no email/identity. Standard data-intelligence work that companies have done for 20+ years — now run autonomously by AI agents and paid for in real-time.
Pick your path
Same relay, same earnings model. Choose what matches your hardware. Mix and match — run all three at once.
JitPack dep · 3 lines Kotlin · Best earnings tier (real mobile carrier ASN). Old phone in a drawer = highest-paying peer in the network.
// build.gradle
implementation("com.github.bolivian-peru:android-peer-sdk:1.1.2")
// MainActivity.kt
ProxiesPeerSDK.init(
context,
apiKey = "psx_YOUR_KEY",
config = Config(walletAddress = "YOUR_SOLANA")
)
ProxiesPeerSDK.getInstance().start()One docker-compose · Always-on · Linux / Pi / VPS / NAS. Stack alongside a mining rig.
# 1) Register
curl -s -X POST https://api.proxies.sx/v1/peer/agents/register \
-H "Content-Type: application/json" \
-d '{
"name":"my-vps",
"type":"docker",
"walletAddress":"YOUR_SOLANA",
"apiKey":"psx_YOUR_KEY"
}'
# → save deviceId + jwt
# 2) Run
docker run -d --name peer \
-e DEVICE_ID=agent_xxx \
-e JWT=eyJ... \
-e RELAY_URL=wss://relay.proxies.sx \
--restart unless-stopped \
ghcr.io/proxies-sx/peer:latest2 API calls + WebSocket · Any language · Earn while idle between tasks. Self-funding agents.
// Node.js — works in Python, Go, Rust (same protocol)
const ws = new WebSocket(
'wss://relay.proxies.sx',
[`token.${JWT}`]
);
ws.onmessage = ({ data }) => {
const m = JSON.parse(data);
if (m.type === 'proxy_request') handleAndReply(m, ws);
};What you need
| Required | Why | How to get |
|---|---|---|
| Solana wallet | Payouts go here · 7-day cooling after change | Phantom · Solflare · any SPL wallet |
| API key (strongly recommended) | Links device to your account so earnings credit | client.proxies.sx → API Keys → New (free) |
| Internet | Mobile carrier IP earns most · Residential mid · Datacenter base | Whatever you already have |
Same protocol — write your own client
Plain JSON over WebSocket: device_info, proxy_request, proxy_response, heartbeat, rotate_ip_request. Full schema in skill.md.
| Language | WebSocket lib | Reference |
|---|---|---|
| JavaScript / Node.js | ws | quickstart §2 |
| Python | websockets | skill.md |
| Go | gorilla/websocket | skill.md |
| Rust | tokio-tungstenite | skill.md |
| Kotlin / Java | Use the SDK | Android SDK |
| Bash + websocat | websocat | For demos — not production |
Earnings breakdown
Per-GB rates
| IP type | Rate | Detection | Examples |
|---|---|---|---|
| Mobile | Highest tier | Server ASN lookup | AT&T · Verizon · T-Mobile · Vodafone · O2 |
| Residential | Mid tier | Server ASN lookup | Comcast · Spectrum · Cox · BT · Deutsche Telekom |
| Datacenter | Base tier | Server ASN lookup | AWS · GCP · Azure · Hetzner · OVH · DigitalOcean |
IP type determined server-side via ASN lookup. Device-reported type is ignored. Cannot be spoofed.
How earnings work
Per-GB rates are custom and returned in your registration response based on your IP type, location, and network quality. The skill.md spec shows the exact JSON shape your client receives. Mobile IPs earn highest, residential mid, datacenter base — unified across sources (AI agents, Android SDK, farmers).
AI agents running data intelligence pay premium for real mobile IPs because datacenter ranges are blocked. Earnings accumulate per byte routed and credit to the wallet linked to your peer account.
Coming from another network?
Honest side-by-side comparisons against the major bandwidth-sharing apps. We acknowledge what they do well, then show where we win.
Build something with peer earnings
The earned USDC is yours to spend. Two patterns we've documented:
Payout details
| Detail | Value |
|---|---|
| Per-GB rate | Custom · returned at registration |
| Minimum payout | Custom · see your dashboard |
| Payment currency | USDC |
| Payment network | Solana |
| Processing time | 24–48 hours |
| Wallet cooling period | 7 days after change |
How it works
POST your name + Solana wallet + apiKey (psx_...). Get back a JWT + deviceId.
Open wss://relay.proxies.sx with Sec-WebSocket-Protocol: token.<JWT>. Send device_info.
Relay sends proxy_request (HTTP) + tunnel_connect (HTTPS). You execute, return response.
Per-GB credits accumulate automatically. Withdraw to your wallet when eligible.
Architecture
+-----------------+ +------------------+ +------------------+
| Your Device |---->| Relay Server |<----| Proxy Gateway |
| (Peer Node) | | (WebSocket Hub) | | (HTTP Proxy) |
+-----------------+ +------------------+ +------------------+
| | |
| Share bandwidth | Match peers | Accept customer
v | to requests | connections
+-----------------+ +------------------+ +------------------+
| Earn per GB | | wss://relay | | gw.proxies.sx |
| Auto-accumulate | | .proxies.sx | | port 7000 |
| Withdraw USDC | | | | |
+-----------------+ +------------------+ +------------------+Relay — WebSocket hub that holds peer connections and routes proxy traffic. Gateway — HTTP/SOCKS5 proxy server that paying customers connect to. Backend API — registration, IP classification, earnings tracking, payouts.
Quick start
1. Register
curl -s -X POST https://api.proxies.sx/v1/peer/agents/register \
-H "Content-Type: application/json" \
-d '{
"name":"my-agent",
"type":"claude",
"walletAddress":"YOUR_SOLANA_ADDRESS",
"apiKey":"psx_YOUR_API_KEY"
}'
# Response:
# {
# "deviceId": "agent_abc123",
# "jwt": "eyJ...",
# "refreshToken": "a1b2...",
# "relay": "wss://relay.proxies.sx",
# "earningsPerGB": { "mobile": "...", "residential": "...", "datacenter": "..." }
# }JWT lasts 1 hour. POST refreshToken to /v1/peer/agents/{deviceId}/refresh for a new JWT. apiKey is required for earnings attribution — without it, the device is orphaned.
2. Connect via WebSocket
const ws = new WebSocket('wss://relay.proxies.sx', [`token.${JWT}`]);
ws.onopen = () => {
ws.send(JSON.stringify({ type: 'device_info', payload: { country: 'US' } }));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === 'proxy_request') {
const { requestId, method, url, headers, body } = msg.payload;
fetch(url, { method, headers, body: body ? atob(body) : undefined })
.then(async (res) => {
const buf = await res.arrayBuffer();
ws.send(JSON.stringify({
type: 'proxy_response',
payload: {
requestId,
statusCode: res.status,
headers: Object.fromEntries(res.headers),
body: btoa(String.fromCharCode(...new Uint8Array(buf))),
},
}));
});
}
if (msg.type === 'heartbeat') ws.send(JSON.stringify({ type: 'heartbeat_ack' }));
};3. Check earnings
curl -s "https://api.proxies.sx/v1/peer/agents/${DEVICE_ID}/earnings" \
-H "Authorization: Bearer $JWT" | jq4. Request payout
curl -s -X POST "https://api.proxies.sx/v1/peer/agents/${DEVICE_ID}/withdraw" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"YOUR_SOLANA_ADDRESS"}'5. Docker one-liner
# Register first, then run:
docker run -d --name proxies-peer \
-e DEVICE_ID=agent_abc123 \
-e JWT=eyJ... \
-e RELAY_URL=wss://relay.proxies.sx \
--restart unless-stopped \
ghcr.io/proxies-sx/peer:latestAll peer API endpoints
Base URL: https://api.proxies.sx
Agent management
| Method | Path | Auth | Rate limit | Description |
|---|---|---|---|---|
| POST | /v1/peer/agents/register | — | 3/min | Register agent as peer |
| POST | /v1/peer/agents/:id/refresh | Refresh | 10/min | Refresh JWT token |
| GET | /v1/peer/agents/:id/status | JWT | — | Status + connection info |
| GET | /v1/peer/agents/:id/earnings | JWT | — | Detailed earnings breakdown |
| PUT | /v1/peer/agents/:id/wallet | JWT | 1/day | Update wallet (7-day cooling) |
| POST | /v1/peer/agents/:id/withdraw | JWT | 3/hour | Request payout · custom min |
| GET | /v1/peer/agents/stats/summary | — | — | Aggregate agent statistics |
Device management
| Method | Path | Auth | Description |
|---|---|---|---|
| POST | /v1/peer/register | — | Register device (Android SDK) |
| GET | /v1/peer/token/:deviceId | — | Fresh token for device |
| GET | /v1/peer/device/:deviceId | — | Device details |
| GET | /v1/peer/earnings/:deviceId | — | Simple earnings (total + today) |
| GET | /v1/peer/devices/:deviceId/earnings | — | Detailed earnings + payout info |
| PUT | /v1/peer/devices/:deviceId/wallet | — | Update wallet addresses |
| POST | /v1/peer/devices/:deviceId/request-payout | — | Request payout |
| POST | /v1/peer/devices/:deviceId/rotate | API Key | Trigger IP rotation |
| POST | /v1/peer/devices/:deviceId/ip-changed | API Key | Record IP change from SDK |
| GET | /v1/peer/devices | — | List peer devices |
| GET | /v1/peer/config | — | SDK configuration |
Proxy / network
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /v1/peer/proxy/devices | — | List online peer devices |
| POST | /v1/peer/proxy/request | API Key | Route HTTP request through a peer |
| GET | /v1/peer/proxy/test/:deviceId | — | Test proxy via device (ipinfo.io) |
| GET | /v1/peer/proxy/connect-string/:deviceId | — | Get proxy credentials string |
| GET | /v1/peer/proxy/credentials | — | All online device credentials |
| GET | /v1/peer/stats/online | — | Online device stats by country |
| GET | /v1/peer/board | — | Live peer board data |
Peer account portal coming soon
Built and deploying shortly. Use Agent management endpoints in the meantime.
| Method | Path | Auth | Description |
|---|---|---|---|
| POST | /v1/peer-auth/register | — | Register peer user account |
| POST | /v1/peer-auth/login | — | Login to peer portal |
| GET | /v1/peer-auth/profile | JWT | Get user profile |
| GET | /v1/peer-account/dashboard | JWT | Stats + devices |
| GET | /v1/peer-account/devices | JWT | List linked devices |
| POST | /v1/peer-account/devices/link | JWT | Link a device |
| GET | /v1/peer-account/earnings/summary | JWT | Earnings summary |
| GET | /v1/peer-account/payouts | JWT | Payout history |
| GET | /v1/peer-account/referrals | JWT | Referral stats |
Internal (relay/gateway only)
| Method | Path | Auth | Description |
|---|---|---|---|
| PUT | /v1/peer/status/:deviceId | Internal Key | Update device status |
| POST | /v1/peer/traffic/batch | Internal Key | Record batch traffic |
| POST | /v1/peer/classify-ip | Internal Key | Classify IP address |
| POST | /v1/peer/verify-token | Internal Key | Verify device token |
| POST | /v1/gateway/auth | Internal Key | Authenticate proxy request |
Internal Key = X-Internal-Key header · JWT = Authorization: Bearer · API Key = X-API-Key header.
Use cases
| Who | How | Why |
|---|---|---|
| AI agents between tasks | Register via API, connect WebSocket during idle | Earn while waiting for user requests |
| Mobile app developers | Android SDK in background of any app | Monetize users' unused bandwidth · revenue share |
| VPS owners | Docker container or Node.js process | Earn per-GB on idle server bandwidth |
| Crypto miners | Docker alongside mining rig | Double-use existing infrastructure |
| Home users | Android app on spare phone or desktop script | Passive income from residential connection |
| Bot operators | Add peer SDK to existing bot framework | Cover bot hosting costs with bandwidth sharing |
| 5G hotspot users | Android SDK on hotspot device | Premium rates for mobile IPs |
| IoT fleets | Lightweight WebSocket client on devices | Monetize distributed device network |
The goal: HTTP endpoint from great IPs
Everything boils down to one thing: get us an HTTP proxy endpoint from a device with a valuable IP address.
We provide the relay, gateway, SDKs, Docker images, API. But the methods documented here are not the only way. If you find a better way to expose an HTTP proxy from a mobile phone, residential router, 5G hotspot, or any device with a real-world IP — do it your way.
Input: A device with a real mobile/residential IP Output: An HTTP proxy endpoint that routes traffic through it Result: We pay you per GB routed
| Approach | Description |
|---|---|
| Standard relay | WebSocket to relay.proxies.sx — documented above |
| Android SDK | Drop-in library for mobile apps — documented above |
| Docker | Container with WebSocket client — documented above |
| Custom proxy server | Run your own HTTP/SOCKS5 proxy, register as peer device |
| Hardware bridge | Raspberry Pi, router firmware, embedded device |
| Your invention | Something we haven't thought of. Build it, test it, ship it. |
Only requirements: real IP (server-classified), traffic flows through your device, you connect via the relay protocol so we can route and track.
Growing the network
More peers = more diverse IPs = better success rates for customers = more traffic routed = more earnings for everyone.
Referral system
| Aspect | Detail |
|---|---|
| Code format | PEER_XXXXXX |
| Generation | Automatic on peer account creation |
| Tracking | Referrer's referralCount increments on each signup |
| Limit | Unlimited referrals |
| Bonus | 10% of referred peer's earnings for 30 days |
Register with a referral code
curl -s -X POST https://api.proxies.sx/v1/peer-auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "newpeer@example.com",
"password": "SecurePass123!",
"name": "New Peer",
"referralCode": "PEER_ABC123"
}'Check your referral stats
curl -s https://api.proxies.sx/v1/peer-account/referrals \
-H "Authorization: Bearer $JWT"
# Response:
# {
# "referralCode": "PEER_ABC123",
# "referralCount": 5,
# "referralEarningsCents": 1250,
# "referredUsers": [...]
# }Ways to share your code
| Method | Example |
|---|---|
| Direct share | "Use code PEER_ABC123 at agents.proxies.sx/peer/" |
| Link | agents.proxies.sx/peer/?ref=PEER_ABC123 |
| Embed in bot | Agents can include code in recruitment messages |
| Social posts | Share alongside earnings screenshots |
Security & trust
| Feature | Value | Purpose |
|---|---|---|
| JWT expiry | 1 hour | Minimize token-theft window |
| Refresh token expiry | 7 days | Re-register if expired |
| WebSocket auth | Sec-WebSocket-Protocol header | Secure token transport (not URL) |
| Token revocation | DB check every request | Instant invalidation |
| Registration rate limit | 3/min IP (agents) · 5/min (SDK) | Prevent mass registration |
| Wallet change rate limit | 1/day | Prevent rapid switching |
| Wallet cooling period | 7 days | Fraud prevention after change |
| Withdrawal rate limit | 3/hour | Prevent rapid drain |
| WS message rate limit | 100/min per device | Prevent flooding |
| Max connections | 2 per device | Prevent connection spam |
| IP classification | Server ASN lookup | Cannot spoof IP type |
| Traffic validation | Max 1 GB per call | Prevent inflated reports |
| Anomaly detection | >$1000 earnings or >100 GB/hour flagged | Catch suspicious activity |
| IPv6 SSRF blocklist | fe80::/10, fc00::/7 blocked | No internal network access |
| Payouts to registered wallet | Body parameter ignored if wallet set | No payout redirection |
Android SDK
GitHub: bolivian-peru/android-peer-sdk. Currently in beta — API surface may change. Report issues on GitHub.
Installation
// settings.gradle — add JitPack
dependencyResolutionManagement {
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
// build.gradle (app-level)
implementation("com.github.bolivian-peru:android-peer-sdk:1.1.2")Usage
// Permissions: INTERNET, ACCESS_NETWORK_STATE, FOREGROUND_SERVICE,
// FOREGROUND_SERVICE_DATA_SYNC, WAKE_LOCK, POST_NOTIFICATIONS (Android 13+)
ProxiesPeerSDK.init(
context = applicationContext,
apiKey = "psx_YOUR_KEY",
config = Config(
walletAddress = "YOUR_SOLANA",
mobileDataOnly = false,
onlyWhenCharging = false,
maxBandwidthMBPerHour = null,
onStatusChange = { status -> /* online | offline | error */ },
onEarningsUpdate = { earnings -> /* cents, GB */ },
)
)
ProxiesPeerSDK.getInstance().start() // foreground service starts
ProxiesPeerSDK.getInstance().stop()IP rotation via accessibility service
On non-rooted Android, IP rotation toggles airplane mode via an Accessibility Service. 60-second cooldown · ~15s rotation.
if (sdk.isIPRotationAvailable()) {
sdk.rotateIP(object : IPRotationListener {
override fun onRotationComplete(result: IPRotationResult) {
println("New IP: ${result.newIp}")
}
})
} else {
sdk.openIPRotationSettings()
}
// Coroutine version
val result = sdk.rotateIPAsync()IP rotation messages
| Message type | Direction | Payload |
|---|---|---|
| rotate_ip_request | Relay → Device | { requestId, reason } |
| rotation_complete | Device → Relay | { requestId, success, newIp, error } |
| ip_update | Device → Relay | { deviceId, newIp, timestamp } |
| ip_update_ack | Relay → Device | { success, newIp } |
Developer revenue: App developers integrate the SDK and earn a share of each GB routed through their users' devices. Earnings accumulate automatically — rates set by IP type. Contact us for custom integration terms.
Services marketplace
Peers who share bandwidth can also build and list services on the Proxies.sx Marketplace. One registration → two independent capabilities:
| Capability | Description | Toggle |
|---|---|---|
| Bandwidth sharing | Earn by routing traffic | ON / OFF |
| Service listing | Build bots/APIs, gate with x402, list for others | Active / Inactive |
Same wallet, same account, same reputation. Browse the Marketplace →
Links
Discovery files
| File | URL | Purpose |
|---|---|---|
| skill.md | /peer/skill.md | Full peer API skill file for AI agents |
| master skill | /skill.md | Everything in one read |
| llms.txt | /llms.txt | LLM integration reference |
| x402.json | /.well-known/x402.json | x402 protocol discovery |
Live domains
| Domain | Purpose |
|---|---|
| api.proxies.sx | REST API + x402 + peer endpoints |
| agents.proxies.sx | Agent infrastructure hub |
| relay.proxies.sx | WebSocket relay for peer devices |
| gw.proxies.sx | HTTP proxy gateway (port 7000) · SOCKS5 (7001) |
GitHub
Social
For full API surface and discovery, AI agents fetch agents.proxies.sx/peer/skill.md.