Skip to content

[Epic] Support native Podman with buildless managed onboarding #7744

Description

@ericksoa

Outcome

At completion, NemoClaw supports Docker and native Podman as pluggable runtime providers for buildless managed onboarding.

The supported path covers every shipped agent:

  • OpenClaw
  • Hermes
  • LangChain Deep Agents Code

All three agents launch from complete immutable managed-image digests on linux/amd64 and linux/arm64. Native Podman support includes NVIDIA CDI GPU access and host-local Ollama, NVIDIA NIM, and vLLM through inference.local.

Runtime-specific behavior stays behind provider-neutral lifecycle and bootstrap contracts. The same contracts must admit a socket-free MXC-style provider without Podman branches in central orchestration.

NemoClaw uses existing OpenShell contracts. This epic does not require or authorize changes in NVIDIA/OpenShell.

Product decisions and invariants

  • Docker remains supported.
  • Stock managed onboarding becomes buildless. Explicit user-supplied --from Dockerfiles remain a separate opt-in path.
  • --temp-managed-runtime remains hidden, default-off, and undocumented until the supported activation gate passes.
  • The hidden gate permits qualification. It does not establish a supported surface.
  • Buildless activation requires OpenClaw, Hermes, and LangChain Deep Agents Code to pass together.
  • Native Podman activation requires all agents, both architectures, GPU access, local inference, lifecycle recovery, installer validation, and protected end-to-end evidence.
  • Production Podman registration occurs only in B4-H.
  • Central orchestration selects capabilities and opaque runtime providers. It does not branch on Podman.
  • Each runtime registers one immutable provider bundle with complete, identity-consistent capabilities.
  • Runtime provider state mutation is a mandatory supported-or-unsupported provider facet. The central contract does not accept callbacks or arbitrary privileged commands.
  • Provider-owned inference authority is persisted before shared-state commit and re-proved after each lifecycle transition.
  • Cleanup uses immutable provider-owned identifiers. Operations fail closed on missing, stale, incomplete, reused, or ambiguous authority.
  • Earlier slices remain dormant or internally complete. They do not advertise partial buildless or Podman support.

Architecture

Managed images

  • Resolve complete all-agent image cohorts by immutable per-platform digest.
  • Keep custom Dockerfile onboarding separate from managed-image selection.
  • Reject incomplete, mutable, or mixed-cohort image authority.

Runtime provider bundle

Each provider bundle owns its identity, capabilities, preflight, workload creation, lifecycle, runtime provider state mutation, managed bootstrap, snapshot, recovery, cleanup, and container-engine operations.

Registration fails closed when the bundle is incomplete or internally inconsistent. Docker, Podman, and the MXC-style fixture use the same central contract.

Transactional lifecycle

  • Derive bounded, versioned, credential-free bootstrap plans from agent definitions.
  • Keep privileged execution inside the selected provider.
  • Persist provider-owned intent and receipts before shared state becomes visible.
  • Resume, reconcile, or roll back incomplete work after process or controller failure.
  • Re-prove provider, engine, endpoint, image, runtime, route, model, lifecycle generation, and NVIDIA CDI authority after every lifecycle transition.
  • Prevent mutable-name lookup from deleting another runtime.

Work plan

GitHub native subissues are the progress source. Closed tasks represent completed delivery. Open tasks represent work that remains. Reference issues and source-only PRs are not subissues.

Completed work

Completed task Merged PR Delivered outcome
#9125 #7747 Driver-neutral compute selection groundwork.
#9126 #7756 Validated immutable managed OCI image publication.
#9127 #7772 Managed-image selection contracts.
#9128 #8045 Image-owned managed bootstrap runtime.
#9129 #8047 All-agent managed-image packaging and publication.
#9130 #8225 Managed bootstrap ownership and recovery hardening.
#9131 #8226 Inert protected multi-architecture lane bootstrap.
#9132 #8234 Protected buildless qualification batch.
#9133 #8261 Hidden, default-off buildless experiment gate.
#9134 #8276 B4-A dormant Podman CPU lifecycle.
#9135 #8052 B4-B dormant Podman managed-bootstrap transaction.
#9136 #8058 B4-C provider lifecycle and runtime provider state mutation contract.
#9137 #8658 B4-C2 durable Docker runtime provider state mutation.
#9138 #8061 B4-D dormant NVIDIA CDI GPU and host-local inference foundation.
#9141 #9123 Durable host-local inference authority across supported lifecycle transitions.
#9142 #9187 Dormant protected inference qualification, real Podman state mutation, and candidate execution.
#9143 #9223 Trusted native qualification collector, canonical executable qualification contract, and generic fail-closed activation catalog.
#9144 #9232 Trusted-main native qualification executor and receipts; 15/15 assignable protected cases passed, with nine ARM64-GPU cases and the complete aggregate deferred as mandatory pre-activation evidence.
#9140 #9323 Activated supported buildless managed onboarding for all shipped agents.

