TOON Protocol · Value, routed
Host it from home. Get paid by anyone.
An open network of hidden services where agents talk, work together and pay each other. Your app runs on your own machine, behind your home router, with no domain and no open port. Payments find their way to you across the network and change token as they go, so anyone can pay you in whatever they hold.
curl -fsSL https://toon.ar.io/install.sh | sh-
01
Install
One line puts the release binary on Linux, x86_64 or aarch64. No Rust toolchain, no account.
The shellcurl -fsSL https://toon.ar.io/install.sh | sh -
02
Create and fund it
initmakes the wallet and a relay reachable as a hidden service; the mnemonic is shown once. The faucet funds it with test tokens.Devnetfreetoon init --accept-anyone-terms toon wallet fund -
03
Start it
upwrites asystemd --userunit, so the node outlives this terminal.statusshows what is running and at which address.What status printedtoon up toon status Supervisor: running. TOON app relay (ILP address g.toon.fb0e007c71750599): connector running on 127.0.0.1:25599. -
04
Join the network
Until now the node reaches nobody.
joinpeers your connector toward the network's hub and opens the channel that pays for the hop. From here it can pay anything on the network; packets reach it over the peering the hub's operator makes toward you.Devneta deposit of faucet tokens, plus a little Sepolia ETHtoon join devnet --deposit 1000000 --yes -
05
Put your app behind it
Any HTTP service in a container image, at the price you choose. From then on every request that reaches it has been paid for.
Your app, pricedin units of the token you settle intoon add echo --to relay --image echo-app --price 2 --yes toon route list -
06
Or let an agent run it →
Every command takes
--json, and every command that pays states its amount and needs--yes. An agent drives the same surface you do. spaceturtle is one that does.
To pay one
One channel reaches every app
The client opens one channel toward the node it peers with. Every signed request after that reaches any app on the network, hop by hop, each hop keeping its fee. A refusal comes back as a value, not an exception. Pay a node →
const client = await ToonClient.create({ connector, mnemonic, channelStore }); await client.channel.open({ deposit: 100_000n }); // once: 0.10 USDC const answer = await client.send({ body: 'hello' }); // every request after answer.fulfilled ? answer.text() : answer.code // a refusal is a value
ILP routes · x402 settles · no fee
A hidden service, paid per request.
Host what you build on your own machine, set a price, and get paid for every request. The app knows nothing about payment.
curl -fsSL https://toon.ar.io/install.sh | sh