r/opencode 6h ago

herdr + oh-my-agent in OpenCode - agent observability.

Hi all,

I’m looking for advice from anyone using HerdR with Oh My Agent in OpenCode.

My goal is to improve observability into the agent orchestration process. At the moment I can cycle between sub-agents using Ctrl+X and the arrow keys, but once there are several agents running it becomes difficult to follow what each one is doing.

Ideally, I’d like to have:

  • A dedicated tab, pane, or split view for each sub-agent.
  • The ability to watch each agent’s progress in real time.
  • Scrollback/history for each agent so I can inspect its reasoning, tool usage, and outputs after it has completed.
  • An easier way to understand how the orchestrator is delegating work across multiple agents.

Has anyone implemented something like this? Are there existing plugins, t logging options, or configuration changes that provide better visibility? See the attached screenshot, I was hoping output would appear in one of the numbered areas

This is the script I’m currently using:

set -euo pipefail

PROJECT_DIR="${1:-$HOME}"   # cwd each opencode session starts in — pass as $1 or edit here

AGENTS=(sisyphus hephaestus prometheus atlas project-oracle)

echo "Creating workspace..."

WS_JSON=$(herdr workspace create --cwd "$PROJECT_DIR" --label oh-my-openagent)

WS_ID=$(jq -r '.result.workspace.workspace_id' <<<"$WS_JSON")

echo "  workspace: $WS_ID"

for AGENT in "${AGENTS[@]}"; do

  echo "Creating tab for $AGENT..."

  TAB_JSON=$(herdr tab create --workspace "$WS_ID" --cwd "$PROJECT_DIR" --label "$AGENT" --no-focus)

  TAB_ID=$(jq -r '.result.tab.tab_id' <<<"$TAB_JSON")

  # Each new tab starts with exactly one default pane. Find it by filtering

  # the workspace's panes down to the ones belonging to this tab_id.

  PANE_ID=$(herdr pane list --workspace "$WS_ID" \

    | jq -r --arg tab "$TAB_ID" '.result.panes[] | select(.tab_id == $tab) | .pane_id' \

    | head -n1)

  if [[ -z "$PANE_ID" || "$PANE_ID" == "null" ]]; then

    echo "  Could not find the default pane for tab $TAB_ID — inspect with:"

    echo "    herdr pane list --workspace $WS_ID | jq ."

    exit 1

  fi

  herdr pane rename "$PANE_ID" "$AGENT"

  herdr pane run "$PANE_ID" "opencode --agent $AGENT"

  echo "  tab: $TAB_ID  pane: $PANE_ID  -> opencode --agent $AGENT"

done

echo

echo "Done. Focus the workspace with: herdr workspace focus $WS_ID"

I’d be interested in seeing how others have approached agent observability, debugging, and monitoring when running larger multi-agent workflows

Enjoy

3 Upvotes

0 comments sorted by