Run a tiny agent on devices you already own. They dial out to your hub; you point an app at one address and each request leaves through one of your devices, on its ordinary home IP.
For scraping, testing geo-locked sites, or any job that needs a real home IP you control, not a rented datacenter one.
Building a proxy pool from your own devices used to mean gluing a stack of tools together. warren is that stack as one binary.
Three moving parts, and the devices never accept a connection.
Each device keeps one outbound link to the hub. Nothing listens on it, so home routers and CGNAT are fine.
Your app hits the hub's proxy (HTTP or SOCKS5, with a login). The hub picks a healthy device and retries another if one drops.
It connects to the site from its own network, so the site sees its home IP. For HTTPS the hub only relays encrypted bytes.
Yours, end to end: warren only uses devices you own and control. No selling bandwidth, no strangers' traffic on your IPs, no marketplace.
Two steps. No secrets to invent: the hub generates the login and token, turns on TLS, and prints a one-paste join code.
01on a server: install warren and start the hub
curl -fsSL https://raw.githubusercontent.com/doedja/warren/main/install.sh | sh && warren hub --public-node-addr SERVER:7000
It prints a proxy login, an enroll token, the TLS fingerprint, and a join code. It listens on :7000 for devices and :8000 for the proxy.
02on each device you own: paste the join code
Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/doedja/warren/main/install.sh | sh -s -- --join warren1.aGVsbG8...
Windows (elevated PowerShell):
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/doedja/warren/main/install.ps1))) -Join warren1.aGVsbG8...
The code carries the address, token, TLS, and fingerprint, so there are no flags to fill in. The dashboard hands you the right line per OS.
That is the setup. Now point any app at the proxy with the printed login:
curl -x http://warren:PASSWORD@SERVER:8000 https://api.ipify.org
Plain user picks any healthy device. Add a device's name to pin one, like an exit node:
curl -x http://warren+phone:PASSWORD@SERVER:8000 https://api.ipify.org
For a localhost-only hub, add --no-tls. A spare Android phone works too, via Termux. Full docs and prebuilt binaries on GitHub.