Quickstart: two computers
You need two computers on different networks for a meaningful public-IP test, your own control-plane deployment, and a built Teapot agent on each computer. Follow the control-plane setup instructions first; you will use that deployment's dashboard to approve devices. The Rust agent supports macOS (launchd) and Linux (systemd user service). For a phone instead of the second computer, see Android exit node.
1. Build the agent
Teapot is distributed as source code only: there are no prebuilt binaries, APKs, installers, or package-registry releases. Build the components you need and deploy your own control plane.
On each computer, with Rust/Cargo installed:
git clone https://github.com/ManifoldSystems/teapot.git
cd teapot
cargo build --releaseUse target/release/teapot below (or put it on your PATH and use teapot). There is no published package install command in this guide. The agent repository is public; cloning does not require org access.
2. Register and approve each device
On each computer:
export TEAPOT_CONTROL=https://teapot.example.com # replace with your deployment URL
./target/release/teapot loginKeep TEAPOT_CONTROL set for the commands below and for later interactive commands,
or pass --control <URL>. The CLI default is localhost for development, not a hosted
service. service install saves the configured URL in the background service.
This opens the approval page. Sign in as the dashboard administrator and approve the device. If a browser cannot open, run login --no-browser and open the printed URL yourself. Never share the admin password or the device's secret key.
3. Enable one exit
In the dashboard, enable exit for the computer whose internet connection you want to use (B). Then, on both computers:
./target/release/teapot service install
./target/release/teapot statusservice install starts teapot up in the background. On macOS this is a launchd agent that runs while you are logged in; on Linux it is a systemd user service. If you run from a checkout, keep the binary at the installed path. You can instead run ./target/release/teapot up in a terminal on each computer for a temporary session.
4. Send a request from A through B
On A:
curl http://127.0.0.1:1080/_teapot/exits
curl -x http://127.0.0.1:1080 https://ifconfig.meThe first command shows available exits. The second should print B's public IP. Check B's IP independently to compare. If several exits are available, select one by name. If it doesn't work, see troubleshooting.
The default local proxy only handles traffic from applications configured to use it; it does not change the whole computer's network route.