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.
Prerequisites
Section titled “Prerequisites”- Docker installed and reachable by the worker process (a
DockerCommandPortadapter; a customdockercommand 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).
Configuration
Section titled “Configuration”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.
Capabilities
Section titled “Capabilities”| Harness lanes | ama_worker, openma_supervised |
| suspendResume | unsupported |
| Workspace | checkpoint_restore, durable (host filesystem) |
| Outputs | final_collect, durable (host filesystem) |
| Process checkpoints | none |
| Credential egress | unsupported/snapshot by default |