Spunto Cloud · free during the beta

Sandboxes for your agents on servers you already pay for.

A whole Linux machine per agent — Docker, a persistent disk, a terminal and a URL for every port — on any box you connect. No meter on top: you pay your provider, not us.

$curl -X POST $SPUNTO/api/orgs/acme/projects/agents/workers

# press → to ask for a machine

every sandbox

A whole machine, not a function call.

Agents that run for hours need what a developer needs: a real shell, a disk that stays, and a way for a human to look inside. Each sandbox is a dev environment built from your project’s spec.

docker
Full Docker inside, compose included — not a locked-down runtime
disk
Persistent until you delete it; stop it, start it again in seconds
ports
Every port on its own HTTPS URL, behind your login — nothing to declare
terminal
Sessions that survive a dropped connection, scrollback included
editor
An IDE in the browser, or your own over SSH
network
Its own; nothing published on the host, no neighbour in reach
code
Your repo, on the branch you ask for; pushes as the member who owns it
secrets
Injected as env vars — encrypted, write-only, layered per project
image
Any base image + devcontainer features, prebuilt once per node
commands
exec in the foreground (10 min) or background (24 h), state kept in the machine

for your agent loop

Anything you can click, your code can call.

REST for your orchestrator, MCP for the agent itself. Keys are scoped — read-only, exec, tasks, deployments — and every MCP call is replayed through the same API, so a key can never do more there than over REST.

run something inside
curl -X POST $SPUNTO/api/orgs/acme/projects/agents/workers/k2p9xq/exec \
  -H "Authorization: Bearer $SPUNTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command": "npm test", "background": true}'
153
REST operations, all in the OpenAPI spec
20
MCP tools: machines, commands, logs, ports
15
scopes to cut a key down to size
.mcp.json
{
  "mcpServers": {
    "spunto": {
      "type": "http",
      "url": "https://spunto.net/mcp",
      "headers": { "Authorization": "Bearer spk_…" }
    }
  }
}

the price

No meter running. The machines are yours.

Hosted sandbox APIs rent you their computers by the second. Spunto runs sandboxes on computers you already rent — a Hetzner box, a Google Cloud VM, spot included, the mini PC under the desk. A sandbox idling all night costs nothing extra, and you fit as many on a server as it can hold.

your bill
straight from your provider — no markup on compute
your code
cloned on your nodes, never on ours
your fleet
one command per machine; new sandboxes go to the least busy
on each machine you connect
$ docker run -d --name spunto-agent --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e NODE_TOKEN=<your token> -e API_URL=https://spunto.net \
  ghcr.io/coderhammer/spunto-agent:latest

the dashboard hands you this line with your token filled in — outbound only, no port to open

Google Cloud

created from the dashboard, spot VMs too

Hetzner

sizes and prices shown first

Any Linux box

if it runs Docker, it joins

no agent loop yet?

Hand a task to Claude Code. Watch it work.

Write it in a sentence. It gets a sandbox, a branch and a session you watch live and can interrupt. The machine is still there when it’s done, and nothing merges until you press Accept.

A sentence, a screenshot, a log file. From the dashboard, your phone, or one API call from your own scripts.

spunto.net/dashboard/acme/projects/shop-web/tasks/free-shipping-above-50

new task · shop-web

cart-at-49.90.png212 KB
files base: main Claude Code · Opus 5.5Delegate

or POST /api/orgs/acme/projects/shop-web/tasks from anything that holds a key

built with itself

We don’t demo it. We work in it.

211 of the 382 pull requests merged into our own products were opened by agents working in Spunto sandboxes — including most of a search engine written in Rust, and a good part of this page.

opened by an agent on a Spunto worker opened by a human
  • Spunto Cloud117 of 247
  • Spunto Search44 of 57
  • Spunto CMS27 of 35
  • Spunto Lite23 of 43
211 of 382 merged pull requests · agent = branch opened by a Spunto task or its predecessor pipeline (task/…, notion/…) · counted September 24, 2026

and when it works

Ship it on the same machines.

Group Docker services into a deployment, give it a domain, and it runs on your fleet next to the sandboxes that built it. Point CI at the API and every merge redeploys.

  • Custom domains, verified over DNS, TLS from Let’s Encrypt
  • Pre-deploy hooks, cron jobs, live logs, a terminal into any service
  • Private services: members only, or an API key your scripts send
  • Postgres, Redis, MinIO, RabbitMQ… one click each, on your node

spunto-cms

runningnode test-2
cms.spunto.netTLS · auto-renewedDNS verified
  • proxycaddy:2-alpinepublic
  • next…/spunto-cms/next:3000
  • api…/spunto-cms/api:3001
  • postgrespostgres:17-alpine:5432

a real deployment — Spunto CMS, our Notion-style workspace, running on one of our nodes

before you ask

The honest answers.

How is this different from a hosted sandbox API?

Where it runs and how it's billed. Hosted sandbox APIs run their machines and meter them by the second; Spunto runs yours, so there's no meter on top of what your provider charges. Each sandbox is also a full dev environment a person can open — an IDE, a terminal, SSH, its ports on URLs. What it doesn't do yet: snapshots or forking a running sandbox, and a streamed desktop.

Which agents can use it?

Any agent that can call an HTTP API or an MCP server can create sandboxes and run commands in them. For the built-in tasks, Claude Code works out of the box — Opus, Sonnet, Haiku or Fable, with your own Anthropic API key or Claude subscription token stored as a project secret. Any other command-line agent works as a custom command that reads its prompt on stdin; if it prints Claude-style stream JSON or our JSONL, you watch its session live too.

Where does my code go?

Onto your machines, and nowhere else: repositories are cloned inside workers on the nodes you connect, and the diff you review is read live from the worker. Spunto's servers keep what you'd expect a dashboard to keep — task transcripts, command output, build logs — and your secrets, encrypted and write-only.

Do I need my own servers?

You need somewhere for the work to run, and it's yours: any Linux machine with Docker joins with one command, or Spunto creates the VM for you in your own Google Cloud (spot instances included) or Hetzner account. One small VPS is enough to start.

Does anything get merged without me?

Spunto never does it for you. The agent works on a branch of its own and, by default, is told to commit and push there — nothing more. The task then stops at “in review” and stays there: Spunto never infers “done” from a forge. Only Accept (which runs your command, say gh pr merge) or Drop moves it on, and the machine is kept until then so you can open it and check.

What does it cost?

Nothing during the beta, with no card asked. The first five accounts stay free for good. There's no compute bill from us to begin with — the machines are yours, and you pay your provider directly.

the offer

We want users,
not your card.

Spunto Cloud is free for the whole beta, and the first 5 accounts stay free for good. There’s no compute to charge you for — the machines are yours. What we ask in return is that you use it, and tell us where it falls short.

founding accounts

All taken — and it's still free for the whole beta.

Start free

Rather keep it on your laptop? Spunto Lite is one docker run, MIT, no account.