Skip to content

Self-host on Docker sandboxes

The node-docker driver runs each Session in a Docker container on the same host as the Node server, driven through a Docker CLI adapter — no external sandbox account needed. Workspaces live on the host filesystem and use durable workspace checkpoint/restore at the filesystem level — there is no process-memory checkpoint and no provider suspend/resume.

  • Docker installed and reachable by the worker process (a DockerCommandPort adapter; a custom docker command port can be injected for non-standard setups).
  • An image reference such as node:22-slim.
  • The Node self-host’s own requirements (BETTER_AUTH_SECRET, PLATFORM_ROOT_SECRET, a SQL backend). See Node + Docker (no Cloudflare).

Docker is composed as the preinstalled Node runtime, not via SANDBOX_PROVIDER. The factories are createNodeManagedRuntime / createNodeManagedRuntimeDriver / createNodeManagedEnvironmentWorker in @open-managed-agents/managed-runtime-node:

const runtime = await createNodeManagedRuntime({
rootDir: "/var/lib/openma",
sql, // SqlClient — SQLite/Postgres/MySQL
initializeFenceSchema: true,
ownerId: processId,
leaseTtlMs: 90_000,
heartbeatIntervalMs: 30_000,
image: "node:22-slim",
});

The full option set: rootDir, sql, initializeFenceSchema, ownerId, leaseTtlMs, heartbeatIntervalMs, checkpointIntervalMs, image, network, docker, additionalMounts (source/destination/readOnly), extraHosts, scheduler, fence, runtimeCheckpoint, credentialEgress, and sessionInputs.

Harness lanesama_worker, openma_supervised
suspendResumeunsupported
Workspacecheckpoint_restore, durable (host filesystem)
Outputsfinal_collect, durable (host filesystem)
Process checkpointsnone
Credential egressunsupported/snapshot by default