feat(docker): bake herdr + tmux into webtop image - #38
Merged
gitricko merged 1 commit intoAug 17, 2026
Conversation
Add firstmate's pinned herdr session backend (primary fm-spawn pane backend) plus tmux fallback and jq (herdr JSON protocol): - docker/Dockerfile: pin ARG HERDR_VERSION=0.7.4 (bump guard vs the installer pin), add tmux + jq to the apt install line, and install herdr via firstmate's own pinned installer copied into the image (exact release asset, SHA-256 verified, bounded download). Binary lands in /usr/local/bin like mnemon/ollama/node, so it is on PATH for every shell and is not shadowed by the runtime /config volume. - docker/scripts/fm-install-herdr.sh: verbatim copy of firstmate's bin/fm-install-herdr.sh (single owner of the herdr version/protocol pin), run at build time against the ./docker build context.
gitricko
force-pushed
the
fm/ship-task-bake-herdr-tmux-into-the-hermes-webtop
branch
from
August 17, 2026 16:58
868d915 to
981ace1
Compare
gitricko
deleted the
fm/ship-task-bake-herdr-tmux-into-the-hermes-webtop
branch
August 17, 2026 17:11
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.
What Changed
docker/scripts/fm-install-herdr.sh) that downloads the official GitHub release asset bounded by max size and verifies version/protocol gates after install.tmuxandjqto the apt-installed utilities in the Dockerfile;tmuxserves as the fallback session backend andjqparses herdr's JSON status protocol.HERDR_VERSIONbuild ARG that the Docker build enforces against the installed binary version after running the install script.Risk Assessment
✅ Low: Well-bounded Docker/build change that bakes a pinned, SHA-256-verified herdr binary plus tmux/jq into the image with version/protocol gates and correct multi-arch handling, presenting little ambiguity or risk.
Testing
Exercised the new herdr install step on Linux/aarch64: the fm-install-herdr.sh script the Dockerfile runs completed end-to-end (pinned 0.7.4 asset downloaded, SHA-256 verified, installed, version 0.7.4 and protocol 16 gates passed), and
herdr --versionreports 0.7.4 matching the Dockerfile bump guard. A tampered-checksum run proved the SHA gate fails closed (exit 1). I could not build the full container image because the docker daemon is inaccessible in this sandbox, so in-image confirmation of the tmux/jq apt addition and /usr/local/bin placement is left to the remote docker-publish CI build.Evidence: herdr installer positive run (transcript)
fm-install-herdr.sh: downloading herdr-linux-aarch64 from https://github.com/ogulcancelik/herdr/releases/download/v0.7.4/herdr-linux-aarch64 fm-install-herdr.sh: installed herdr 0.7.4 (protocol 16) to /tmp/herdr-test-bin/herdr herdr 0.7.4Evidence: version bump-guard + SHA gate evidence
Dockerfile ARG HERDR_VERSION=0.7.4; installed herdr --version = herdr 0.7.4 (matches); tampered-checksum installer exit = 1 (rejects mismatch)Pipeline
Updates from git push no-mistakes
⏭️ **intent** - skipped
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
bash docker/scripts/fm-install-herdr.sh /tmp/herdr-test-bin (positive path on Linux aarch64 — download, SHA verify, install, version+protocol gates) → exit 0, 'installed herdr 0.7.4 (protocol 16)'/tmp/herdr-test-bin/herdr --version → 'herdr 0.7.4', matching Dockerfile ARG HERDR_VERSION=0.7.4 bump guard/tmp/herdr-test-bin/herdr status --json → client protocol 16 (>= required floor 16)Negative SHA gate: copied script with aarch64 SHA256 set to 0000... → exit 1 with 'checksum mismatch'grep Dockerfile for ARG HERDR_VERSION=0.7.4 and installer pin FM_HERDR_CI_VERSION=0.7.4 to confirm bump-guard consistency✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.