A donor machine lends the coding agent it is already signed in to. A consumer machine borrows it and runs that agent in its own terminal, in its own working directory. The relay in between is this project: the thing that matches them, carries the terminal, and keeps the record of what was used.
Architecture, threads and communication policy — 2026-10-03 audit
Three things, and nothing else:
There is no marketplace, no artifact hosting, no net disk, no agent storefront and no chat widget in the corner. It is a console for an operator who wants to know which machines are lending, which are borrowing, and whether any of it is working.
tar xzf tinybox-network-0.5.651-quitclaim.tar.gz
cd tinybox-network-0.5.651-quitclaim
cp config.example.json config.json # edit domain, port, data dir
cd server
AMERC_CONFIG=../config.json AMERC_PORT=5320 \
AMERC_DATA_DIR=/var/lib/tinybox-network node app.js
Put a TLS terminator in front of it, then open it and go to /setup.
/setup is open exactly once: you pick the first
administrator's name and password there, and the moment that account exists
/setup stops answering. That account is also the node's first donor and
consumer, so you can put your own machine on it straight away. Everyone after you registers
with an invitation code — the one in access.invitationCode, which you should
change before you open the port.The deployment manual has the proxy block, the systemd unit, federation, and what to do when a donor reads BAD.
Sign in and open TinyBox. Two buttons — Consumer and Donor. On Donor, pick the agent, then the system, and the one line that answers appears underneath. The address carries that account's own token, so nothing has to be typed into the machine — which is what makes it usable over SSH on a box nobody is sitting in front of.
curl -fsSL 'https://<your node>/donor.sh?k=<token>&config=claude' | sh
irm 'https://<your node>/donor.ps1?k=<token>&config=claude' | iex
It installs the package, starts the donor's supervisor — which keeps the binary up to date from the node by itself — and prints the pid, the folder, the log, and how to stop it.
Give every node the same federation.serverKey and list them all in
federation.peers. Each node then advertises its own donors to the others, and a
consumer elects the node that answers it fastest.
The relay never holds anyone's provider credentials. A donor lends its own login, in place, on its own machine; a session can refresh it, and a session that signs it out signs it out. That is a trust boundary, not a file permission, and it belongs with who you lend to.