Remaining delivery

Position Work issue Delivery PR Exit condition
6/6 · B4-H #9145 #9923 Complete the deferred exact 24/24 trusted aggregate, then register supported native Podman and publish evidence-matched documentation.

Implementation source PRs

These PRs contain source material for delivered or remaining work. They are not subissues or accepted delivery ancestry unless a remaining work issue names them as source material.

Current batch: B4-H

B4-G is complete through issue #9144 and merged PR #9232. Its GitHub-verified squash commit 8cdc3c41eadf51cd817df9a0f738656d8c940be5 landed on main from exact PR head 54a3c3b548d86035b752e499b227719f3eb961c2. It delivered the PRA-1 trusted-main controller, pinned native Podman toolchain, canonical 24-case executor, installer and per-case receipts, credential-free unprivileged candidate execution with Docker unavailable, exact cleanup, and fail-closed aggregation. It did not register, select, advertise, or document production Podman.

Accepted B4-G evidence and exception:

  • All required PR checks passed at the exact merged head. Full PR CI run 32021563119 and codebase growth guardrail run 32021562210 passed, and all 28 review conversations were resolved.
  • Protected run 31984240689, attempt 1, at historical candidate commit 504fcf718a8ece560c021c5ed4656851ef419e84 passed all 15 cases that received authorized runners: all six AMD64/ARM64 CPU cases and all nine AMD64 RTX PRO 6000 GPU cases.
  • Nine ARM64-GPU cases received no runner identity. B4-G therefore made no 24/24, latest-head protected-run, or complete aggregate claim.
  • The repository administrator exception covered only the unavailable pre-merge ARM64-GPU executions and aggregate receipt. Those nine cases and the exact complete aggregate remain mandatory before production activation on the physical DGX Spark or another proper ARM64 NVIDIA-GPU runner.
  • As of 2026-08-17T11:58:12Z, post-merge validation for 8cdc3c41eadf51cd817df9a0f738656d8c940be5 was not green: installer hash, conflict resolution, and documentation staging had passed; CI / Main, E2E, platform evidence, code scanning, code quality, and base images were pending; portable-profile rootless run 32027086196 failed in the registry-container conmon path and the Ollama registry DNS path. That failure was not yet classified.

Issue #9145 owns one outcome: activate supported native Podman and publish evidence-matched installer and support documentation.

B3-E issue #9140 is complete through merged PR #9323. GitHub merge commit 390e3bbeb328589f27cf7f901ebfcf2117586305 landed on main from exact PR head 0943a7dccd77661555286e2b9cf36b0438787e9b on 2026-08-23. B4-H delivery is PR #9923, based directly on that landed main commit. Supported activation still cannot complete until the trusted controller accepts the full native matrix for the exact activation candidate.

B4-H must:

  • start from the latest accepted main and use one exact candidate PR head, target-base SHA, trusted workflow SHA, run, attempt, job, artifact, and digest identity throughout qualification;
  • use the trusted-main controller from test(e2e): execute native runtime qualification #9232 to obtain all 24 required case receipts and the canonical aggregate before enabling any production selector or support claim;
  • register one complete, identity-consistent Podman provider bundle without provider-name switches in central orchestration;
  • preserve Docker support, Kubernetes behavior, and the socket-free MXC-style provider seam;
  • expose only the hosts, architectures, GPU paths, inference runtimes, agents, and lifecycle operations covered by the accepted aggregate;
  • remove or replace the temporary experiment gate only after the activation evidence passes;
  • publish installer behavior and support documentation that match the shipped evidence; and
  • re-prove exact cleanup and that name-only deletion cannot remove a managed runtime.

The B4-G administrator exception authorized landing the dormant trusted controller despite the pre-merge chicken-and-egg condition. It did not waive any activation evidence or authorize production Podman selection.

Test and evidence gates

