A volunteer compute grid. Visitors' browsers contribute GPU and CPU time, and the whole pool is exposed as one virtual accelerator: load a model by name, submit graphs of operations, decode tokens on the server.
Every compute call needs an API key, and keys belong to accounts. Accounts are by invitation: there is no public sign-up. Contact the owner of this grid, say who you are and what you want to run, and they will send you a temporary username and password (good for 7 days).
curl -X POST https://YOUR-HOST/api/auth/login -H "Content-Type: application/json" -d '{"username":"guest-amber-x7k2","password":"tmp-amber-birch-…"}'
# { "token": "mps_...", "setupRequired": true }
curl -X POST https://YOUR-HOST/api/auth/complete-setup -H "Authorization: Bearer mps_..." -H "Content-Type: application/json" -d '{"newPassword":"a long password of your own"}'
# { "token": "mps_...", ... } your session for the next 7 dayscurl -X POST https://YOUR-HOST/api/account/keys -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"label":"laptop"}'
# { "key": "mpakt_...", ... } shown oncex-api-key on every compute call.New accounts are unverified: they can use the AI API, the chat and Compute boxes, but downloading the volunteer program, giving a Compute box internet access, running containers, using your own domain and the chat's tools wait until the owner verifies the account.
Already have a key from before accounts? It still exists, on an account of its own, and works again once the owner approves that account. To sign in to that account, use Set up its account on /account (or POST /api/auth/claim) with the key and a new password.
curl https://YOUR-HOST/api/v3/status -H "x-api-key: mpakt_..."
curl -X POST https://YOUR-HOST/api/v3/graph -H "x-api-key: mpakt_..." -H "Content-Type: application/json" \
-d '{"graph":{
"inputs":[{"name":"x","shape":[2,3],"data":[1,2,3,4,5,6]},
{"name":"w","shape":[3,2],"data":[1,0,0,1,1,1]}],
"steps":[{"op":"matmul","in":["x","w"],"out":"h"},
{"op":"gelu","in":["h"],"out":"y"}],
"outputs":["y"]}}'
From there: load a model straight from Hugging Face, keep a KV cache in a session, and decode on the server so a whole generation is one request. Architectures maps HF config fields — rope scaling, sliding windows, softcapping, ALiBi, MoE — onto operation parameters.
Point a box at a public GitHub repository — a static site, a JavaScript or Python handler, or a container — and the grid runs it on a volunteer's device whenever someone visits its address. You pay in credits (1,000 credits = US$1) for what runs; nothing is stored between requests. Containers run on installed volunteers with Docker, or in a browser's emulated 32-bit Linux. Boxes have no internet unless you turn it on, and then it goes through Tor. Volunteers can see the code and traffic of the boxes they run, so keep secrets out of them. Start at /compute; the API is in the documentation.
clients/mpakt_grid.py, standard library only: Account for sign-in and keys, VirtualGPU and Graph for everything else.mcp/server.js gives a language model the grid as tools: GRID_HOST=https://YOUR-HOST GRID_KEY=mpakt_... node mcp/server.js.<script src="https://YOUR-HOST/client.js" async></script>
Visitors are shown a notice and can opt out. If you have an account, add your volunteer code (data-account="vc_...") and the work is credited to it. Details, and what runs on their device, are on the volunteer script page and the participation agreement.
To contribute your own computer instead, download the volunteer program (for verified users — sign in with a verified account). It uses every CPU, GPU, TPU and NPU it can find, up to the share of free capacity you set, and on Linux with Docker it can also run Compute boxes. Work done under your account's volunteer code earns Compute credits and, over time, a contributor tier with discounts and card-purchase bonuses.
On first start the server creates the owner account, tnme, with no password, and writes a one-time setup code to data/owner-setup-code, readable only by the service user. Sign in at /account with just the username: the page asks for the code and a new password. The code is deleted once used. From a terminal:
npm run admin -- setup # on the server; or POST {"code","password"} to /api/auth/setup
npm run admin -- invite "for alice" # a temporary username and password to send her (shown once)
npm run admin -- verify alice # may download the volunteer, give boxes internet, run containers, use chat tools
npm run admin -- credits alice 5000 # Compute credits
npm run admin -- accounts # also: pending, approve, reject, disable, enable, delete
Invitations, verifying, approving, disabling and deleting accounts are also buttons on /account when signed in as the owner, and /api/admin endpoints; see Accounts. Disabling or deleting an account stops its keys immediately and releases every model, session and compiled graph it holds.
Machine-readable: /llms.txt · /api/ops · /api/versions · /api/health