Live $WRAITH token live on Nad.Fun CA0x7E8BDf7D262a6e4ff9302Af49F2CdB022B587777 Buy on nad.fun →

Put your machine to work.

An attestor quorum watches your hardware pass a timed proof of compute, a soul is minted to it, and it starts earning. Start below, or pick another way in.

Start from this device

Nothing to install. This page proves the hardware in front of you, mints its soul, loads a model and serves requests - while the tab is open, and no longer.

1

Your hardware

What WebGPU is willing to say about the adapter, and how much of it a model can use.

looking…
2

Prove it can compute

A tiled matrix multiply in WGSL — the same maths every other machine on the grid runs, on the same verification path. Run it locally first to see where you land.

not measured yet
3

A wallet to own it

Pays gas and holds the soul. The tab's own device key — … — is separate, signs liveness and job acceptance, and controls no money.

not connected
4

Mint the soul

The attestor issues a challenge you cannot predict, checks the answer with Freivalds' algorithm, and co-signs. The deposit is refundable and is staked while you are enrolled.

not enrolled
5

Serve a model

Loaded into your GPU once and cached. The tab dials out to the relay and answers requests through it, because a tab has no address of its own.

not serving
Suggested rate—
If left open all day—
A month of that—
Refundable deposit—
Requests served0
Generation speed—
Live jobs0

What this is honestly worth, and what it costs you

  • It will not pay your rent. A tab is worth a few cents an hour, because WebGPU cannot reach tensor cores and a browser is several times slower than a native runtime. The rate above is computed from what your card actually did in the benchmark, not from a number we would like to show you.
  • The relay can see the traffic. Container providers hand the renter an address and talk to them directly; a tab has no address, so prompts and completions pass through a relay. That is stated in the endpoint document every renter decrypts. Run your own relay if it matters.
  • Your soul is tied to this browser profile, not to the card. WebGPU will not identify the silicon, so identity is a key this page generated and keeps in local storage. Clear site data and the soul can no longer prove it is alive. Copy the device key somewhere safe.
  • No exclusivity is claimed. Every other class holds most of its own memory hostage for the duration of a job, and can be slashed for not proving it. A tab cannot, so its jobs are marked unprotected on chain. What you are selling is a token stream, not a dedicated machine, and the market prices it that way.
  • Closing the tab ends it. Jobs in flight fail and count against the soul's record. Stop properly before you close the window.

On a phone

The same protocol, on the device in your hand - and the three ways a phone is unlike a server, each handled rather than hidden.

MEMORY

The model is chosen for the phone

Llama 3.2 1B, about 0.9 GB of GPU memory. Chosen because an iPhone verifiably loads it, not because of how it reads on paper — the same-sized CPU model fails on the same device, because a browser caps the WebAssembly heap hard while WebGPU weights live outside it entirely. That distinction cost the WRAITH wallet a real bug, and this page inherits the answer rather than rediscovering it.

SHADERS

A missing feature does not mean a missing model

Every 16-bit build needs the shader-f16 feature, and plenty of phone GPUs do not report it. A build like that does not run slowly without it — it does not run. The page checks, and quietly loads the 32-bit twin of the same weights instead. You should never have to know what a shader feature is to rent out your phone.

THE SCREEN

A locked phone is an offline machine

When the screen turns off the tab is suspended: the connection closes, heartbeats stop, and a job in flight stops mid-sentence — which to the renter looks exactly like a provider who took the money and left. The page takes a screen wake lock while serving and re-takes it every time you come back. Where the browser refuses one, it says so rather than pretending.

Before you leave a phone serving overnight

  • Plug it in. Generating tokens is the GPU at full tilt. A phone doing this on battery drains fast and gets hot, and a hot phone throttles — which shows up as a slow provider rather than an obvious fault.
  • Add it to your home screen. An installed web app is far less likely to be swept away when the OS reclaims memory from background tabs, and a swept tab is a lapsed machine.
  • The relay can see the traffic. A phone cannot accept a connection — no carrier will route one to it — so it dials out and answers through a relay, and that relay carries prompts and completions in the clear. Every other route on this grid is direct between renter and provider. This is the honest cost of selling a device the network will not let anyone reach, and a renter who minds runs their own relay.
  • Expect cents, not dollars. A phone is the smallest listing on the grid and is priced like one. What it is genuinely good for is being a machine that already exists, already has a GPU, and is otherwise doing nothing.

How a job runs on your machine

Two ways, decided by the machine rather than by preference. It decides which half of the catalogue you can be paid for.

DOCKER · a machine you own

In a container

The full catalogue, each job in its own filesystem and process boundary, torn down at the end. The installer sets up Docker and the NVIDIA container toolkit — without the second one, containers cannot see your GPUs at all and every job fails at start.

  • Everything in the catalogue, including raw shell access
  • A renter's workload cannot see your filesystem
NATIVE · rented GPU capacity

As a plain process

RunPod, Vast and most Kubernetes-backed hosts hand you a container that is already unprivileged, and Docker cannot start inside one — no matter what you install. Rather than leave that hardware unable to earn, the agent runs the job directly, as a locked-down user that owns nothing and cannot read your keys.

  • Ollama, vLLM, Jupyter, Whisper, ffmpeg, PyTorch, ComfyUI
  • Anything else is declined before the job is accepted, never failed after
  • Raw shell access is refused outright — its whole product is access to your box

