A short tour of everything Enverge Cloud does today: instances, the 2× DGX Spark cluster, the queue, reservations, startup scripts, SSH keys, billing, teams, usage history, and account basics.
An instance is a containerized GPU sandbox running on dedicated hardware. Each instance has a name, one attached SSH key, and a selected GPU type.
If a type has no free capacity, your launch falls back to the queue instead of failing. Current hourly rates for every type live on the pricing page.
Once launched, an instance stays available until you delete it. Dashboard status badges reflect live container state (running, exited, unknown).
Running instances expose an SSH snippet in the format ssh user@<hostname>.ssh.enverge.dev. The first connect after a create or restart can take up to a minute while relay state settles.
Already SSH'd in?
After login, the cluster banner points to /etc/enverge/cluster.md on your instance: rail IPs, worker SSH, and a sample torchrun command with this VM's addresses filled in (you still bring your own script). This page is the generic reference, that file is instance-specific.
A 2× DGX Spark instance is a two-node GPU cluster behind a single SSH endpoint. You land on node0 (the head). A second Spark (node1, the worker) is attached over a ~200 Gb/s RoCE fabric. You do not SSH to the worker directly, you launch a distributed job from node0 and it uses both GPUs.
nvidia-smi shows one GPU
nvidia-smi on node0 reports one GB10 (~128 GB unified). The second GPU lives on the worker, reachable only through a sharded multi-node job (tensor or pipeline parallel, FSDP, DeepSpeed, vLLM multi-node, Ray). A plain python train.py uses only node0 and leaves the worker idle.
The tier advertises 256 GB unified memory, which is aggregate across two 128 GB pools joined by the fabric, not one flat address space. No single process or tensor can exceed ~128 GB. Use model parallelism or sharding to spread work across both nodes.
/etc/nccl.conf). NCCL auto-discovers the fabric, no manual NCCL_IB_* exports needed.VLLM_HOST_IP, preset to this node's rail IP (from /etc/profile.d/enverge-cluster.sh) so vLLM's multi-node control plane advertises the correct address instead of the default-route interface./etc/enverge/cluster.md on the instance for this VM's rail IPs and worker address.Launch rank 0 here and rank 1 on the worker over the rail. Any NCCL-based stack works once the workload is sharded. The shape is:
torchrun --nnodes=2 --nproc_per_node=1 --node_rank=0 \
--rdzv_endpoint=<node0-rail-ip>:29400 your_job.pyyour_job.py is your distributed script, nothing is pre-installed to run for you. Set --node_rank=1 on the worker, or let Ray or mpirun spawn the remote rank via the pre-configured rail SSH. Replace <node0-rail-ip> with this instance's rail-2 address (see /etc/enverge/cluster.md for the filled-in template, or ip -4 addr show enP2p1s0f0np0).
Cap GPU memory utilization
On GB10, “GPU memory” is unified with system RAM. Settings that grab all GPU memory, for example vLLM gpu_memory_utilization (default 0.9), can reach for ~110 GB and get killed by the host memory guard. Use a conservative cap (~0.5, never 0.9) on memory-heavy jobs.
There is no cluster-wide shared filesystem yet. Model weights, datasets, and code must be present on each node, or downloaded separately. Plan for N× download size when pulling large checkpoints.
When capacity is unavailable, a launch request enters a queue instead of failing. Queue order is first in, first out per GPU type.
Queue wait time is free
Billing starts only when an instance is actually created.
Need a Spark for 5 days or fewer? Reserve one instead.
The queue has no promised start time, so under heavy demand a wait can run from hours to days. If you know the window you need, a reservation gives you a guaranteed Spark for 1 to 5 consecutive days rather than a place in line.
A reservation books a dedicated Spark for a fixed block of days. Where the queue trades certainty for a free wait, a reservation is the opposite trade: you pay up front and the hardware is guaranteed to be yours for the window you picked.
Reserve when the deadline matters, queue when it doesn't
Reservations cover 1 to 5 consecutive days. For anything longer, or for work with no fixed date, the queue is the better fit.
Reserving is a separate flow from requesting datacenter capacity (H100, H200, B300, RTX Pro 6000), which is arranged with us directly rather than booked self-serve.
A startup script is optional free-text shell that runs once inside a fresh instance after it is created. Use it so a box launched from the queue, often while you are offline, arrives already warming the GPU or serving a model instead of sitting idle until you SSH in.
The field starts empty. Nothing runs unless you put something there. What runs is exactly the text in the editor: templates only pre-populate it, nothing stores which template you picked.
In the create or queue panel, open + startup script (optional). Start from a template or write your own. Setup minutes are billed like any other minute on a live instance.
While an entry is queued it has not launched yet, so the script is still yours to change: use add / edit startup script on the queued card. Whatever is saved when capacity opens is what runs, and clearing the box means nothing runs.
No secrets in the script
Do not put API keys, tokens, or passwords in it. Prefer ungated models, or fetch credentials yourself after you SSH in.
vllm serve then starts against a warm cache, and the script prints that command for you. Model and image are variables at the top.Nested Docker needs the nvidia runtime and NVIDIA_VISIBLE_DEVICES, not --gpus all. The serve command the download template prints already uses the correct form.
user (a login shell, so CUDA is on PATH). Capped at one hour, a hung script is stopped and marked timed out.The runner reports what it observed, not that your workload is “ready”. A script that backgrounds a server can exit 0 while the server is still loading. The log is the authority.
startup line: script running, script finished, script timed out, or script stopped.# watch
tail -f /var/log/enverge/startup.log
# stop the oneshot unit (frees its GPU work)
sudo systemctl stop enverge-startup
# if your script left a docker container running, use its stop hint instead
# (shown on the banner while the script is running), e.g.:
docker stop my-containerSSH keys are managed during instance creation through a named key picker.
Billing is metered by usage and settled through Stripe. A session is billed from create to delete. Rates per GPU type are on the pricing page.
Restart does not stop billing
Only deleting an instance ends billing for that session.
Until a card is on file, launch and restart are gated. Add one from the dashboard banner or the billing section in your user menu.
On a team, only the owner adds or manages the card. Members see read only “billing managed by {team}” copy instead.
Queueing itself is free, and payment method checks happen when an instance launches. Reservations are the exception: they are charged up front at checkout, not metered per minute.
A team lets several people share one payment method. Everyone launches their own instances, usage is tracked per person and billed to the team. Open team from the user menu in the app.
Any signed-in user without an active team can create one from team in the user menu. You become the owner. If you already had solo billing, it moves to the team, you are not billed twice.
No card yet?
Members see a warning banner when the team has no payment method. Only the owner can add one, from the dashboard billing menu or the team page note.
Usage pages show both runtime sessions and queue history. Team members see only their own sessions and queue history, while the team owner sees per-member totals on the team page.