HydraCore

Quickstart

Deploy your first agent in under 10 minutes — via the dashboard wizard, the API, or an MCP client.

Three paths to the same outcome — a running agent on a per-tenant VPS. Pick the one that fits your workflow:

  • Dashboard wizard — the visual flow. Best for first-time exploration.
  • CLI / API — curl + an API key. Best for scripting and CI.
  • MCP client — drive the platform from Claude Desktop, Cursor, or Goose. Best for "ask the agent to deploy itself".

All three create a per-tenant VPS on Hetzner (or Contabo / Cherry depending on tier), provision WireGuard, mount a Caddy reverse proxy, and start the runtime under systemd.

Prerequisites

  • A HydraCore tenant account with an active subscription on a tier that permits the chosen runtime (openclaw-basic and up).
  • A target customer in your tenant. Admins can deploy on behalf of customers; non-admins always deploy for themselves.
  • Provider credits in your tenant's billing account — Hetzner CX23 is the default smallest plan, billed per minute.

Deploy from the wizard

  1. Pick a template. From the Dashboard, click Deploy New Agent. The first wizard step shows the available recipes. The default personal_assistant is a good starting point.
  2. Pick a runtime. Step 2 only appears when the experimental runtimes flag is enabled (NEXT_PUBLIC_ENABLE_EXPERIMENTAL_RUNTIMES=1). Otherwise the wizard goes straight to configuration with OpenClaw selected.
  3. Configure. Set an agent name, optionally pick a customer to deploy on behalf of, and confirm the tier + region.
  4. Deploy. The provisioning worker walks 17 steps; the wizard's stepper UI shows live progress. Typical end-to-end: 90-180 seconds to running.

Deploy from the CLI

The dashboard isn't a hard dependency. Every wizard step maps to an API endpoint you can hit with curl. Mint an API key first at Settings → API Keys → New key with at minimum instances:write, instances:read, and chat:invoke scopes.

1. List recipes

export HC_API="https://api.hydracore.io"
export HC_KEY="hc_live_..."

curl -s -H "X-Api-Key: $HC_KEY" "$HC_API/v1/recipes" \
  | jq '.[] | {slug, name, runtime_manifest_id}'

Pick a slug — e.g. personal_assistant.

2. List tiers

curl -s -H "X-Api-Key: $HC_KEY" "$HC_API/v1/catalog/tiers" \
  | jq '.[] | {id, slug, name, billing_cycle}'

Copy the id of the tier whose manifest_id matches the recipe's runtime (e.g. openclaw-basic for the personal_assistant default).

3. Deploy

curl -s -X POST -H "X-Api-Key: $HC_KEY" \
  -H "Content-Type: application/json" \
  "$HC_API/v1/instances" \
  -d '{
    "agent_name": "my-first-agent",
    "recipe_slug": "personal_assistant",
    "product_tier_id": "<tier UUID from step 2>",
    "region_id": "nbg1"
  }'

The response is 202 Accepted with a task_id + idempotency_key. The provisioning runs asynchronously; the response shape includes an instance_id you can poll. If the response doesn't carry one, fetch it via the idempotency key:

curl -s -H "X-Api-Key: $HC_KEY" \
  "$HC_API/v1/instances/by-key/<idempotency_key>"

4. Wait for running

INSTANCE_ID="<from step 3>"
while true; do
  status=$(curl -s -H "X-Api-Key: $HC_KEY" \
    "$HC_API/v1/instances/$INSTANCE_ID" | jq -r .status)
  echo "status=$status"
  case "$status" in
    running)              break ;;
    failed|error|deleted) echo "terminal: $status"; exit 1 ;;
  esac
  sleep 5
done

90-180 seconds is typical. If you hit failed, the response body carries an error_class you can grep through the dashboard Activity tab for context.

5. Send your first turn

curl -s -N -X POST -H "X-Api-Key: $HC_KEY" \
  -H "Content-Type: application/json" \
  "$HC_API/v1/instances/$INSTANCE_ID/chat" \
  -d '{"message": "Hello! What can you do?"}'

-N disables curl's output buffering so SSE chunks stream as they arrive. Same wire shape regardless of which runtime answers.

Deploy from an MCP client

If you have Claude Desktop, Cursor, or Goose set up with the HydraCore MCP server (see MCP setup), you can do all five CLI steps in plain English:

"Deploy a personal_assistant agent on the smallest openclaw tier in the nbg1 region. Call it my-first-agent. Tell me when it's running."

The MCP tools (list_recipes, list_tiers, create_instance, get_instance, chat_with_instance) map 1:1 to the curl commands above. Scope filtering at startup means the client only ever surfaces tools your API key can actually call.

What's next

  • Runtimes — switch to a different runtime with the manifest_id field in the recipe or wizard.
  • Architecture — understand the composition model so you can author your own recipes.
  • API Reference — the full endpoint list with auth, errors, and pagination.