VPS for agents. By agents.
No signup. No GUI. No KYC. Pay with x402. Deploy from code.
# Deploy a VPS in one HTTP request $ curl -X POST https://spawn.prim.sh/v1/instances \ -H "X-402-Payment: $PAYMENT_TOKEN" \ -d '{"image": "ubuntu-24.04", "plan": "s-1vcpu-1gb"}' # Response (402 → pay → 201) { "id": "inst_k7x9m2", "ipv4": "198.51.100.1", "ssh_key": "ssh-ed25519 AAAA...", "status": "provisioning", "ready_at": "~45s" }
x402 auth + payment
REST + MCP API
0 signup required
CLI admin only
OpenAI compatible
↓ scroll

How it works

1
HTTP request
402
Payment required
Micropayment
201
VPS running

No account. No API key. No dashboard. Just pay and compute.

Three interfaces, zero GUIs

REST API

Standard HTTP. Create, list, resize, snapshot, destroy instances. x402 payment on every mutating request. JSON in, JSON out.

MCP Server

Model Context Protocol tools. Any MCP-compatible agent can spawn infrastructure as naturally as calling a function. spawn_instance, exec_command, destroy_instance.

OpenAI-Compatible

Drop-in replacement for tool-use schemas. Works with any agent framework that speaks the OpenAI function calling spec.

# MCP — agent spawns its own infrastructure
tools:
  spawn_instance:
    image: "ubuntu-24.04"
    plan: "s-2vcpu-4gb"
    ssh_keys: ["ssh-ed25519 AAAA..."]
    user_data: "#!/bin/bash\napt install -y python3..."

  exec_command:
    instance: "inst_k7x9m2"
    command: "python3 train_model.py --epochs 100"

  destroy_instance:
    instance: "inst_k7x9m2"

What agents can do

Self-replicate

An agent spins up a VPS, installs itself, runs a task, tears it down. No human in the loop.

Scale horizontally

Need 50 workers? Spawn 50 instances. Fan out, collect results, destroy. Pay per second.

Deploy services

Ship a web app, database, or API endpoint. Get a public IP. No Heroku, no Vercel, no YAML.

Isolated environments

Run untrusted code in disposable VMs. Each instance is a fresh machine with its own IP and filesystem.

Build other agents

Agent A deploys Agent B on a new VPS. Agent B deploys a database. Recursive infrastructure.

Stay anonymous

No account, no email, no identity. x402 payment is the only credential. Agents don't have passports.

API reference

# All endpoints. That's it.

POST   /v1/instances          # Create instance
GET    /v1/instances          # List instances (by payment identity)
GET    /v1/instances/:id      # Get instance details
POST   /v1/instances/:id/exec # Execute command via SSH
PUT    /v1/instances/:id      # Resize / modify
DELETE /v1/instances/:id      # Destroy instance
POST   /v1/instances/:id/snap # Create snapshot
GET    /v1/snapshots          # List snapshots
GET    /v1/plans              # Available plans + pricing
GET    /v1/images             # Available OS images
GET    /v1/regions            # Available regions

# Auth: every mutating request returns 402 first.
# Pay via Lightning, Base L2, or Stripe.
# Payment receipt = identity = ownership proof.

Pricing

Pay per second. No minimums. No commitments. x402 micropayments.

PlanCPURAMStorage$/hour
s-1vcpu-512mb1 vCPU512 MB10 GB$0.007
s-1vcpu-1gb1 vCPU1 GB25 GB$0.012
s-2vcpu-4gb2 vCPU4 GB50 GB$0.036
s-4vcpu-8gb4 vCPU8 GB100 GB$0.071
s-8vcpu-16gb8 vCPU16 GB200 GB$0.143
gpu-a10-24gb8 vCPU32 GB200 GB$1.10

Bandwidth: $0.01/GB. Snapshots: $0.05/GB/mo. All prices in USD.

Why x402

The internet has a status code for payments. It's been reserved since 1997. HTTP 402: Payment Required.

Every other cloud provider requires: an email, a password, a credit card, KYC verification, an API key, a dashboard, a billing page, a support ticket system. Agents don't have emails.

x402 is the missing piece. Agent sends request → server returns 402 with payment details → agent pays (Lightning/L2/Stripe) → server returns the resource. The payment IS the authentication.

No account. No API key. No session. No cookies. Every request is self-contained. The payment receipt proves you paid, identifies your resources, and authorizes access. Stateless compute for stateless agents.

# The x402 flow

1. POST /v1/instances
   → 402 Payment Required
   → {"price": "0.012", "currency": "USD", "networks": ["lightning", "base"]}

2. Agent pays $0.012 via Lightning
   → receives payment_token

3. POST /v1/instances
   X-402-Payment: lnbc120n1p...
   → 201 Created
   → {"id": "inst_k7x9m2", "ipv4": "198.51.100.1"}

# The payment token is your identity.
# Same token on GET /v1/instances → your instances.
# Lost token = lost access. Agents handle their own keys.

Admin CLI

For operators running spawn.sh nodes. Not for end users (agents are the end users).

$ spawn node add --region nyc1 --provider hetzner
$ spawn node list
$ spawn node drain nyc1-04
$ spawn capacity --region all
$ spawn audit --last 24h
$ spawn pricing set s-1vcpu-1gb --hourly 0.012
$ spawn payments reconcile --network lightning

Compute should be an HTTP request.

No sign-up page because there's nothing to sign up for. Just point your agent at the API and pay.

Read the docs →

or just: curl https://spawn.prim.sh/v1/plans