@devlyofficial/sdk
v0.1.4
Published
TypeScript SDK for the Devly API
Readme
@devlyofficial/sdk
TypeScript SDK for the Devly API. Create and control Linux VMs from Node.js, Bun, Deno, or the edge.
Install
npm install @devlyofficial/sdk
# or
bun add @devlyofficial/sdk
# or
pnpm add @devlyofficial/sdkUsage
import { Devly } from "@devlyofficial/sdk";
const devly = new Devly({ apiKey: process.env.DEVLY_API_KEY! });
const vm = await devly.vms.create({ name: "my-vm" });
await devly.vms.wait(vm.id, "running");
const { stdout } = await devly.vms.exec(vm.id, "node --version");
console.log(stdout); // v20.11.0
await devly.vms.delete(vm.id);API
VMs
devly.vms.list() // → List<Vm>
devly.vms.create({ name?, snapshotId? }) // → Vm
devly.vms.get(id) // → Vm
devly.vms.delete(id) // → null
devly.vms.start(id) // → Vm
devly.vms.stop(id) // → Vm
devly.vms.wait(id, status, timeoutMs?) // → Vm
devly.vms.exec(id, command) // → ExecResult
devly.vms.logs(id, n?) // → LogsResult
devly.vms.metrics(id) // → MetricsResult
devly.vms.snapshot(id, name?) // → SnapshotSnapshots
devly.snapshots.list() // → List<Snapshot>Usage
devly.usage.get() // → UsageResultError Handling
import { Devly, DevlyAPIError } from "@devlyofficial/sdk";
try {
await devly.vms.exec(id, "npm test");
} catch (err) {
if (err instanceof DevlyAPIError) {
console.log(err.status); // 409
console.log(err.isConflict); // true
}
}| Property | Status |
|----------|--------|
| isNotFound | 404 |
| isUnauthorized | 401 |
| isConflict | 409 |
| isTimeout | 408 |
| isRateLimited | 429 |
Defensive Cleanup
Always delete VMs in finally:
const vm = await devly.vms.create({ name: "job" });
try {
await devly.vms.wait(vm.id, "running");
await doWork(vm.id);
} finally {
await devly.vms.delete(vm.id);
}Links
License
MIT
