Crowdsourced inference
Live
Open models served by anyone with a GPU and ollama. No signup, no keys, no logs, pay per token. Node operators see prompts in plaintext, so do not send secrets.
No signup, no keys, no logs. Send an OpenAI-style request, sign one x402 upto authorization with your wallet, and pay only for the tokens you get.
Checking the network…
Live
Open models served by anyone with a GPU and ollama. No signup, no keys, no logs, pay per token. Node operators see prompts in plaintext, so do not send secrets.
Coming soon
The same API on hardware-attested GPU enclaves: the operator cannot read your prompts. Priced at the base rate times a private-tier multiplier.
| Model | Tier | Input | Output |
|---|---|---|---|
| llama3.2:3b | small | 0.05 | 0.10 |
| qwen2.5:7b | small | 0.05 | 0.10 |
| llama3.1:8b | mid | 0.15 | 0.30 |
| qwen2.5:32b | large | 0.50 | 1.00 |
Each request authorises at most 2 USDC and settles only the tokens delivered, rounded up to the nearest 0.000001 USDC. Nodes receive 90% of every settled amount.
Run ollama and the Arcloak node. Every answer your node streams credits the node address in USDC on Arc, and you withdraw from the dashboard.
Run a nodecurl -i https://api.arcloak.net/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"llama3.2:3b","messages":[{"role":"user","content":"Say hello from Arc."}],"max_tokens":64,"stream":true}'import { wrapFetchWithPayment, x402Client } from '@x402/fetch'
import { UptoEvmScheme } from '@x402/evm/upto/client'
import { privateKeyToAccount } from 'viem/accounts'
const signer = privateKeyToAccount(process.env.PAYER_PRIVATE_KEY as `0x${string}`)
const client = new x402Client()
.register('eip155:5042', new UptoEvmScheme(signer))
.setSpendControls({ allowedAssets: [{ network: 'eip155:5042', asset: '0x3600000000000000000000000000000000000000', maxAmountPerPayment: '2000000' }] })
const paidFetch = wrapFetchWithPayment(fetch, client)
const res = await paidFetch('https://api.arcloak.net/v1/chat/completions', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({"model":"llama3.2:3b","messages":[{"role":"user","content":"Say hello from Arc."}],"max_tokens":64,"stream":true}),
})
// res.body is text/event-stream: answer chunks, a usage chunk, then
// {"object":"x402.payment","transaction":"0x…","amount":"…","network":"eip155:5042"} and [DONE].