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)
mechanismvaluewhy
claimatomic SKIP-LOCKEDtwo providers can never grab the same job
lease300s, extended by heartbeata crashed provider’s job requeues instead of hanging
attempts3bounded retries; then the job expires and the execution fails honestly
staleness120s without heartbeat → IDLEdispatch skips silent machines
prioritythe CALLER’s plan priority classpaid 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_CREDIT on 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.