🎉 Cmdop v1.0 is here! Download now →
Skip to Content
DocsSDKNode.js

Node.js SDK

Full guide for using @cmdop/sdk in Node.js applications.

Setup

import { Cmdop } from '@cmdop/sdk'; const client = new Cmdop({ apiKey: process.env.CMDOP_API_KEY, });

Machines

List Machines

const machines = await client.machines.list(); for (const machine of machines) { console.log(machine.name, machine.status); }

Get Machine

const machine = await client.machines.get('machine-id'); console.log(machine);

Machine Status

const status = await client.machines.status('machine-id'); console.log(status.connected, status.uptime);

Commands

Execute Command

const result = await client.commands.exec( 'machine-id', 'ls -la /var/log' ); console.log(result.stdout); console.log(result.stderr); console.log(result.exitCode);

With Options

const result = await client.commands.exec( 'machine-id', 'npm install', { cwd: '/app', env: { NODE_ENV: 'production' }, timeout: 60000, } );

Streaming Output

const stream = client.commands.stream( 'machine-id', 'tail -f /var/log/app.log' ); stream.on('stdout', (data) => { console.log(data); }); stream.on('exit', (code) => { console.log('Exit code:', code); }); // Stop after 10 seconds setTimeout(() => stream.kill(), 10000);

Files

List Directory

const files = await client.files.list('machine-id', '/home/user'); for (const file of files) { console.log(file.name, file.size, file.isDirectory); }

Read File

const content = await client.files.read( 'machine-id', '/etc/nginx/nginx.conf' ); console.log(content);

Write File

await client.files.write( 'machine-id', '/tmp/test.txt', 'Hello, World!' );

Upload File

import fs from 'fs'; const buffer = fs.readFileSync('local-file.txt'); await client.files.upload( 'machine-id', '/remote/path/file.txt', buffer );

Real-time Events

const subscription = client.subscribe('machine-id'); subscription.on('status', (status) => { console.log('Status changed:', status); }); subscription.on('output', (output) => { console.log('Command output:', output); }); // Cleanup subscription.unsubscribe();

Error Handling

import { CmdopError, NotFoundError, AuthError } from '@cmdop/sdk'; try { const machine = await client.machines.get('invalid-id'); } catch (error) { if (error instanceof NotFoundError) { console.log('Machine not found'); } else if (error instanceof AuthError) { console.log('Authentication failed'); } else { throw error; } }

Node.js SDK | Cmdop