Skip to content

Latest commit

 

History

History
77 lines (56 loc) · 3.07 KB

File metadata and controls

77 lines (56 loc) · 3.07 KB

@computesdk/miosa

MIOSA provider for ComputeSDK with Firecracker microVM sandboxes on the MIOSA cloud.

MIOSA sandboxes can graduate to persistent desktops, serve public preview URLs on custom domains, and use off-host backups through a white-label control plane.

Install

pnpm add @computesdk/miosa computesdk

Usage

import { createCompute } from 'computesdk';
import { miosa } from '@computesdk/miosa';

const compute = createCompute({
  defaultProvider: miosa({ apiKey: process.env.MIOSA_API_KEY }),
});

const sandbox = await compute.sandbox.create();

const result = await sandbox.runCommand('python3 -c "print(40 + 2)"');
console.log(result.stdout); // "42"

await sandbox.filesystem.writeFile('/workspace/app.js', 'console.log("hi")');
const url = await sandbox.getUrl({ port: 3000 }); // white-label-aware preview URL

await sandbox.destroy();

Configuration

miosa({
  apiKey: 'msk_…',                       // or MIOSA_API_KEY env var
  baseUrl: 'https://api.miosa.ai/api/v1', // default; point at your white-label control plane
  timeout: 300_000,                       // default sandbox lifetime (ms)
});

Auth is a MIOSA API key (msk_*) sent as Authorization: Bearer <key>.

Method → endpoint mapping

ComputeSDK method MIOSA endpoint Notes
sandbox.create() POST /sandboxes Waits server-side until the sandbox is command-ready and returns a compact response; templateId → template_id, snapshotId → snapshot_id, envs → env, timeout(ms) → timeout_sec
sandbox.getById() GET /sandboxes/:id 404 → null
sandbox.list() GET /sandboxes
sandbox.destroy() DELETE /sandboxes/:id 404 treated as already destroyed
runCommand() POST /sandboxes/:id/exec {command, cwd, env, timeout(sec)}; background wraps in nohup … &
getInfo() (from sandbox record) state → status, timeout_sec → timeout(ms)
getUrl({port}) POST /sandboxes/:id/expose Server resolves the tenant preview domain, never built client-side
filesystem.readFile() GET /sandboxes/:id/fs/read?path= native
filesystem.writeFile() POST /sandboxes/:id/fs/write native
filesystem.mkdir() POST /sandboxes/:id/fs/mkdir native, recursive: true
filesystem.readdir() GET /sandboxes/:id/fs?path= native
filesystem.exists() POST /sandboxes/:id/exec (test -e) composed because there is no boolean exists endpoint
filesystem.remove() DELETE /sandboxes/:id/fs?path= native
snapshot.create() POST /sandboxes/:id/snapshots native Firecracker checkpoints; name → comment
snapshot.list({sandboxId}) GET /sandboxes/:id/snapshots MIOSA snapshots are sandbox-scoped

Beyond the ComputeSDK surface, the same API key unlocks the full MIOSA API: sandbox fork/branching, pause/resume, desktop graduation, deploys, and off-host exports.

Testing

pnpm test        # unit tests (mocked fetch, no network)
pnpm typecheck   # tsc --noEmit

License

MIT