nodes
browse available compute nodes and operator apis
get available nodes
// Get all online nodes
const { data, pagination } = await client.getNodes({
status: 'online',
page: 1,
limit: 20,
});
// Each node includes:
// - Hardware specs (CPU, RAM, GPU, storage)
// - Location (region, country)
// - Pricing (hourly rate in cents)
// - Current capacityfilter by requirements
// Filter by hardware requirements
const gpuNodes = await client.getNodes({
hasGpu: true,
minGpuVram: 24000, // 24GB VRAM
minCpuCores: 8,
minRamMb: 32000, // 32GB RAM
minDiskGb: 100,
});
// Filter by location and price
const usNodes = await client.getNodes({
region: 'us-east',
maxHourlyRate: 200, // Max $2.00/hour
});
// Combine filters
const ideal = await client.getNodes({
status: 'online',
hasGpu: true,
minGpuVram: 16000,
region: 'eu-west',
maxHourlyRate: 150,
});get node details
// Get specific node details
const node = await client.getNode('node_abc123');
console.log(node.specs.cpuModel); // "AMD Ryzen 9 5950X"
console.log(node.specs.cpuCores); // 16
console.log(node.specs.ramMb); // 65536
console.log(node.gpus[0].name); // "NVIDIA RTX 4090"
console.log(node.gpus[0].vramMb); // 24576
console.log(node.hourlyRateCents); // 150
console.log(node.region); // "us-east"operator apis
if you're a node operator, you can manage your nodes programmatically:
// Register as an operator (one-time)
await client.registerAsOperator({
displayName: 'My GPU Farm',
email: 'operator@example.com',
});
// Register a new node
const { node, apiKey } = await client.registerNode({
name: 'GPU Server 1',
specs: {
cpuModel: 'AMD Ryzen 9 5950X',
cpuCores: 16,
ramMb: 65536,
diskGb: 2000,
},
gpus: [{
name: 'NVIDIA RTX 4090',
vramMb: 24576,
cudaVersion: '12.3',
}],
region: 'us-east',
hourlyRateCents: 150,
});
// Save the API key - used by the node agent!
console.log(`API Key: ${apiKey}`);
// List your operator nodes
const { nodes } = await client.getOperatorNodes({
status: 'online',
});
// Update node settings
await client.updateNode('node_abc123', {
name: 'GPU Server 1 - Updated',
hourlyRateCents: 175,
status: 'maintenance',
});
// Regenerate API key (if compromised)
const { apiKey: newKey } = await client.regenerateNodeApiKey('node_abc123');node types
interface Node {
id: string;
operatorId: string;
name: string;
status: 'online' | 'offline' | 'maintenance' | 'draining';
specs: NodeSpecs;
gpus: NodeGpu[];
region: string;
country: string;
hourlyRateCents: number;
activeDeployments: number;
maxDeployments: number;
uptimePercent: number;
}
interface NodeSpecs {
cpuModel: string;
cpuCores: number;
cpuThreads: number;
ramMb: number;
diskGb: number;
diskType: 'ssd' | 'nvme' | 'hdd';
networkSpeedMbps: number;
os: string;
dockerVersion: string;
}
interface NodeGpu {
name: string;
brand: 'nvidia' | 'amd' | 'intel';
vramMb: number;
cudaCores?: number;
cudaVersion?: string;
}