Run a spinner box: your RPC and your model, sold from the first start
You have a machine with a GPU and a blockchain node. This post takes it from nothing to two things sold at once: the RPC endpoint and the AI model on the GPU. It is the manual version of part 6, one compose file that starts everything the machine brings.
Before you start
- a Linux machine with Docker and the NVIDIA container toolkit (for the GPU)
- a public https hostname in front of it: Caddy, nginx with a certificate, or a Cloudflare tunnel. Never a bare IP address.
- a wallet address for your earnings
- your chain node, if you bring RPC
1. Download the box, check it
1curl -fsSLO https://grid.taifoon.dev/node/spinner-box.tar.gz2curl -fsSLO https://grid.taifoon.dev/node/spinner-box.tar.gz.sha2563sha256sum -c spinner-box.tar.gz.sha2564tar -xzf spinner-box.tar.gz && cd spinner-boxThe checksum is published beside the file. If the check does not print OK, stop.
2. Fill in .env
cp .env.example .envChange these lines:
TAIFOON_OWNER: your walletTAIFOON_ENDPOINT: the https hostname that reaches the model engine on port 11460TAIFOON_RPC_URLandTAIFOON_RPC_CHAIN: the https URL of your RPC front (port 18545) and the chain it servesRPC_UPSTREAM: where your chain node listens, as the front sees it
The example already switches on RPC (TAIFOON_KINDS=rpc) and inference (TAIFOON_INFERENCE=nemotron-4b, the model the engine serves) with TAIFOON_SHARE=on, which asks to sell. Leave TAIFOON_KEY empty: on its first start the node makes a free Taifoon key for your wallet and keeps it in its own volume. A second machine of the same wallet sets the key from your cockpit.
3. Start it
./install.shIt loads the Taifoon node (its checksum checked again), then starts three containers: the node, the model engine and the RPC front. Run it again at any time: when a newer node is published it loads it and restarts the node.
4. Read the answers
docker logs -f taifoon-nodeWithin a minute you see, one line each:
key:the free key was made (only its prefix is shown)rpc: {"accepted":true,"probe":true,…}: Taifoon called your RPC and it served the chain you namedinference: … battery 3/3: the node asked your model three sums at temperature zero and it answered all threeinference: {"accepted":true,"listed":true,"seller":"cgpu_…","buyer_pays":{…}}: Taifoon asked the model again itself, and listed it for saleheartbeat: 200: the node signed its first report. It reports every 5 minutes from now on.
If a line says why:, it says what to fix. The model engine needs a few minutes to load the first time; the node tries again every 5 minutes.
What listed means
You never name a price. The broker prices your model at the market of its class, and buyers pay that price plus Taifoon's share. Your node is on the one inference route from the moment it is listed: the coordination API, the paid walls, MCP and n8n all reach it through that route. The public price list shows the cheapest route of each model, so your node appears there whenever it is the cheapest for its model. The live list is at /docs/resold-prices.
Taifoon keeps checking. A node that fails its re-checks is marked degraded, then delisted, and joins again by passing the battery.
What it earns
GRID for every hour a probe passes, and the provider's part of each paid answer it serves. The rates move with how many machines of each kind there are, and are read live at coord.taifoon.dev/v1/grid/economics. Your cockpit at /hosting/resources shows each resource as Taifoon measured it.
RPC and inference from one compose file, sold from the first start.