Skip to main content

Launching a GPU instance

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 imageDocker image URL (e.g., nvidia/cuda:12.3.2-cudnn9-devel-ubuntu22.04). See Container Images for saved ones.
Startup commandOptional. Overrides the image's default command. Useful to sleep infinity if the image exits otherwise.
Estimated durationHours. 1 hour minimum. This is the auto-stop time — the instance will terminate when it elapses unless you extend.
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. 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": "nvidia/cuda:12.3.2-cudnn9-devel-ubuntu22.04",
"startup_command": "/bin/bash -c \"sleep infinity\"",
"estimated_duration_hours": 2
}'

Response:

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

See the full POST /gpu-instances schema in API Reference.

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.

  • General CUDA dev: nvidia/cuda:12.3.2-cudnn9-devel-ubuntu22.04
  • Jupyter + PyTorch: quay.io/jupyter/pytorch-notebook:cuda12-latest
  • vLLM serving: vllm/vllm-openai:latest
  • Llama.cpp: ghcr.io/ggerganov/llama.cpp:full-cuda
  • Your own: push to Docker Hub / ECR / GHCR, make sure it's publicly pullable, then reference it here

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

What to do next