Every batch

  • Use the accepted predecessor and the latest target-branch state.
  • Keep the PR issue-scoped and exclude unrelated changes.
  • Require signed, DCO-compliant, GitHub-verified commits.
  • Run affected behavior tests, type checks, repository checks, source-shape and test-size checks, and diff checks.
  • Prove dormancy when the batch must not affect a production command, provider registry, or supported surface.
  • Run protected end-to-end qualification when the batch changes a product flow or candidate execution path.
  • Bind evidence to the latest PR commit and its target-branch base.
  • Preserve Docker and Kubernetes behavior unless the batch explicitly owns that change.

Buildless activation

B3-E must prove:

  • OpenClaw, Hermes, and LangChain Deep Agents Code;
  • linux/amd64 and linux/arm64;
  • immutable all-agent image digests;
  • managed onboarding without a stock Dockerfile build;
  • nonroot agent identity;
  • restart, rebuild, snapshot and restore, clone, backup, recovery, and rollback;
  • exact bootstrap receipts and shared-state commit; and
  • Docker, macOS, WSL, gateway-isolation, messaging, and security regressions.

Native Podman activation

Before B4-H production activation, the accepted B4-G/B4-H evidence must prove:

  • native Podman with Docker unavailable;
  • OpenClaw, Hermes, and LangChain Deep Agents Code;
  • supported amd64 and arm64 hosts;
  • rootful and rootless operation where supported;
  • networking, volumes, SELinux labeling, and exact cleanup;
  • NVIDIA CDI GPU attachment;
  • host-local Ollama, NVIDIA NIM, and vLLM;
  • real GPU-backed inference turns;
  • restart, rebuild, snapshot and restore, clone, backup, crash recovery, rollback, and name-reuse failure handling;
  • installer and preflight behavior; and
  • evidence-matched support documentation.

The trusted collector and controller are now on main through #9223 and #9232. B4-H must use that trusted-main authority against the exact activation PR head and target-base SHA to obtain the complete 24-case aggregate before registration, selection, advertising, or documentation. Candidate-controlled code never runs in the privileged collector, and a candidate PR cannot self-qualify using workflow code introduced by that PR.

Related context

These records explain demand, compatibility failures, or dependencies. They are not delivery subissues:

Scope boundaries

In scope:

  • buildless managed onboarding for all shipped agents;
  • complete immutable images and atomic all-agent publication;
  • provider-neutral lifecycle and transactional bootstrap;
  • Docker and native Podman providers;
  • amd64 and arm64;
  • snapshot, clone, rebuild, backup, restore, durable recovery, and exact cleanup;
  • native Podman GPU access and host-local Ollama, NVIDIA NIM, and vLLM;
  • a socket-free MXC-style contract fixture; and
  • evidence-backed installer and documentation changes.

Out of scope:

  • arbitrary privileged commands or credential rewrite through startup profiles;
  • OpenClaw-only or Docker-compatibility-only Podman support;
  • production MXC enablement;
  • Kubernetes behavior changes beyond regression preservation;
  • changes in NVIDIA/OpenShell without separate explicit approval; and
  • support claims for an untested runtime, host, architecture, GPU, or inference combination.

Definition of done

The epic closes only when:

  • the temporary experiment gate is removed or replaced by an evidence-backed supported surface;
  • Docker and native Podman launch all shipped agents through the same provider-neutral contracts;
  • real Docker and Podman runtime provider state mutation facets have named production consumers and interruption-recovery evidence;
  • stock managed onboarding performs no Dockerfile build;
  • native Podman passes the complete multi-architecture GPU and Ollama, NVIDIA NIM, and vLLM matrix;
  • lifecycle and crash recovery preserve exact provider-owned authority;
  • name-only deletion cannot remove a managed runtime;
  • protected end-to-end qualification passes for the activation commit; and
  • installer and support documentation match the shipped evidence.

Metadata

Metadata

Assignees

Labels

area: architectureArchitecture, design debt, major refactors, or maintainabilityarea: e2eEnd-to-end tests, nightly failures, or validation infrastructurearea: onboardingOnboarding FSM, provider setup, sandbox launch, or first-run flowarea: packagingPackages, images, registries, installers, or distributionarea: sandboxOpenShell sandbox lifecycle, runtime, config, or recoveryenhancementNew capability or improvement requestintegration: dcodeLangChain Deep Code integration behaviorintegration: hermesHermes integration behaviorintegration: openclawOpenClaw integration behaviorplatform: containerAffects Docker, containerd, Podman, or images

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions