Workspace

Introduction

Oblien Workspace gives you programmable cloud sandboxes - full Linux environments you can create, control, and destroy through code. Each workspace is an isolated micro-VM with its own filesystem, network, and resources.

What you can do

  • Spin up environments in seconds - Ubuntu, Node.js, Python, Go, Rust, Redis, Postgres
  • Execute code remotely - run commands, stream output, manage long-running tasks
  • Open terminals - full interactive shell sessions over WebSocket
  • Control networking - firewall rules, public port exposure, outbound IP selection
  • SSH access - connect from any terminal with password or key auth
  • Manage resources - scale CPU, memory, and disk on the fly
  • Snapshot & restore - save state and roll back instantly
  • Run workloads - managed background processes with logs and lifecycle control
  • Monitor everything - live CPU/memory/network stats via SSE streaming

Who it's for

Use CaseHow
AI agent sandboxesGive your agent a full Linux environment to write code, run tests, browse the web
Code executionRun untrusted code in isolated containers with resource limits and TTL
Dev environmentsSpin up pre-configured dev boxes with SSH, terminals and port forwarding
CI/CD runnersEphemeral build environments that self-destruct after the job
API testingIsolated environments per request with full network control

Architecture

Your App ──▶ Oblien SDK / REST API ──▶ Oblien Platform ──▶ Micro-VM
               (oblien/workspace)                              (isolated sandbox)

Each workspace runs as a lightweight micro-VM with:

  • Dedicated kernel - full process isolation, not a container
  • Writable filesystem - persistent storage with snapshots
  • Virtual network - configurable firewall, public access, outbound IP
  • Resource limits - hard caps on CPU, memory, disk

Two ways to interact

npm install oblien
import { OblienClient } from 'oblien';
import { Workspace } from 'oblien/workspace';

const client = new OblienClient({
  clientId: process.env.OBLIEN_CLIENT_ID,
  clientSecret: process.env.OBLIEN_CLIENT_SECRET,
});

const ws = new Workspace(client);

// Create a workspace
const workspace = await ws.create({
  name: 'my-sandbox',
  image: 'node-20',
  config: { cpus: 2, memory_mb: 2048 },
});

// Run code
const result = await ws.exec(workspace.id, {
  cmd: ['node', '-e', 'console.log("Hello from the cloud!")'],
});

console.log(result.data); // "Hello from the cloud!"

// Clean up
await ws.delete(workspace.id);
# Create a workspace
curl -X POST https://api.oblien.com/workspace \
  -H "X-Client-ID: $OBLIEN_CLIENT_ID" \
  -H "X-Client-Secret: $OBLIEN_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-sandbox",
    "image": "node-20",
    "config": { "cpus": 2, "memory_mb": 2048 }
  }'

# Execute a command
curl -X POST https://api.oblien.com/workspace/{id}/exec \
  -H "X-Client-ID: $OBLIEN_CLIENT_ID" \
  -H "X-Client-Secret: $OBLIEN_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "cmd": ["node", "-e", "console.log(\"Hello from the cloud!\")"] }'

# Delete
curl -X DELETE https://api.oblien.com/workspace/{id} \
  -H "X-Client-ID: $OBLIEN_CLIENT_ID" \
  -H "X-Client-Secret: $OBLIEN_CLIENT_SECRET"

Next steps