Skip to main content

Launching a GPU instance

Already have a configuration that works? Launch it from a template instead of filling the form again.

From the console​

  1. In the console, go to Compute → GPU Instances.
  2. Click Launch instance.
  3. Fill in the dialog:
FieldWhat it does
NameFriendly label shown in the list. Optional — defaults to "Instance #<id>".
RegionPick from the dropdown of available regions, based on data locality or latency.
GPU typeAuto-filled for the selected region.
GPU count1, 2, 4, or 8. Must not exceed the region's GPUs-per-node.
Container imagePick a platform image from the dropdown, or enter any public image URL. Platform images include OpenSSH; most third-party ones don't (see Recommended base images). See Container Images for saved ones.
Startup commandOptional. Overrides the image's default command. Useful to sleep infinity if the image exits otherwise.
Estimated durationEither a fixed run of 1–72 hours — the auto-stop time; the instance terminates when it elapses unless you extend — or No end time: the instance runs until you terminate it and is billed hour by hour. See Duration and extending.
Cloud drivesBlock storage volumes (one per instance at a time). Attach new or existing. See Storage.
Shared filesystemsNetwork filesystems (can be attached to multiple instances). Useful for sharing datasets or model weights.
Expose a public service URLOpt-in checkbox. Tick it to mint a public URL at launch and enter the service port your container listens on. Leave it unticked for a private dev box — you can open the URL later from the detail page.
  1. Click Launch.

Once launched, the instance starts in pending status. Within ~30 seconds to 2 minutes (depending on image pull time), it transitions to running. You'll see it on the GPU Instances page with a green dot.

Credit check at launch​

At launch time, EcoLink places a credit hold equal to hourly_rate × gpu_count × estimated_duration_hours — or, with No end time, one hour's worth. The launch dialog shows the per-GPU rate and the total hold for your selection.

If your balance is less than this, the launch fails with:

HTTP 402 Payment Required
{ "error": "insufficient credit balance" }

The held amount is refunded (minus actual usage) when the instance terminates. See How billing works for details.

From the API​

You can also launch via the API:

curl https://api.ecohash.com/gpu-instances \
-X POST \
-H "Authorization: Bearer eco_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "my-dev-box",
"region_id": "<region-id>",
"gpu_type": "<gpu-type-for-region>",
"gpu_count": 1,
"container_image": "public.ecr.aws/a2b7e2y7/ecolink/gpu-base:v0.1.0",
"estimated_duration_hours": 0
}'

Response:

{
"id": 142,
"status": "pending",
"region_id": "<region-id>",
"gpu_type": "<gpu-type-for-region>",
...
}

estimated_duration_hours: 0 is No end time; 1–72 is a fixed run. The key needs Compute access — the full schema, the rest of the lifecycle (get, SSH command, terminate) and the MCP server for coding agents are in GPU instances API.

Public URL for an HTTP service in your container​

If your container exposes an HTTP service (a notebook UI, a custom inference API, ComfyUI, etc.), EcoLink can mint a public URL for it at:

https://api.ecohash.com/gpu-instances/{instance_id}/service/

The URL is authenticated — requests must carry your console session cookie or an Authorization: Bearer eco_YOUR_KEY header. WebSocket and streaming responses both work.

You can open the URL at launch by ticking the "Expose a public service URL" checkbox and entering the port your service listens on, or later from the instance detail page once it's running. The detail page shows a Create endpoint form when no URL is set, and the URL with a copy button once it is. You can change the port at any time by re-submitting the form; the URL stays the same.

Public URL config persists across stop / resume — the URL doesn't change when you stop and resume an instance.

The image dropdown lists the EcoLink platform images. They are built for these GPUs, include OpenSSH (needed for SSH access), and are the right default:

  • GPU Base (CUDA 12.8 + PyTorch): public.ecr.aws/a2b7e2y7/ecolink/gpu-base:v0.1.0 — general development
  • GPU Base (CUDA 13.0 + PyTorch): public.ecr.aws/a2b7e2y7/ecolink/gpu-base-cu130:v0.1.0
  • GPU Jupyter: public.ecr.aws/a2b7e2y7/ecolink/gpu-jupyter:v0.1.0 — JupyterLab, opens a Jupyter URL automatically
  • GPU Inference (vLLM, CUDA 13): public.ecr.aws/a2b7e2y7/ecolink/gpu-inference:v0.2.0 — serve a model with vLLM
  • CUDA Bare (CUDA 13.0): public.ecr.aws/a2b7e2y7/ecolink/gpu-cuda:v0.1.0 — no framework, bring your own

Any publicly pullable image also works (nvidia/cuda:…, pytorch/pytorch:…, ghcr.io/ggerganov/llama.cpp:full-cuda, your own on Docker Hub / ECR / GHCR). Two things to know about third-party images: most don't include OpenSSH, so SSH won't connect — use the browser terminal or a platform image; and many exit immediately unless you set the startup command to sleep infinity.

If the container image includes jupyter in its name, EcoLink automatically provisions a Jupyter URL — see Jupyter.

What to do next​

Your privacy choices

Essential cookies are always on. You can change these choices at any time.