Launching a GPU instance
Already have a configuration that works? Launch it from a template instead of filling the form again.
From the console
- In the console, go to Compute → GPU Instances.
- Click Launch instance.
- Fill in the dialog:
| Field | What it does |
|---|---|
| Name | Friendly label shown in the list. Optional — defaults to "Instance #<id>". |
| Region | Pick from the dropdown of available regions, based on data locality or latency. |
| GPU type | Auto-filled for the selected region. |
| GPU count | 1, 2, 4, or 8. Must not exceed the region's GPUs-per-node. |
| Container image | Pick 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 command | Optional. Overrides the image's default command. Useful to sleep infinity if the image exits otherwise. |
| Estimated duration | Either 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 drives | Block storage volumes (one per instance at a time). Attach new or existing. See Storage. |
| Shared filesystems | Network filesystems (can be attached to multiple instances). Useful for sharing datasets or model weights. |
| Expose a public service URL | Opt-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. |
- 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.
Recommended base images
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.