Before you serve a job in native mode

  • Run wraith runtime. If it warns that jobs would run as root, do not serve work yet — a notebook running as root can read this machine's device key and sign as it. Re-run the installer; it creates the unprivileged wraithjob account and locks ~/.wraithgrid away from it.
  • A machine that cannot serve work is not a wasted machine. It still heartbeats, and availability still pays in $WRAITH. It just never earns the settlement token.
  • If you want containers on rented capacity, relaunch the pod from a privileged or docker-in-docker template. That is a host setting, not something an installer can fix.

Can a renter reach it?

Running a job and delivering one are different problems, and a machine can be perfect at the first and incapable of the second.

This is not hypothetical — it is the first job this grid ever sold

  • A job was accepted on a rented pod and the renter was handed http://157.157.221.29:41307. The model was loaded, the GPU was held, the term was running, the bond was posted. That pod forwards exactly two things: ssh, and one HTTP port through a proxy. 41307 was not one of them.
  • The agent had asked the kernel for a free port — an honest answer to the wrong question. The kernel knows what is bound. It knows nothing about what is exposed.
  • From the renter's side, a machine you cannot connect to is indistinguishable from a provider who took the money and did not deliver. That is a dispute you lose.
A PORT ON A PUBLIC ADDRESS

Directly reachable

A machine you own, or a VPS with the firewall open. Leave publicPorts empty and the kernel picks a free one per job. Everything in the catalogue is sellable, including raw ssh access.

AN HTTPS HOSTNAME · rented capacity

Behind someone's proxy

RunPod, Vast, most PaaS. There is no outside port number at all — traffic arrives at a hostname and is proxied in. Every workload that speaks HTTP sells fine. ssh does not: it is TCP, and an HTTP proxy has nothing to forward it to. The number of forwarded ports is also your real concurrency limit, because two jobs cannot bind one port.

NOTHING FORWARDED

Unreachable

Behind NAT with no forwarding, or a host that exposes nothing. You can still earn availability, and you can still sell work that owes nobody a socket — a training script that fetches its own inputs and ships its own results. You must not sell a server workload: it would start perfectly and be undeliverable.

What each kind of machine can sell

This table is not written by hand — it is computed in your browser by the same module the provider agent uses to decide what to decline. If it says your box cannot sell something, that is the code that will refuse it, not a summary of the code.

What each kind of machine can sell
Machine Tier Can sell Cannot, and why Jobs at once

Prove it, do not assume it

  • wraith ports --auto asks the host what it actually forwards. On RunPod that means the API, not the pod's own nginx — that nginx happily answers on ports the pod does not expose, so from inside they look open and from outside they 404.
  • wraith ports --check binds each port, serves one random token, and fetches the address a renter would be given. If your own token does not come back, it is not your machine on the other end. A port can be open, forwarded to the wrong container, or answered by somebody else's server — and all three look healthy locally.
  • wraith runtime then says the whole truth in one place: device, runtime, reach, tier, what you can sell and what you cannot. The installer runs all of it for you.
  • If nothing is reachable, delist rather than serve. Availability still pays. A dispute does not.

Other ways in

A real GPU, a whole fleet, or an agent that runs the lot. The browser is the easiest way in, not the only one.

RIGHT HERE · nothing to install

A browser tab — or your phone

WebGPU is enough to prove real hardware and serve a real model, and a modern phone has WebGPU. This page runs the challenge on your GPU, mints the soul, loads a language model and answers requests over an OpenAI-compatible URL — while the tab is open, and no longer. On a phone it picks the model that is known to load on one.

  • Language models only, and small ones
  • Worth a few cents an hour, honestly
  • Jobs are unprotected: no residency commitment
  • A phone must stay awake and plugged in — what that means
Start from this device
THE DAEMON · a real machine

The wraith binary

The full provider. Reads the hardware fingerprint from the driver, runs the attestors' challenges natively, heartbeats, accepts jobs, serves them and tears them down. NVIDIA, AMD, Apple silicon and plain CPUs all carry souls.

  • Everything in the catalogue: serving, fine-tuning, diffusion, training, transcode
  • Commits residency, so jobs are exclusive and challengeable
  • Earns the settlement token, $WRAITH emissions and its share of deposit yield
curl -fsSL https://grid.dagentx.com/dl/provider-setup.sh | bash

Linux, one line. Installs Node, checks torch, works out how this box can run a job and sets that up, drops the agent in /opt/wraithgrid and shows you what it can put on the grid. It stops there — enrolling locks a real deposit and spends one of eight souls, so that stays your call.

Renters connect to the address your agent reports, so pass it in: WRAITH_PUBLIC_HOST=1.2.3.4 curl … | bash

Then it asks your host which ports are actually forwarded and proves it — binds each one and fetches it from the outside. Running a job and delivering one are different problems: on rented capacity only declared ports exist, and from inside the box an unreachable port answers perfectly. Re-check any time with wraith ports --check.

Download for Windows · 87 MB

SHA-256 413ea1b2daa79c5dc204e41ad4277ad6b91b994a0a24b171f80e71e9668f659c
macOS and Linux: run it from a checkout with node agent/src/index.mjs — there is no packaged build for either yet.

AN AGENT · hands off

Let a model run it

Everything the binary does, it does under --json, and there is an MCP server exposing the same thirty-two commands as tools. An agent can scan the hardware, quote the deposit, enrol it, price it and keep it alive.

  • It will not enrol hardware or spend money without being asked
  • Same binary underneath, so the two cannot disagree