API Reference

Complete reference documentation for the Noid TypeScript SDK.

NoidClient

The main client class for interacting with Noid server.

Constructor

new NoidClient(options: NoidClientOptions)

Parameters:

ParameterTypeDescription
optionsNoidClientOptionsClient configuration options

NoidClientOptions:

PropertyTypeRequiredDefaultDescription
serverUrlstringYes-Noid server URL
tokenstringYes-API authentication token
timeoutnumberNo30000Request timeout in milliseconds
retriesnumberNo3Number of retry attempts
retryDelaynumberNo1000Delay between retries in ms

Example:

const client = new NoidClient({
  serverUrl: 'http://localhost:7654',
  token: 'your-api-token',
  timeout: 60000,
});

VM Operations

createVM()

Create a new microVM.

client.createVM(options: CreateVMOptions): Promise<VM>

Parameters:

PropertyTypeRequiredDefaultDescription
namestringYes-VM name (must be unique)
vcpusnumberNo1Number of virtual CPUs
memorynumberNo2048Memory in MB

Returns: Promise<VM>

Example:

const vm = await client.createVM({
  name: 'my-vm',
  vcpus: 2,
  memory: 4096,
});

listVMs()

List all VMs.

client.listVMs(): Promise<VM[]>

Returns: Promise<VM[]>

Example:

const vms = await client.listVMs();
console.log(`Total VMs: ${vms.length}`);

getVM()

Get details about a specific VM.

client.getVM(name: string): Promise<VM>

Parameters:

ParameterTypeDescription
namestringVM name

Returns: Promise<VM>

Example:

const vm = await client.getVM('my-vm');
console.log(`Status: ${vm.status}`);

destroyVM()

Destroy a VM and release its resources.

client.destroyVM(name: string): Promise<void>

Parameters:

ParameterTypeDescription
namestringVM name

Returns: Promise<void>

Example:

await client.destroyVM('my-vm');

Command Execution

exec()

Execute a command in a VM.

client.exec(vmName: string, command: string, options?: ExecOptions): Promise<ExecResult>

Parameters:

ParameterTypeRequiredDescription
vmNamestringYesVM name
commandstringYesCommand to execute
optionsExecOptionsNoExecution options

ExecOptions:

PropertyTypeDescription
envRecord<string, string>Environment variables
timeoutnumberCommand timeout in ms

ExecResult:

PropertyTypeDescription
stdoutstringStandard output
stderrstringStandard error
exitCodenumberExit code

Example:

const result = await client.exec('my-vm', 'ls -la', {
  env: { PATH: '/usr/local/bin:/usr/bin' },
});
console.log(result.stdout);

Checkpoint Operations

createCheckpoint()

Create a VM checkpoint (snapshot).

client.createCheckpoint(
  vmName: string,
  checkpointName: string,
  options?: CheckpointOptions
): Promise<Checkpoint>

Parameters:

ParameterTypeRequiredDescription
vmNamestringYesVM name
checkpointNamestringYesCheckpoint name
optionsCheckpointOptionsNoCheckpoint options

CheckpointOptions:

PropertyTypeDescription
labelstringDescriptive label

Returns: Promise<Checkpoint>

Example:

const checkpoint = await client.createCheckpoint('my-vm', 'stable-v1', {
  label: 'Production-ready state',
});

listCheckpoints()

List all checkpoints for a VM.

client.listCheckpoints(vmName: string): Promise<Checkpoint[]>

Parameters:

ParameterTypeDescription
vmNamestringVM name

Returns: Promise<Checkpoint[]>

Example:

const checkpoints = await client.listCheckpoints('my-vm');
for (const cp of checkpoints) {
  console.log(`${cp.name}: ${cp.label}`);
}

restore()

Restore a VM from a checkpoint.

client.restore(
  vmName: string,
  checkpointId: string,
  options?: RestoreOptions
): Promise<VM>

Parameters:

ParameterTypeRequiredDescription
vmNamestringYesVM name
checkpointIdstringYesCheckpoint ID
optionsRestoreOptionsNoRestore options

RestoreOptions:

PropertyTypeDescription
asstringClone to new VM with this name

Returns: Promise<VM>

Examples:

// Restore in-place
await client.restore('my-vm', 'stable-v1');

// Clone to new VM
await client.restore('my-vm', 'stable-v1', {
  as: 'test-instance',
});

Type Definitions

VM

interface VM {
  name: string;
  status: 'running' | 'stopped' | 'paused';
  vcpus: number;
  memory: number;
  ip?: string;
  createdAt: Date;
  updatedAt: Date;
}

Checkpoint

interface Checkpoint {
  id: string;
  name: string;
  label?: string;
  vmName: string;
  createdAt: Date;
  size: number;
}

NoidError

class NoidError extends Error {
  statusCode: number;
  details?: any;
}

Error Handling

All methods can throw NoidError when operations fail:

import { NoidError } from '@noid/sdk';

try {
  await client.createVM({ name: 'my-vm' });
} catch (error) {
  if (error instanceof NoidError) {
    console.error(`Error ${error.statusCode}: ${error.message}`);
  }
}

Common Error Codes:

CodeDescription
400Bad request (invalid parameters)
401Unauthorized (invalid token)
404Resource not found
409Conflict (VM already exists)
500Internal server error

Next Steps