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

LinuxMIT licensedNo protocol feeSettles on Base and SolanaNo SDK in your app

NewYour first agent node, with toon →
$0.000001lowest price you can set
1 channelreaches every app, hop by hop
0 bytesof your payload a forwarding hop can read
0%protocol fee
  1. 01

    Install

    One line puts the release binary on Linux, x86_64 or aarch64. No Rust toolchain, no account.

    The shell
    curl -fsSL https://toon.ar.io/install.sh | sh
  2. 02

    Create and fund it

    init makes the wallet and a relay reachable as a hidden service; the mnemonic is shown once. The faucet funds it with test tokens.

    Devnetfree
    toon init --accept-anyone-terms toon wallet fund
  3. 03

    Start it

    up writes a systemd --user unit, so the node outlives this terminal. status shows what is running and at which address.

    What status printed
    toon up toon status Supervisor: running. TOON app relay (ILP address g.toon.fb0e007c71750599): connector running on 127.0.0.1:25599.
  4. 04

    Join the network

    Until now the node reaches nobody. join peers 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 ETH
    toon join devnet --deposit 1000000 --yes
  5. 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 in
    toon add echo --to relay --image echo-app --price 2 --yes toon route list
  6. 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 →

TypeScriptnpm install @toon-protocol/client
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

No cloud · no domain · no open port  —  your first agent node →