feat(runtime): add native Podman support for all agents - #7872
Conversation
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
# Conflicts: # agents/hermes/Dockerfile # ci/test-file-size-budget.json # test/hermes-final-image-layout.test.ts
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Classify the remaining Hermes integrity pins as build-only inputs. Export only bounded, redacted OpenShell diagnostics from managed-image validation failures. Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
| OPENSHELL_SERVER_PORT: "8443", | ||
| OPENSHELL_SUPERVISOR_IMAGE: "ghcr.io/nvidia/openshell/supervisor@sha256:def", | ||
| }); | ||
| expect(fs.readFileSync(configPath)).toEqual(initialConfig); |
| if (!stat.isFile() || stat.isSymbolicLink()) { | ||
| throw new Error("not a regular file"); | ||
| } | ||
| config = fs.readFileSync(configPath); |
| it("provides the synchronous sleep contract required by runtime lifecycle polling", () => { | ||
| const wait = vi.spyOn(Atomics, "wait").mockReturnValue("timed-out"); | ||
|
|
||
| expect(sleepSeconds(0.25)).toBeUndefined(); |
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. Since last review: 0 prior items resolved · 0 still apply · 0 new items found E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Architecture review — PR 4Review scope: PR SHA This is a point-in-time review. The preceding stack PR, #7772, is now at Overall assessmentThis PR is a substantial implementation with a strong core direction. It adds native Podman support without introducing agent-specific branches, reuses several established lifecycle concepts, and handles the difficult container-recreation details with care. The separation between compute-driver identity and gateway ownership is especially useful groundwork for future drivers. The remaining architectural work is primarily consolidation rather than a rewrite: preserve the low-level Podman implementation, then place its transaction flow behind the shared bootstrap contract accepted in #7744. That would make the new capability feel native to the codebase while keeping the Podman-specific mechanics appropriately isolated. Strong foundations already in place
These choices provide a solid base to build on. Opportunities to strengthen the architecture
Recommended target shapeThe Podman-specific code should remain responsible for Podman inspection, deterministic replacement arguments, exact identity checks, and engine calls. Core code should remain responsible for transaction ordering, persistent phases, rollback policy, and agent-independent startup semantics. Suggested completion criteria
This PR already provides a strong Podman foundation. With the shared coordinator, durable transaction record, explicit engine dependency, and unified driver bundle, it can also provide a clean template for future compute drivers. |
Summary
This PR adds native Podman support for the same buildless managed-image path used by OpenClaw, Hermes, and LangChain Deep Agents Code across the existing supported host and architecture matrix. Podman must preserve sandbox GPU access and host-local Ollama, NIM, and vLLM through
inference.local, including GPU-backed local inference; CPU-only or hosted-inference-only support is not an acceptable milestone. Podman lifecycle behavior stays behind the pluggable runtime/managed-bootstrap contracts established earlier in the stack; the core onboarding state machine does not depend on Docker compatibility behavior or an agent-specific path.PR 4 of #7744. Based on #7772 and intended to merge after #7747, #7756, and #7772.\n\nCurrent draft gap: the pushed head is not the accepted architecture. It still depends on post-start privileged Podman exec, duplicates bootstrap orchestration instead of implementing the shared adapter, contains a fake socket-based MXC proof, and lacks exact-head functional/GPU/local-inference/platform evidence. This draft will not be marked ready or labeled green until those paths are replaced rather than waived.
Related Issue
Part of #7744
Changes
linux/amd64,linux/arm64/DGX, macOS Podman Machine, WSL where viable, and rootful/rootless operation. Any genuine platform blocker must be surfaced for maintainer decision rather than silently excluded.inference.local, including GPU-backed local inference, across OpenClaw, Hermes, and DCode.Type of Change
Quality Gates
Documentation Writer Review
DGX Station Hardware Evidence
Verification
Signed-off-by:line and every committed change uses signed commitspre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpm run docsbuilds without warnings (doc changes only)This PR is draft only while the final guard and full-scope runtime work is completed and pushed. It must remain draft and must not claim Podman support until exact-head CI and protected all-agent Podman E2E are green with exact candidate image digests for the supported host/architecture matrix, full lifecycle and launch-spec parity, actual inference/messaging operation, nonroot identity, rollback, sandbox GPU attachment, and host-local Ollama/NIM/vLLM through
inference.local, including GPU-backed local inference.Signed-off-by: Aaron Erickson aerickson@nvidia.com