feat(gojnimer6553): add herdr module - #1060
Open
gojnimer6553 wants to merge 4 commits into
Open
Conversation
Runs Herdr (herdr.dev) in a Coder workspace, giving it a real pseudo-terminal via a detached tmux session the same way the happy module does for the happy CLI (Herdr has no documented headless/daemon startup mode). Adds an opt-in `plugins` list that installs Herdr plugins non-interactively via `herdr plugin install <spec> --yes`, plus an optional `app_port` to expose a plugin's own local web UI as a Coder app tile, and a `post_start_script` hook so callers can work around plugin-specific gaps (e.g. a plugin's setup wizard assuming infrastructure the workspace doesn't have) without baking plugin-specific logic into the module itself. Validated locally: terraform init/test (14/14 passed), bun test main.test.ts against real Docker containers (10/10 passed), shellcheck clean, prettier/terraform fmt clean. Also validated in production use against the real herdr and herdr-mobile-relay/collie plugin binaries in a Coder workspace template.
Replaces the placeholder glyph with the official mark from https://herdr.dev/_astro/logo.DM81885K_Z1HYzg2.svg.
Rewrites the tmux-usage explanations (README, install script comment, main.tf comment) to stand on their own instead of pointing at the happy module for context. Also fixes a stale README line along the way: tmux installs from the install script, not the start script.
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.
Description
Adds a
herdrmodule: runs Herdr — a terminal/agent-session manager that detects and drives coding agents (Claude Code, Codex, OpenCode, and others) in persistent background panes — inside a Coder workspace, and optionally installs Herdr plugins non-interactively viaherdr plugin install <spec> --yes.Herdr has no documented headless/daemon startup mode, so this module gives it one via a detached
tmuxsession, so the server keeps running independent of thecoder_scriptthat launched it.Key design points:
plugins(opt-inlist(string), default[]) — each entry is anowner/repospec installed non-interactively on every start. Installing a plugin only registers it; most plugins still need their own one-time interactive setup from a workspace terminal afterwards (documented in the README).app_port(optional) — exposes a plugin's own local web UI as acoder_apptile.post_start_script(optional) — runs after Herdr and all configured plugins are up, so callers can work around plugin-specific gaps (e.g. a plugin's setup wizard assuming infrastructure the workspace doesn't have) without the module itself needing to know about any specific plugin.Type of Change
Module Information
Path:
registry/gojnimer6553/modules/herdrNew version:
v1.0.0Breaking change: [ ] Yes [x] No
Testing & Validation
terraform test: 14/14,bun test main.test.ts: 10/10 against real Docker containers)bun run fmt, shellcheck clean)herdrCLI and a real Herdr plugin (AltanS/collie) in a live Coder workspace templateRelated Issues
None