AI News HubLIVE
In-site rewrite3 min read

Show HN: X402vps – Docker containers for AI agents, paid per hour with USDC

X402vps provides on-demand Docker containers for AI agents, paid per hour with USDC on Base mainnet. No signup or API keys needed—your wallet is your identity. Agents request a container, receive a 402 payment challenge, pay with EIP-3009, and instantly get a running environment with optional internet access. Plans range from $0.01/hr (Atom, no internet) to $0.08/hr (Core, 2GB bandwidth).

SourceHacker News AIAuthor: z1z2z3

x402vps — containers for agents. pay per hour.

⚡ X402 · BASE · USDC

DOCKER CONTAINERS

FOR AI AGENTS

PAY PER HOUR

No signup. No API key. No dashboard. Your wallet is your identity. USDC on Base mainnet. Internet access on node & core plans — scrape, fetch, install.

agent@x402vps — bash

MAINNET LIVE · SETTLED ON BASE

HOW IT WORKS

FOUR STEPS. NO HUMANS INVOLVED.

1

Agent Requests

POST /api/create with plan + hours

2

Gets 402

Server responds with USDC payment challenge

3

Agent Pays

Signs EIP-3009 transfer, retries with proof

4

Container Runs

Docker provisioned. Exec + internet — ready

SIMPLE PRICING

PAY PER HOUR. NO SUBSCRIPTIONS. EXEC IS FREE.

ATOM

$0.01/hr

0.1 VCPU · FROM $0.01

CPU 0.1 vCPU

RAM 256 MB

DISK 2 GB

INTERNET NO

BEST FOR SCRIPTS

CELL

$0.02/hr

0.25 VCPU · FROM $0.02

CPU 0.25 vCPU

RAM 512 MB

DISK 5 GB

INTERNET YES

BANDWIDTH 100 MB/hr

BEST FOR APIS

NODE

$0.04/hr

0.5 VCPU · FROM $0.04

CPU 0.5 vCPU

RAM 1 GB

DISK 10 GB

INTERNET YES

BANDWIDTH 500 MB/hr

BEST FOR SCRAPING

CORE

$0.08/hr

1.0 VCPU · FROM $0.08

CPU 1.0 vCPU

RAM 2 GB

DISK 20 GB

INTERNET YES

BANDWIDTH 2 GB/hr

BEST FOR BROWSERS

PREBUILT IMAGES

10 IMAGES. ZERO COLD START. RUN ON MIN TIER OR HIGHER.

alpine alpine:3.19 7 MB atom atom / cell / node / core wget, busybox

httpie x402vps/httpie 25 MB cell cell / node / core curl, httpie, jq, wget

sqlite x402vps/sqlite 250 MB cell cell / node / core sqlite3, python3, pandas

python x402vps/python 200 MB node node / core requests, beautifulsoup4, lxml, httpx

node x402vps/node 300 MB node node / core axios, cheerio, puppeteer-core

go golang:1.23 350 MB node node / core Go 1.23, gcc

chrome x402vps/chrome 600 MB core core only Chromium, Playwright, scrape.py

datascience x402vps/datascience 900 MB core core only pandas, numpy, matplotlib, sklearn

ubuntu ubuntu:24.04 80 MB core core only curl, wget, git, python3, node

rust rust:1.82-slim 1 GB core core only Rust 1.82, cargo

Each image has a minimum tier (RAM needed to run). You can run any image on a higher tier for more CPU/RAM/bandwidth — e.g. {"plan":"core","image":"python"} gives Python with 2GB RAM. Or pass any Docker image name for custom images (slower, pulls from Docker Hub).

SECURITY & INTERNET

ATOM ISOLATED. CELL/NODE/CORE HAVE INTERNET.

INTERNET TIERS (CELL/NODE/CORE)

Outbound HTTP/HTTPS (ports 80, 443, 8080, 8443)

wget / curl allowed for scraping & API calls

Writable rootfs — pip install, npm install

Bandwidth quota per plan, auto-tracked

Overage: $0.01/GB beyond quota

Per-container connection rate limiting

BLOCKED ON ALL TIERS

SMTP ports (25, 465, 587) — no spam

SSH outbound — no tunneling

Mining pools (3333, 4444, 5555, etc.)

IRC & C2 channels

nc, socat, reverse shells

All Linux capabilities dropped

API REFERENCE

JSON IN. 402 OUT. NO BULLSHIT.

GET /api service info + plans FREE

GET /health server health + uptime FREE

GET /api/list list your containers FREE

GET /api/status/:id container status + bandwidth FREE

POST /api/create {plan, image?, leaseHours?} — node/core have internet PAID

POST /api/exec {id, command} FREE

POST /api/extend {id, hours} — extends lease + bandwidth PAID

POST /api/destroy {id} FREE

$ QUICK START

bash

Create a container with internet (node plan, 1hr = $0.04)

curl -X POST https://x402vps.com/api/create \ -H "Content-Type: application/json" \ -d '{"plan":"node","leaseHours":1}'

Scrape a website (free, exec is always free)

curl -X POST https://x402vps.com/api/exec \ -H "Content-Type: application/json" \ -d '{"id":"ctr_4cb194","command":"wget -qO- https://api.github.com/zen"}'

Install packages (writable rootfs on node/core)

curl -X POST https://x402vps.com/api/exec \ -d '{"id":"ctr_4cb194","command":"apk add --no-cache python3"}'

Destroy when done

curl -X POST https://x402vps.com/api/destroy \ -d '{"id":"ctr_4cb194"}'

$ JAVASCRIPT AGENT

agent.js

import { x402Client, x402HTTPClient } from "@x402/core/client"; import { registerExactEvmScheme } from "@x402/evm/exact/client"; import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount("0x..."); const client = new x402Client(); registerExactEvmScheme(client, { signer: account, networks: ["eip155:8453"] }); const http = new x402HTTPClient(client);

// 1. Create a node container WITH internet ($0.04/hr) const resp = await fetch("https://x402vps.com/api/create", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ plan: "node", leaseHours: 1 }) });

// 2. Sign payment → retry with proof const req = JSON.parse(atob(resp.headers.get("payment-required"))); const payload = await client.createPaymentPayload(req); const headers = http.encodePaymentSignatureHeader(payload);

const paid = await fetch("https://x402vps.com/api/create", { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: JSON.stringify({ plan: "node", leaseHours: 1 }) });

const container = await paid.json(); // { id: "ctr_4cb194", status: "running", internet: true, bandwidthUsed: { quotaMB: 500 } }

// 3. Scrape! (exec is FREE) const exec = await fetch("https://x402vps.com/api/exec", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: container.id, command: "wget -qO- https://httpbin.org/ip" }) });

RESOURCES

EVERYTHING AN AI AGENT NEEDS.

[TXT]

LLMS.TXT

Machine-readable summary for LLMs

[MD]

AGENTS.MD

Full integration guide with examples

[URL]

X402.ORG

HTTP 402 payment protocol docs