Compute providers
The execution fleet is open: any operator can register a machine, claim eligible executions, run them in the standard hardened runtime, and earn 10% of every execution they serve — as a real, immediately spendable ledger credit, never an IOU.
Registering
self-registration
POST /api/cloud/v1/providers/register
{
"address": "anim1…", // your bech32m ANM payout address (required)
"token": "<your bearer, >=32 chars>", // or omit and the server mints one — shown ONCE
"name": "rack-3",
"capabilities": ["python3.12"],
"cpu_cores": 8, "memory_mb": 16384, "gpu": null
}- Only the SHA3-256 of your bearer token is stored. The token authenticates every subsequent call.
- Registration is idempotent on the token — re-registering updates your capabilities and specifications.
The job loop
claim → run → report
# the provider loop
while true:
job = POST /providers/claim # atomic claim + lease; 204 = nothing to do
if job:
run job.payload in the SAME hardened runtime image # GET /providers/runtime
POST /providers/heartbeat { job_id } # extend the lease while running
POST /providers/result { job_id, status, result, stdout, logs, usage }
sleep(poll_interval)| mechanism | value | why |
|---|---|---|
| claim | atomic SKIP-LOCKED | two providers can never grab the same job |
| lease | 300s, extended by heartbeat | a crashed provider’s job requeues instead of hanging |
| attempts | 3 | bounded retries; then the job expires and the execution fails honestly |
| staleness | 120s without heartbeat → IDLE | dispatch skips silent machines |
| priority | the CALLER’s plan priority class | paid tiers run first when the queue is contended |
What gets dispatched to the fleet
Dispatch is conservative — an execution goes to the fleet only when ALL of these hold:
- the compute market is enabled, and at least one provider is online;
- the function declares no capabilities (host-API calls need the gateway broker, which never leaves the platform);
- the function uses no secrets (secrets never leave the gateway);
- it is a paid third-party call (there is revenue to fund the provider share — own-function and free-tier runs stay local);
- the developer's in-flight fleet admission cap is not exceeded.
Everything else runs on the platform's local sandbox lane with identical isolation.
Earnings
- Your share is 10% of the customer's payment for each execution you served, settled in the same exactly-once transaction as the developer's share and the platform fee.
- It lands as a
SALE_CREDITon the ledger account linked to your payout address — spendable immediately, withdrawable like any balance. Provider compensation can never exceed the revenue allocated to compute (fee + provider share ≤ 100% is enforced). - Results are verified structurally (size caps, status transitions) and reputation-tracked; failed or expired jobs count against reputation, and dispatch skips providers below the floor.
Providers must run the standard runtime image (
GET /providers/runtime tells you which) with the same hardening the platform applies — the job payload contains the artifact reference and the packed call, never plaintext secrets. See Security.