Quick Start
Go from unboxing to your first proxied request in five steps. The entire process takes under 60 seconds.
Plug it in
Connect the included USB-C power cable. The front LED pulses blue during boot, then turns solid green when ready (about 90 seconds on first boot).
Pick a pairing path
Three options: the iOS app (Bluetooth pairing), Web Bluetooth at proxybox.us/pair from a Mac/Windows/Linux desktop, or the captive Wi-Fi portal (join ProxyBox-Setup-XXXX from any phone or laptop). All three end at the same Wi-Fi credential prompt.
Hand over Wi-Fi and pair
Pick your home Wi-Fi network and enter the password. The box joins your network, registers with the API, establishes its WireGuard tunnel, and starts the proxy service automatically.
Get your credentials
The app displays your proxy credentials (host, port, username, password). You can also generate a WireGuard VPN config and scan the QR code from any device. Credentials are also available in the web dashboard.
Send your first request
Use your proxy credentials with any HTTP or SOCKS5 client. Your traffic now routes through your home residential IP.
curl -x http://user:pass@proxy.proxybox.us:8080 https://httpbin.org/ip
Prerequisites
- •A ProxyBox device (order at proxybox.us/pricing)
- •A home Wi-Fi network with the password handy (the standard ProxyBox joins 2.4 GHz; ProxyBox Roam supports 5 GHz)
- •For pairing: an iPhone (iOS 16+) with Bluetooth, OR a desktop browser with Web Bluetooth (Chrome / Edge / Opera), OR any device that can join a Wi-Fi network for the captive portal
- •A ProxyBox account (free or premium)
Proxy Setup
ProxyBox provides a standard HTTP and SOCKS5 proxy. Your credentials are available in the dashboard under Devices → Proxy Credentials.
cURL
The simplest way to test your proxy connection.
# HTTP proxy
curl -x http://USERNAME:PASSWORD@proxy.proxybox.us:8080 https://httpbin.org/ip
# SOCKS5 proxy
curl --socks5 USERNAME:PASSWORD@proxy.proxybox.us:1080 https://httpbin.org/ip
# Verify your residential IP is returned
# Response: {"origin": "73.162.xxx.xxx"}
Python
Works with the requests library and any library that supports standard proxy configuration.
import requests
proxies = {
"http": "http://USERNAME:PASSWORD@proxy.proxybox.us:8080",
"https": "http://USERNAME:PASSWORD@proxy.proxybox.us:8080",
}
response = requests.get("https://httpbin.org/ip", proxies=proxies)
print(response.json())
# {'origin': '73.162.xxx.xxx'}
import aiohttp
import asyncio
async def fetch():
proxy = "http://USERNAME:PASSWORD@proxy.proxybox.us:8080"
async with aiohttp.ClientSession() as session:
async with session.get("https://httpbin.org/ip", proxy=proxy) as resp:
print(await resp.json())
asyncio.run(fetch())
Node.js
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
const agent = new HttpsProxyAgent(
'http://USERNAME:PASSWORD@proxy.proxybox.us:8080'
);
const res = await fetch('https://httpbin.org/ip', { agent });
console.log(await res.json());
// { origin: '73.162.xxx.xxx' }
import axios from 'axios';
const { data } = await axios.get('https://httpbin.org/ip', {
proxy: {
host: 'proxy.proxybox.us',
port: 8080,
auth: { username: 'USERNAME', password: 'PASSWORD' }
}
});
console.log(data);
Browser Extensions
Configure any browser proxy extension (FoxyProxy, SwitchyOmega, etc.) with these settings:
| Protocol | HTTP or SOCKS5 |
| Host | proxy.proxybox.us |
| Port | 8080 (HTTP) or 1080 (SOCKS5) |
| Username | Your proxy username from dashboard |
| Password | Your proxy password from dashboard |
Selenium / Playwright
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--proxy-server=http://USERNAME:PASSWORD@proxy.proxybox.us:8080')
driver = webdriver.Chrome(options=options)
driver.get('https://httpbin.org/ip')
print(driver.page_source)
driver.quit()
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://proxy.proxybox.us:8080",
"username": "USERNAME",
"password": "PASSWORD",
})
page = browser.new_page()
page.goto("https://httpbin.org/ip")
print(page.content())
browser.close()
import { chromium } from 'playwright';
const browser = await chromium.launch({
proxy: {
server: 'http://proxy.proxybox.us:8080',
username: 'USERNAME',
password: 'PASSWORD',
}
});
const page = await browser.newPage();
await page.goto('https://httpbin.org/ip');
console.log(await page.textContent('body'));
await browser.close();
VPN Setup
ProxyBox uses WireGuard for VPN connections. WireGuard is a modern, high-performance VPN protocol that is faster and more secure than OpenVPN or IPSec. Generate a VPN client from the dashboard or API, then import the configuration into the WireGuard app on any platform.
Tip: The fastest way to set up VPN is to open the ProxyBox app, go to your device, tap "Add VPN Client", and scan the QR code with the WireGuard app on the device you want to connect.
iOS
- Install WireGuard from the App Store.
- In the ProxyBox dashboard, go to your device and click Create VPN Client.
- A QR code will be displayed. In WireGuard, tap + → Create from QR code.
- Scan the QR code and name the tunnel (e.g., "ProxyBox Home").
- Toggle the connection on. All traffic now routes through your home IP.
macOS
- Install WireGuard from the Mac App Store.
- In the ProxyBox dashboard, create a VPN client and click Download Config.
- In WireGuard, click Import Tunnel(s) from File and select the
.conffile. - Click Activate to connect.
Windows
- Download and install WireGuard for Windows.
- Download the
.conffile from the ProxyBox dashboard. - In WireGuard, click Import tunnel(s) from file.
- Click Activate.
Android
- Install WireGuard from the Play Store.
- Create a VPN client in the ProxyBox dashboard or app.
- Tap + → Scan from QR code and scan the code.
- Toggle on to connect.
Linux
# Install WireGuard
sudo apt install wireguard
# Download your config from the dashboard and save it
sudo cp proxybox-home.conf /etc/wireguard/proxybox.conf
# Start the tunnel
sudo wg-quick up proxybox
# Verify connection
curl https://httpbin.org/ip
# Stop the tunnel
sudo wg-quick down proxybox
# Enable on boot (optional)
sudo systemctl enable wg-quick@proxybox
API Reference
The ProxyBox API is available at https://proxybox.us/api. All requests require a Bearer token obtained from the login endpoint.
Authentication
# Request
curl -X POST https://proxybox.us/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "your-password"}'
# Response
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"plan": "premium"
}
}
Include the token in all subsequent requests as Authorization: Bearer <token>.
Devices
# List all your devices
curl https://proxybox.us/api/devices \
-H "Authorization: Bearer YOUR_TOKEN"
# Response
{
"devices": [
{
"id": "dev_xyz789",
"name": "Home Office",
"status": "online",
"public_ip": "73.162.xxx.xxx",
"firmware_version": "1.2.0",
"last_seen": "2026-04-05T14:23:00Z"
}
]
}
Proxy Credentials
Each device has a single active proxy credential pair. Fetch the current credentials below. To rotate, use the dashboard or app, which generates a new pair and invalidates the old one.
# Get the current proxy credentials for a device
curl https://proxybox.us/api/devices/dev_xyz789/proxy-creds \
-H "Authorization: Bearer YOUR_TOKEN"
# Response
{
"username": "px_abc456",
"password": "sk_live_...",
"http_url": "http://px_abc456:sk_live_...@proxy.proxybox.us:8080",
"socks5_url": "socks5://px_abc456:sk_live_...@proxy.proxybox.us:1080"
}
VPN Clients
# Create a new VPN client
curl -X POST https://proxybox.us/api/devices/dev_xyz789/vpn-clients \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "MacBook Pro"}'
# Response
{
"id": "vpn_def789",
"name": "MacBook Pro",
"config": "[Interface]\nPrivateKey = ...\nAddress = 10.0.0.2/32\nDNS = 1.1.1.1\n\n[Peer]\nPublicKey = ...\nEndpoint = relay.proxybox.us:51820\nAllowedIPs = 0.0.0.0/0",
"qr_code_url": "https://proxybox.us/api/vpn-clients/vpn_def789/qr"
}
Troubleshooting
Device shows as offline
- • Confirm your home Wi-Fi network is up and the password has not changed since pairing.
- • Check that the LED is solid green. If it is blinking red, the device cannot reach the internet.
- • Ensure your router has DHCP enabled and is assigning an IP to the device.
- • Try power-cycling the device by unplugging the USB-C cable for 10 seconds.
- • If the device is behind a restrictive firewall, ensure UDP port 51820 (WireGuard) is not blocked.
Proxy connection refused or times out
- • Double-check your credentials in the dashboard. Credentials are case-sensitive.
- • Verify the device is online in the dashboard before attempting to connect.
- • Test with
curl -v -x http://user:pass@proxy.proxybox.us:8080 https://httpbin.org/ipto see detailed connection errors. - • If you are on a corporate network, your network may block outbound proxy connections. Try the SOCKS5 port (1080) or the VPN instead.
VPN connects but no internet access
- • Ensure your ProxyBox device is online and has internet access through your router.
- • Check that the WireGuard config has
AllowedIPs = 0.0.0.0/0for full tunnel mode. - • Try disconnecting and reconnecting the WireGuard tunnel.
- • On iOS/Android, ensure "Connect on Demand" is enabled in the WireGuard tunnel settings if you want persistent connectivity.
Bluetooth pairing fails
- • Make sure Bluetooth is enabled on your phone and the ProxyBox app has Bluetooth permissions.
- • Move your phone within 3 feet of the ProxyBox device.
- • If the device LED is not green, wait for it to finish booting before attempting to pair.
- • Try force-closing and reopening the ProxyBox app.
Security
Security is foundational to ProxyBox. Here is how we protect your data at every layer.
Encryption
All proxy traffic is encrypted with TLS 1.3 between your client and the ProxyBox relay. VPN traffic uses WireGuard's ChaCha20-Poly1305 encryption. No unencrypted data ever leaves your device or the ProxyBox hardware.
HMAC Authentication
Every device-to-API communication is signed with HMAC-SHA256 using a per-device secret key. This prevents request tampering and replay attacks. The raw request body is signed (not the parsed JSON) to prevent serialization-related bypasses.
Firmware Updates
Firmware updates are cryptographically signed before distribution. Each ProxyBox device verifies the signature before applying any update. Updates are delivered over the encrypted WireGuard tunnel and applied atomically with automatic rollback on failure.
Zero-Logs Policy
ProxyBox does not log, store, or inspect your proxy or VPN traffic. We store only the minimum metadata required for device management: device status, firmware version, and connection timestamps. We never store DNS queries, browsing history, request URLs, or response bodies.
Account Security
All passwords are hashed with bcrypt (cost factor 12). Two-factor authentication (TOTP) is available for all accounts and mandatory for admin access. Sessions expire after 7 days of inactivity. API tokens can be rotated or revoked at any time from the dashboard.