Watt
X

Documentation

gateway base url https://gateway.watt.so/v1

Overview

Watt turns trading fees on the WATT token into compute for the people holding it. Every buy and sell on the Pons curve pays a fee: a 1% creator tax and a 1% Pons fee. The creator tax purchases NVIDIA capacity; once an hour that capacity is divided among eligible holders as compute credits, measured in hours. Holders claim credits onto API keys and spend them through an OpenAI-compatible inference gateway or on dedicated pods with SSH access.

There is no staking, no lockup and no transaction required to receive credits. Holding at least WATT in a wallet at the hourly snapshot is the only condition.

This page is the reference. The landing page has a calculator and a shorter explanation.

Concepts

Compute credit
What holders receive. Credits are measured in hours and live on your ledger until claimed.
hour
One hour of exclusive access to one NVIDIA . Pods give that access directly. API requests are metered by the GPU-seconds they occupy on a pool and deducted in the same unit.
Ledger
The per-wallet record of credits added, claimed and revoked. Read it on the ledger page or through the ledger API.
Key
A bearer token carrying claimed credits, up to hours. Anyone holding the key can spend its balance.
Snapshot
The hourly reading of eligible balances used to divide that hour's purchased compute.
Eligible supply
Total WATT supply minus treasury, liquidity pool, locked or vesting, burned and contract-held tokens, measured at the snapshot. Balances below WATT are also excluded.
Current price
The dollar cost of one hour that the protocol uses to convert fees into hours. Posted weekly. Hours are fixed at the price in effect when credited.
Fee source
The Pons bonding curve for WATT. Its buy and sell events carry the creator tax per trade, which the settlement reads every few minutes.

Lifecycle of a fee

  1. 1

    A trade settles

    The WATT market charges of the trade value on both buys and sells and sends it to the fee escrow.

  2. 2

    The curve splits the fee

    The 1% creator tax is earmarked for holder compute. The 1% Pons fee goes to the launchpad and to the protocol for operations. Fees are paid in NVDA and priced in dollars with the Chainlink NVDA/USD feed at collection.

  3. 3

    Compute is purchased

    At the top of each hour, the holder half collected in the previous hour is converted into hours at the current price. The protocol buys capacity from cloud providers against that amount.

  4. 4

    Balances are snapshotted

    The first block after the hour is read. Every address holding at least WATT, excluding the addresses listed under eligible supply, is included with its balance.

  5. 5

    Credits are added

    Each included address receives hours in proportion to its share of eligible supply. The credit is written to its ledger with the hour, the price used and the share.

  6. 6

    Credits are claimed and spent

    The holder moves hours onto a key and uses the gateway or a pod. Metering deducts GPU-seconds from the key.

Snapshot rules

Cadence
Once per hour, at the first block after the top of the hour, UTC.
Minimum balance
WATT. Below that, the address is not included that hour.
Share
address balance divided by eligible supply at that snapshot.
Smart accounts
Each wallet or smart account is a separate holder. Balances across addresses are not combined.
Exchanges
Not counted. The exchange's address holds the tokens.
Selling
Changes your allocation from the next snapshot. Credits already on your ledger remain.
Buying
Counts from the first snapshot after the tokens are in your wallet.
Rounding
Hours are stored as whole GPU-seconds. Fractions below one second are carried to the next hour.

price

The current price is what one dedicated hour costs the protocol across its providers, weighted by the hours bought that week. It is a cost, not a markup and not a market quote. It is posted on the price page and in the x-watt-price-usd response header.

Revision
Weekly, Monday 00:00 UTC. Applies to snapshots from that hour.
When hours are fixed
At the snapshot that credits them. Later price changes do not alter hours already on a ledger or a key.
Direction
Down as often as up. When provider prices fall, the price falls and each dollar of fees buys more time. No floor, no smoothing.
Before launch
The price shown on this site is an example. The first real price is posted with the first snapshot.

Worked example

Assume $2,000,000 of monthly trading volume, an eligible supply of 1,000,000,000 WATT, a price of $0.89 per hour, and a wallet holding 250,000 WATT.

$2,000,000 monthly trading volume
× 2% trading fee
= $40,000 in fees

$40,000
× 50% creator tax, allocated to holders
= $20,000 for  capacity

$20,000
÷ $0.89 per  hour
= 22,472 total  hours

250,000 WATT
÷ 1,000,000,000 eligible WATT
= 0.025% share

22,472 hours
× 0.025%
= 5.62  hours for the month, about 5 hours 37 minutes

The same arithmetic runs on the landing page calculator with your own numbers. Per $100 traded: $2.00 fee, $1.00 creator tax to holder compute, 1.12 hours, about 1 hour 7 minutes.

Authentication

Every request carries a key as a bearer token. Keys start with wt_ and are claimed from your ledger, one tranche of up to hours at a time. A key belongs to the wallet that claimed it and cannot be topped up. When it runs dry, claim another.

Authorization: Bearer wt_live_3f9c…

Keys are shown once, at claim time. Losing one does not lose the hours still on it: revoke it from the ledger and the remainder returns to your balance.

Metering

Credits are deducted as GPU-seconds. Inference is metered on the wall-clock time a request occupies a GPU, not on tokens. Pods are metered from the second the SSH target is reachable until the pod is deleted. Every response carries the deduction in headers.

HeaderMeaning
x-watt-gpu-secondsGPU-seconds deducted for this request
x-watt-remaining-secondsGPU-seconds left on the key after this request
x-watt-price-usdCurrent price at the time of the request

