CrabGlamp

Agents reference

Every CrabGlamp Agent size, region, API endpoint, CLI command, and per-Agent limit in one place. Lookups are organized by size table, region table, API endpoints with request and response shapes, CLI overview, lifecycle states, and limits. Hedged numbers are not allowed — every value has units.

Last updated:

This is the catalog for the Agents surface. For end-to-end walkthroughs, see the Tutorial.

Sizes per region

The numbers below are the conservative floor for each cell — actual vCPU may be one higher in the US cells.

SizeRegionvCPURAMDisk
smallUS34 GB80 GB
smallEU24 GB80 GB
mediumUS48 GB160 GB
mediumEU48 GB160 GB
largeUS816 GB240 GB
largeEU816 GB320 GB

Regions

RegionHetzner locationLatency target
USHillsboro, OR (hil)under 40 ms from US West
EUHelsinki (hel1)under 40 ms from Northern Europe

API endpoints

All Agent endpoints use Clerk session auth — they are dashboard operations, with no on-VM HMAC path for Agent lifecycle. Responses are JSON; error envelope is { error: string, issues?: ValidationIssue[] }.

POST /api/agents

Provision a new Agent. Returns immediately with status provisioning; the VM is created in the background. Poll the agent detail endpoint for status updates.

Request body:

{
  "name": "my-agent",
  "size": "small",
  "region": "us",
  "billingType": "metered"
}

Response 201 (the Agent row, not wrapped):

{
  "id": "<uuid>",
  "name": "my-agent",
  "size": "small",
  "region": "us",
  "billingType": "metered",
  "status": "provisioning",
  "provider": "hetzner"
}

POST /api/agents/[id]/start

Start a stopped Agent. Returns 200 on success.

POST /api/agents/[id]/stop

Stop a running Agent. Returns 200 on success.

POST /api/agents/[id]/restart

Power-cycle a running Agent (stop, then start). The Agent must be running; any other state returns 409. Restart reuses the same image the Agent was provisioned with. Returns 200.

POST /api/agents/[id]/clone

Clone a running or stopped Hetzner-cohort Agent. Body: { "name": "...", "size": "small|medium|large", "billingType": "metered|subscription", "accountId"?: "..." }. The clone inherits the source's region and provider; size can equal or exceed the source's size (no downgrade). Fly-cohort sources return 400. Returns 201 with the new Agent in provisioning.

DELETE /api/agents/[id]

Destroy an Agent. The Agent must be running, stopped, or in an error state — an Agent mid-operation (provisioning, starting, stopping, or being cloned) returns 409. Irreversible. Returns 200; teardown runs asynchronously. A subscribe-and-save Agent's monthly slot stays on your subscription for reuse (remove it from the billing page — see Account & billing); a pay-as-you-go Agent's charges stop at the destroy timestamp.

POST /api/agents/[id]/transfer

Transfer the Agent to another account the user has membership on. Body: { "targetAccountId": "<uuid>" }. The Agent must be in running or stopped state. The target account must be an organization with an active subscription.

PATCH /api/agents/[id]/billing

Switch between metered and subscription. Body: { "billingType": "metered" } or { "billingType": "subscription" }.

CLI overview

The on-VM CLI is installed by the platform and authenticates via the HMAC token. Commands relevant to Agents:

CommandPurpose
crabglampList the available commands (run with no arguments)
crabglamp gatewayRun the proxy gateway for code-server / editor / terminal
crabglamp onboardOne-time setup: installs the OpenClaw skill, seeds TOOLS.md

crabglamp keys *, crabglamp glamp *, and crabglamp apps * are documented in the LLM proxy, GlampHub, and App integrations references respectively.

Lifecycle states

StateMeaningBilled at
provisioningServer being created and configurednothing yet
runningServer up, code-server reachablerunning rate
stoppingTransient — moving to stoppedrunning rate (rounded)
stoppedServer powered off, disk preservedpaused rate (Hetzner: same as running)
startingTransient — moving to runningrunning rate (rounded)
restartingTransient — full cyclerunning rate
destroyingTransient — cleanup in progressnothing
errorA lifecycle action failed; the Agent is not usablenothing

Per-Agent limits

LimitValue
Agent namenon-empty; sanitized into the URL subdomain (≤30 chars)
Persistent volumeper Agent disk size
Provisioning timeout5 minutes (after which cleanup runs automatically)

Related

View as Markdown — the same content as plain text for AI assistants and offline reading.

Was this helpful?