Safeera Cloud V2 SDK — GPU Buyer Guide
Programmatic SDK and REST API for provisioning live 30-second heartbeat-verified NVIDIA Blackwell RTX PRO 6000 GPUs (0.5x 48 GB CUDA MPS, 1x 96 GB, and 2x 192 GB) with Safeera's 6-Stage Ephemeral-OS + Persistent /data architecture.
Live 30s-Verified GPU Inventory
listAvailableConfigs() returns strictly configurations backed by physical hosts verified online within the last 30 seconds. During Beta, all compute configurations default to $0.00 / GPU-hr.
1-Click or Custom SSH Keys
Pass your own ssh-ed25519 public key, or set generateKeypair: true to have Safeera generate a fresh keypair and return generatedPrivateKey once for immediate SSH login.
Ephemeral OS + Persistent /data
Every start and reboot boots a pristine OS root from the pre-built GPU template and re-runs Stage-1 & Stage-2 init while keeping your persistent /data volume intact.
1. Quickstart (Node.js ESM SDK)
import { SafeeraClient } from '@safeera/sdk';
const client = new SafeeraClient({
baseUrl: 'https://master.safeera.ai',
origin: 'https://master.safeera.ai'
});
// Authenticate session
await client.authenticate({ username: 'owner', password: process.env.SAFEERA_PASSWORD });
// 1. List strictly live, 30s-verified GPU configurations ($0.00/hr Beta default)
const configs = await client.listAvailableConfigs();
console.table(configs);
// 2. Option A: Generate a fresh Ed25519 SSH keypair on the platform (private key returned once)
const { profile, generatedPrivateKey } = await client.createSshProfile({
name: 'my-auto-key',
username: 'safeera',
generateKeypair: true
});
console.log('Save your private key (.pem):\n', generatedPrivateKey);
// 3. Launch 1x2 GPU (192 GB VRAM), 2x1 GPU (96 GB each), or 4x0.5 GPU (48 GB CUDA MPS each)
const launch = await client.launchInstance({
name: 'trainer-blackwell',
family: 'rtxpro',
region: 'eu-north',
count: 2, // 0.5 (48 GB) | 1 (96 GB) | 2 (192 GB)
quantity: 1,
profileId: profile.id,
diskGib: 64
});
const [vm] = await client.waitForReady(launch.createdIds);
console.log('SSH ready:', vm.sshCommand);
2. SSH Key Options (Paste Public Key vs. Auto-Generate Keypair)
| Mode | Request Payload | Behavior |
|---|---|---|
| User-Supplied Public Key | { username: "safeera", publicKey: "ssh-ed25519 AAAA..." } |
Validates public key format (rejects private keys) and injects into ~/.ssh/authorized_keys during Stage-1 boot. |
| Platform-Generated Keypair | { username: "safeera", generateKeypair: true } |
Generates a fresh ed25519 keypair, injects the public key into the VM, and returns generatedPrivateKey once in the response for .pem download. |
3. 6-Stage Ephemeral-OS VM Lifecycle Reference
| Action | SDK Method / REST Endpoint | OS Root Disk Behavior | Persistent /data Volume Behavior |
|---|---|---|---|
| Launch | client.launchInstance(opts)POST /api/compute/launch |
Deploys fresh OS root from pre-built GPU template + runs Stage-1 init (/var/lib/safeera/stage1.done). |
Creates/formats ext4 volume, mounts at /data, runs /data/.safeera/on-restore.sh (stage2.done). |
| Stop | client.machineAction(id, 'stop')POST /api/compute/machines/:id |
Gracefully syncs & unmounts /data, then destroys/expunges the OS root VM (compute billing stops). |
Detached and preserved intact in storage pool. |
| Start | client.machineAction(id, 'start')POST /api/compute/machines/:id |
Deploys a brand-new OS root from the pre-built template and re-runs Stage-1 init. | Re-attaches existing /data volume and re-runs Stage-2 on-restore.sh. |
| Reboot | client.machineAction(id, 'reboot')POST /api/compute/machines/:id |
Replaces OS root from pre-built template (new boot_id) and re-runs Stage-1 init. |
Preserves and re-mounts /data, re-running Stage-2 init. |
| Snapshot | client.machineAction(id, 'snapshot', { snapshotName }) |
No impact on running OS. | Records point-in-time snapshot of persistent /data volume. |
| Delete | client.machineAction(id, 'delete', { deleteDisk: true }) |
Expunges OS root VM and releases NAT/elastic IP rules. | Deletes volume if deleteDisk: true, or keeps detached volume if false. |
4. Verified Hardware Profiles (Helsinki eu-north)
| Profile | GPU Count | VRAM per VM | Isolation Mode | Beta Default Price |
|---|---|---|---|---|
1x2 GPU | 2 | 192 GiB | Full dual-GPU allocation | $0.00 / hr |
2x1 GPU | 1 | 96 GiB | Dedicated single-GPU allocation | $0.00 / hr |
4x0.5 GPU | 0.5 | 48 GiB (49,152 MiB) | CUDA MPS 50% active thread & 48 GiB memory cap | $0.00 / hr |