# Openrig Herdr

Use when opening OpenRig fleet terminals as a herdr wall, turning a rig, pod, mission...

- Repository: https://github.com/mvschwarz/openrig (8541 stars)
- Category: AI and agents
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add mvschwarz/openrig --skill openrig-herdr -g -a claude-code -y`
Codex: `npx skills add mvschwarz/openrig --skill openrig-herdr -g -a codex -y`
Cursor: `npx skills add mvschwarz/openrig --skill openrig-herdr -g -a cursor -y`
Gemini CLI: `npx skills add mvschwarz/openrig --skill openrig-herdr -g -a gemini-cli -y`

## Description

Use when opening OpenRig fleet terminals as a herdr wall, turning a rig, pod, mission, slice, or saved view into live interactive agent tiles via `rig terminal`, watching another rig read-only, or driving herdr on an agent's request ("open all my rigs + a mission as views"). Covers the `rig terminal open|views|status` verbs, the honest-partial/degrade reading of the result, the read-only-by-construction rail for cross-rig views, scroll/copy out of the box, and the same-size-only duplicate-pane limit. herdr is the default, proof-gated provider.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# openrig-herdr

OpenRig decides **which** agents make up a view (a rig, a pod, a mission, a slice, or a saved
group); **herdr** renders the pixels. A view opens as live, interactive terminal tiles, each tile
is a nested `tmux attach` to a daemon-owned agent session, so you get the real session, not a
snapshot. OpenRig owns the semantics; herdr owns the surface. You drive it entirely through the
`rig terminal` CLI, which rides the installed herdr binary at arm's length, never link, embed, or
plugin it.

## The whole surface, three verbs

```bash
rig terminal open <view> [--provider herdr|cmux|rex] [--json]   # herdr is the default provider
rig terminal views [--json]                                     # list openable views (saved + derived)
rig terminal status [--provider] [--json]                       # provider liveness / health
```

Inside Rex, `rig terminal open <view> --window` opens the view as a new Rex session instead, on the same Rex
server as your terminal, and asks the Rex app to show it. `--provider rex` opens it there from anywhere.

`<view>` resolves, in order, to one of:
- a **rig name**, every live agent in that rig, auto-laid-out;
- **`pod:<rig>/<podNamespace>`**, every live agent in one pod of a rig (the rig's inventory filtered by pod);
- **`mission:<id>`**, the agents working that mission (derived live from topology);
- **`slice:<id>`**, the agents working that slice (derived live);
- a **saved-view name**, a user-defined group (see Saved views).

## Compose a view from a sentence

An agent asked "open all my rigs plus a mission as views" runs one `open` per target:

```bash
rig terminal open acme-web                     # a whole rig, live agents as tiles
rig terminal open mission:site-relaunch        # exactly the agents working the mission
rig terminal open slice:search-filters      # the agents working one slice
```

No hand-listing of seats: the mission/slice membership is derived from live topology at open time.

The rest: https://github.com/mvschwarz/openrig/blob/HEAD/packages/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md
