feat(docker): close Podman support gaps in doctor, setup, and runtime detection - #10621
Open
zjc-enigma wants to merge 1 commit into
Open
feat(docker): close Podman support gaps in doctor, setup, and runtime detection#10621zjc-enigma wants to merge 1 commit into
zjc-enigma wants to merge 1 commit into
Conversation
…essages Building on PR NousResearch#10066 which added find_docker() with Podman fallback, this closes the remaining gaps where Podman users see incorrect diagnostics: - Add is_podman() and runtime_name() helpers to docker.py for consistent runtime detection across the codebase - hermes doctor: use find_docker() instead of hardcoded shutil.which("docker"), recognize Podman as a valid container runtime - hermes setup: detect Podman when configuring the container backend, show install links for both Docker and Podman - _storage_opt_supported(): early-return False for Podman (doesn't support per-container --storage-opt size=) - Error messages: use runtime_name() for context-appropriate "Docker" vs "Podman" wording, mention both runtimes when neither is found Tests: 6 new test cases (is_podman, runtime_name, storage_opt podman skip), updated 2 existing tests for new error message wording. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5 tasks
teknium1
reviewed
Jul 12, 2026
teknium1
left a comment
Contributor
There was a problem hiding this comment.
Thanks for closing the remaining Podman diagnostics gap. Current main confirms the central premise: find_docker() already falls back to Podman (tools/environments/docker.py:270-303), while doctor and setup still hard-code Docker (hermes_cli/doctor.py:1462-1465, hermes_cli/setup.py:1238-1243).
Problems
- The added doctor test covers only the Termux/no-runtime path. It does not exercise the new Podman-only
find_docker()path or verify that doctor runspodman info. - A sibling diagnostic remains Docker-only in
tools/terminal_tool.py:2810-2815: the check usesfind_docker()but logs “Docker executable not found.”
Suggested changes
- Add a mocked Podman-only doctor regression test that asserts both the displayed runtime and the executable used for
info. - Align the terminal requirement-check error wording with the runtime-agnostic discovery behavior.
This is an automated hermes-sweeper review.
| terminal_env = os.getenv("TERMINAL_ENV", "local") | ||
| try: | ||
| from tools.environments.docker import find_docker, runtime_name | ||
| container_exe = find_docker() |
Contributor
There was a problem hiding this comment.
Please add a regression test for this Podman-only path: make Docker unavailable, resolve Podman here, and assert doctor reports Podman and invokes the resolved executable for info. The added doctor test currently only covers the Termux case where both runtimes are absent.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Building on PR #10066 which added
find_docker()with Podman fallback, this closes the remaining gaps where Podman users see incorrect diagnostics or Docker-only error messages.tools/environments/docker.py: Addis_podman()andruntime_name()helpers; skip--storage-opt size=probe for Podman (unsupported); use runtime-aware error messageshermes_cli/doctor.py: Usefind_docker()instead of hardcodedshutil.which("docker")— recognizes Podman as a valid container runtimehermes_cli/setup.py: Detect Podman when configuring the container backend, show install links for both Docker and PodmanChanges
tools/environments/docker.pyis_podman(): cached check if resolved runtime is Podman (checks basename for "podman")runtime_name(): returns "Podman" or "Docker" for user-facing messages_storage_opt_supported(): early-returnsFalsefor Podman (no per-container--storage-opt size=)_ensure_docker_available(): error messages now mention both runtimes when neither found, useruntime_name()for runtime-specific messageshermes_cli/doctor.pyfind_docker()to detect either Docker or Podmanhermes_cli/setup.pyfind_docker()to detect either runtimeTests
test_docker_find.py:TestIsPodman(5 cases) +TestStorageOptPodman(1 case)Test plan
uv run pytest tests/tools/test_docker_find.py -v— 15/15 passuv run pytest tests/tools/test_docker_environment.py -v— 18/18 passuv run pytest tests/hermes_cli/test_doctor.py -v— 19/19 passhermes doctorwith only Podman installed — shows "podman (optional)" / "podman (daemon running)"hermes setupwith only Podman — shows "Podman found: /usr/bin/podman"🤖 Generated with Claude Code