Skip to main content

Node 22 or newer

Every package declares engines.node >= 22.

A sandbox provider

Every command an agent runs happens in a sandbox, and the harness will not let a model’s commands run anywhere that does not isolate. The default provider is nativesandbox: containers through Podman or Docker, needing no nested virtualisation and no /dev/kvm. So the host needs a container engine reachable over its socket. On Linux, rootless Podman is the recommended engine:
Prove it rather than assume it — a limit the kernel accepts and ignores looks identical to one it enforces until you read it back from inside:
The nativesandbox requirements cover Docker, macOS, cgroup delegation and the socket resolution order in detail.
@nativeharness/sandbox-local runs commands on the host with no isolation. It exists for tests and for trusted, deterministic scripts. The agent refuses to use it with a real model, and that refusal is enforced in code rather than documented.

A model, or none

The core layer has no model in it and needs no key. The agent layer needs one ModelAdapter, and the five that ship read their keys from the environment: A ScriptedAdapter also ships: a deterministic model for tests and demos, which is how the harness’s own suite runs a whole turn with no key at all.

Check everything at once

Reports the workspace root, the acting user, and whether the sandbox provider’s engine answers. It exits non-zero when it cannot, so it works as a deployment gate.