Local Docker and Executors
Docker is required for the control plane’s default local setup (nemo setup --start-services or default nemo services run). Many day-to-day jobs and agent deploys still run as subprocess on the host. This page explains which path applies when.
For install steps, see Setup. For job executor YAML, see Manage Jobs.
Short answer
Subprocess agent deploy does not mean the control plane can start without Docker. If the deployments controller is in the run (default full local), preflight still requires the Docker daemon.
When you need Docker
Inspect what the running control plane registered:
Why preflight requires Docker
The CLI does not treat Docker as a global dependency. It fails closed only when the resolved configuration would start the deployments service or controller and deployments.default_executor resolves to a docker backend.
Typical message:
That path exists because the deployments plugin backends are docker, Kubernetes, and OpenShell — there is no subprocess deployments backend. Model deployments go through that plugin. The Agents plugin’s default subprocess mode is a separate code path.
Jobs: subprocess vs Docker
Bundled local config registers a subprocess executor at profile default. Many CPU container steps submitted as cpu/default are translated to that host subprocess backend so local development does not require the jobs Docker image for every plugin job.
Docker (or Kubernetes) job backends remain in use for:
- Auditor jobs (dedicated Docker profile)
- GPU / customizer job profiles
- Workloads that opt into a Docker-backed execution profile
Configure profiles under jobs.executors and related knobs such as jobs.enable_subprocess_executor in the Config Reference. See Manage Jobs for backend YAML.
Agents vs model deployments
See Deploy Agents and Deploy Models.
Escape hatches
If you cannot or do not want Docker on the laptop:
- Start Docker for the default full local path (simplest).
- Omit or reconfigure deployments — pass a custom
--configthat sets a non-dockerdeployments.default_executor, or omit the deployments service/controller from the run so preflight does not apply. - External ClickHouse — set
NHX_INTAKE_CLICKHOUSE_URLbefore start so Intake does not provision a local container. - Remote control plane — point the CLI at a remote
NHX_BASE_URL; the laptop does not need Docker for API-only use. - Kubernetes — cluster install paths use cluster executors; see Kubernetes Deployment.
Related
- Setup — install and prerequisites
- Manage Jobs — execution backends
- Deploy Agents — subprocess vs docker/k8s modes
- Deploy Models — model deployment via the deployments plugin
- Config Reference —
jobsexecutor knobs