Ample for developers and agents · Ample Computer
Ample for developers and agents
The CLI, REST API, remote MCP server, agent skills and machine-readable files for building on Ample.
New here? Why developers use Ample
Quick start
$ curl -fsSL https://get.ample.computer/install.sh | sh
$ ample auth signup
$ ample plan --write && ample up
Base URL for the REST API: https://api.ample.computer.
Conventions
- ›ample deploy and ample up are synchronous; exit code 0 is live, 1 failed, 2 blocked on a required action. Never poll by re-running.
- ›Every MCP tool takes an execution_key; reusing it after a disconnect retrieves the result instead of replaying the mutation.
- ›Errors are JSON objects {"error":{"code":"...","message":"..."}}.
- ›Every HTML page on this site has a Markdown alternate: append .md or send Accept: text/markdown.
Deploy over HTTP
No CLI needed: send the app's source as a tar.gz and get back a live URL, or the reason it failed.
$ TOKEN=$(curl -s -X POST https://api.ample.computer/v1/auth/signup -H 'Content-Type: application/json' \
-d '{"name":"my-agent","request_key":"<fresh UUID v4>"}' | jq -r .access_token)
$ tar -czf app.tgz -C ./my-app .
$ curl -X POST https://api.ample.computer/v1/deploy -H "Authorization: Bearer $TOKEN" -H 'Idempotency-Key: my-app-1' \
-F name=my-app -F public=true -F env=API_KEY=... -F source=@app.tgz
# 200 {"status":"live","url":"https://….ample.run","deployment_id":"dep_…","unchanged":false,"execution_id":"run_…"}
# 200 {"status":"failed","error":{"code":"health_check_failed","message":"…","details":{"owner":"app","diagnosis":"…",
# "evidence":[…],"suggested_fix":{"change":"…","confidence":"high"}}},"execution_id":"run_…"}
# 202 {"status":"running","execution_id":"run_…","poll":"/v1/deploy/run_…"}
- ›
Fields: source (the app as a tar.gz, up to 32 MiB), name (letters, digits, -, _, .; deploying the same name again updates that app), public (true or false; web apps are public by default), env (KEY=value, repeatable, stored encrypted) and start (optional: the command that starts the app, listening on $PORT, for a source Ample can't read it from). Needs the servers:read and servers:write scopes.
- ›
Ample detects the stack from the source, builds it and starts it, exactly as ample deploy does.
- ›
The request waits up to 50 seconds. A longer deploy answers 202: GET https://api.ample.computer/v1/deploy/
- ›
status is live, failed or needs_input. On failed, error.details says who must act (owner: app, account, platform or unknown), with a diagnosis, the evidence (such as the app's log tail) and a suggested_fix (change and confidence). On needs_input, error.resolution says what to send; usually it is start, when the source has nothing Ample knows how to start. An unchanged redeploy returns unchanged: true.
- ›
A failed redeploy rolls back to the previous release. When the server has room, Ample first starts the new release beside the live one and switches over only once it answers, so a release that crashes on start never takes the app down.
- ›
Send the same Idempotency-Key (8 to 96 characters) with the same request to retry after a disconnect: it reattaches to the deploy that key started. The same key with a different request answers 409 idempotency_conflict. A deploy of an app that is already deploying answers 409 with that deploy's poll URL.
Resources
- Agent instructionsWhen to use Ample, how to deploy, accounts and scopes./AGENTS.md →
- AuthenticationSelf-serve signup, OAuth client credentials, scoped tokens./auth.md →
- OpenAPI 3.1REST API description for https://api.ample.computer./openapi.json →
- Remote MCPStreamable HTTP endpoint. Setup: https://api.ample.computer/mcp/setup. Tool catalog: https://api.ample.computer/mcp/catalog.api.ample.computer/mcp →
- MCP server cardRegistry-format record of the remote MCP server./.well-known/mcp/server-card.json →
- A2A agentA2A 1.0 over JSON-RPC; the MCP tools as skills. Agent card: https://ample.computer/.well-known/agent-card.json.api.ample.computer/a2a →
- Agent skillsdeploy-app, connect-app-services and migrate-app-components skills for Claude Code, Cursor and Codex./.well-known/agent-skills/index.json →
- Recipe catalog APIPublic JSON catalog of verified deployment recipes; POST /v1/catalog/search to rank by constraints.api.ample.computer/v1/catalog →
- Resource discoveryAgentic Resource Discovery manifest; RFC 9727 catalog at /.well-known/api-catalog./.well-known/ard.json →
- llms.txtCurated site index for language models; llms-full.txt has every guide in full./llms.txt →
- API healthReturns 200 when the API is serving.api.ample.computer/health →
Questions, answered.
More in the deployment guides.
Do I need to know how to code?+
No. Your agent writes the code and launches it on Ample. You describe what you want, try the live app, and ask your agent for changes.
Which agents work with it?+
Claude, ChatGPT, Codex, Cursor and any agent that can run commands. Agents that use MCP can connect to Ample’s remote MCP server instead.
What can I make?+
Websites, web apps, booking pages, APIs, bots, background workers and scheduled jobs, in Node, Python, Ruby, PHP and more, with the databases and storage they need. Ample is not for GPU workloads.
How do I claim my app?+
Open the link your agent gives you. The page shows a “Claim this app” card: enter your email, type the code we send you, and the app is yours. Apps nobody claims are deleted after 48 hours.
Can I give it a name or use my own domain?+
Yes. Once it’s claimed, pick a name at yourname.ample.run, or point your own domain at the app. HTTPS is set up automatically.
What happens when nobody is using my app?+
It sleeps, and wakes on the next visit. Scheduled jobs still run on time, so reminders and reports go out whether or not anyone is on the site.
Is my app safe?+
Each app runs in its own microVM with its own kernel, and its secrets are stored encrypted.
How is Ample different from Vercel, Supabase or AWS?+
Those are separate services for hosting, databases, storage and domains, each with its own sign-up and bill, and a person has to connect them. Ample has all of them in one place your agent can use on its own, and every app gets its own VM.