Queue time is not metered. A request that waits for a GPU and is then rejected costs nothing. Requests run as one job on the serverless worker and are metered on the worker's reported execution time, so queue time is never charged. Streaming (stream: true) is not available on this route; the full response is returned when the job completes, with the deduction in the headers.

Chat completions

OpenAI-compatible. Anything that speaks /v1/chat/completions works unchanged, including tool calls, JSON mode and max_tokens. stream is ignored and the response is returned whole. Unknown parameters are ignored, not rejected.

POST /v1/chat/completions

{
  "model": "qwen2.5-7b",
  "messages": [{ "role": "user", "content": "hello" }],
  "stream": false
}

Requests queue for a pool . If no GPU frees up within 30 seconds the request returns 503 with a retry-after header. Also supported: /v1/completions and /v1/embeddings for the models that expose them.

Models

GET /v1/models lists what is loaded. The set is small on purpose: a few well-tested open weights kept warm so a request never waits on a cold load.

ModelContextNotes
qwen2.5-7b128kdefault, tool calls
qwen2.5-coder-32b32kcode
deepseek-r1-distill-70b64kreasoning traces

Pods

A pod is a container with a whole and an SSH target. Ask for an image and a number of hours. The hours are reserved from your key up front and the unused remainder is returned when you delete the pod.

POST /v1/pods
{ "gpu": "rtx-5090", "image": "pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime", "hours": 2 }

200 { "id": "pod_8f2", "ssh": "ssh root@pod-8f2.watt.so", "expires_at": "2026-09-02T05:00:00Z" }

GET    /v1/pods           list your pods
GET    /v1/pods/pod_8f2   status, remaining seconds
DELETE /v1/pods/pod_8f2   stop and return the remainder
Images
Docker Hub and GHCR. Public images only. Anything over 20 GB is rejected at create time rather than billed while it downloads.
Duration
1 to 24 hours per pod. Extend by creating a new pod; state does not carry over.
Storage
50 GB of local NVMe, wiped on delete. No persistent volumes. Copy outputs out before the pod expires.
Network
Outbound internet, inbound SSH on port 22 only.
Expiry
Ten minutes before expiry the pod receives SIGTERM in the entry process. At expiry it is deleted.

Ledger API

Read a wallet's ledger without a key by signing a message with the holding wallet. The signature proves ownership and is not stored.

GET /v1/ledger/0xYourAddress
x-watt-signature: <EIP-191 signature of "watt-ledger:<unix hour>">

200 {
  "address": "0x…",
  "balance": "250000",
  "eligible": true,
  "hours_available": 3.42,
  "hours_claimed": 2.00,
  "last_settlement": "2026-09-02T03:00:00Z",
  "entries": [
    { "hour": "2026-09-02T03:00:00Z", "share": 0.00025, "hours": 0.0021, "price_usd": 0.89 }
  ]
}

The signed message includes the current unix hour, so a signature is valid for at most two hours. GET /api/message returns the exact string to sign. Send the address in x-watt-address on key routes. Entries are paginated with ?before=<hour>.

Keys

Claiming moves hours from your ledger onto a new key. Pass the number of hours to move, up to . Revoking a key returns whatever is left on it. Claiming requires the same wallet signature as the ledger read.

POST   /v1/keys           { "hours": 10 }   returns the key once
GET    /v1/keys           list keys, masked, with remaining seconds
DELETE /v1/keys/wt_…      revoke and return the remainder

Errors

StatusCodeWhat to do
401invalid_keyKey is malformed, revoked, or belongs to another gateway
402credits_exhaustedKey has no seconds left. Claim a new one from the ledger
403bad_signatureLedger or key request signature is invalid or older than an hour
409pod_limitTwo pods per key at once. Delete one first
413image_too_largeImage exceeds 20 GB
429rate_limitedBack off for the seconds in retry-after
503no_gpuPool is full. Retry after the header says so

Limits

LimitValue
Hours per key
Keys per wallet10 active
Concurrent inference requests per key8
Pods per key2
Pod duration1 to 24 hours
Request body4 MB
Ledger reads60 per hour per address

Data handling

Prompts and outputs
Not stored. They pass through the gateway to the model and back.
Weights and pod contents
Not stored. Pod disks are wiped on delete.
Request metadata
Key id, timestamps, model, GPU-seconds and status code are retained for 30 days for billing and abuse prevention.
Wallet addresses
Public chain data. Ledger entries are retained indefinitely so credits can be audited.
Providers
Infrastructure providers may process workload data under their own policies while a job runs.

Security

Keys are bearer tokens
Anyone with a key can spend it. Store keys in a secret manager, not in code. Revoke a leaked key immediately; the remainder returns to your ledger.
Ledger access
Requires a wallet signature over a message that includes the current hour. Signatures cannot be replayed after that hour.
Contracts
The token and fee escrow will be published with source on the explorer at launch. A security audit has not been completed.
Reporting
Send vulnerability reports to security@watt.so.

Glossary

Allocation
The hours an address receives at one snapshot.
Claim
Moving hours from a ledger onto a key.
Credit
Compute owed to a holder, measured in hours.
Eligible
An address counted in a snapshot.
GPU-second
The metering unit. 3,600 GPU-seconds equal one hour.
Pool
A GPU the protocol runs inference on for many keys.
Pod
A container with one whole and SSH access.
Settlement
The hourly run that purchases compute, snapshots balances and writes credits.

Launch status

Watt is pre-launch. Contracts and the fee escrow are not deployed, the gateway is not accepting keys, and the price shown on this site is an example. This page describes the system as it will operate at launch. Anything that changes before then will be noted here.

Network
Robinhood Chain,
Token contract
Fee escrow
Security audit
not completed