Skip to main content
skill CX Codex

cross-host-rig-commands — Claude Code skill for remote hosts

This skill explains how to route OpenRig commands to registered remote hosts and interpret their results. Use it when checking transport setup or diagnosing a failed remote operation.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mvschwarz/openrig --skill cross-host-rig-commands -a claude-code
Open on GitHub

What cross-host-rig-commands does

The skill covers host selection through the OpenRig registry and the differences between SSH and HTTP routes. It discusses commands such as rig host list, rig send, rig capture, rig ps, and rig whoami, along with failures at different stages. For consequential work, it directs you to check the specific command’s help and the target host’s state.

SSH runs a remote CLI command through a shell; HTTP talks to the remote daemon. OpenRig does not switch routes automatically when one fails. An HTTP registry entry needs a URL and can use bearer_env or bearer_file for credentials. A timed-out write may already have reached the host, so inspect its effect before sending it again.

What it helps with

  • choose a registered host and check its reachability
  • identify whether an SSH or HTTP route failed
  • check whether a remote command took effect after a timeout
  • distinguish command transport success from confirmation of the remote operation

Example prompts for the agent

  • Check which transport is configured for remote-dev and explain what to verify before running a remote command.
  • Review the result of rig send to remote-dev and tell me how to check whether it arrived.
  • Explain the difference between an SSH connection failure and a failed remote OpenRig command.

How to install cross-host-rig-commands

1Skills CLI (Vercel)

npx skills add mvschwarz/openrig --skill cross-host-rig-commands -a claude-code

2Manually: put the files in place

~/.claude/skills/cross-host-rig-commands/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/cross-host-rig-commands/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about cross-host-rig-commands

How do I install cross-host-rig-commands in Claude Code?

Run npx skills add mvschwarz/openrig --skill cross-host-rig-commands -a claude-code. The installed skill file is at ~/.claude/skills/cross-host-rig-commands/SKILL.md.

What does cross-host-rig-commands do?

It guides OpenRig command routing to registered remote hosts over their configured SSH or HTTP transport, and explains how to read command results and failures.

How do SSH and HTTP routes differ in OpenRig?

SSH runs a remote CLI command through a shell, while HTTP communicates with the remote daemon. A failed route does not trigger an automatic switch to the other transport.

Source text

SKILL.md · Apache-2.0
---
name: cross-host-rig-commands
description: Use when addressing a registered remote OpenRig host, choosing its transport, or interpreting a cross-host result.
metadata:
  cli_surfaces_referenced:
    - capture
    - daemon start
    - host list
    - host add
    - host doctor
    - ps
    - send
    - whoami
  openrig:
    stage: factory-approved
    sibling_skills:
      - rig-lifecycle
      - topology-mutation-and-seat-management
      - seat-scaling-and-specialization
      - sidecar-operator
      - rig-bundles-and-shareable-artifacts
      - specification-system
      - extension-and-user-workspace
---

# Cross-host rig commands

Use a registered host address and the entry's declared transport. SSH entries
run a remote CLI through a single-hop shell; HTTP entries use the remote daemon.
These paths have different prerequisites and command coverage. Check the exact
command's help and the target installation before a consequential operation.

## Choose and inspect the destination

`rig host list` shows registered hosts. `rig host add --help` describes registry
writes; `rig host doctor --help` describes reachability checks. Inspect the
configured OpenRig home rather than assuming the default `~/.openrig/hosts.yaml`.
Registry changes affect later routing, so make them within the requested scope.

```yaml
hosts:
  - id: test-vm
    transport: ssh
    target: test-vm.local
    user: example-user
  - id: remote-dev
    transport: http
    url: http://remote-dev.example:7433
    bearer_env: REMOTE_RIG_TOKEN
```

The registry requires a hosts array, unique non-empty ids and a supported
transport. SSH needs a non-empty target; user and notes are optional. HTTP needs
a URL and accepts at most one of bearer_env or bearer_file. Omitting both is
valid for a tokenless target. A configured but unavailable bearer is a permission
failure, not anonymous fallback. Host ids also have reserved-name validation;
use the actual validator's error rather than inventing an alias that collides.

## Address the intended operation

```bash
rig send dev-worker@example-rig "check the assigned result" --host remote-dev --verify
rig capture dev-worker@example-rig --host remote-dev
rig ps --host remote-dev --nodes --json
rig whoami --host remote-dev
```

These coordination commands select SSH or HTTP from the registry entry. They
do not silently try another transport when one fails. A host-qualified target
can be convenient, but confirm its parsing and any persisted host selection
with the particular command. Explicit --host is preferable for consequential
cross-host work.

Queue destinations use explicit --host or a supported host-qualified destination;
queue writes do not follow persisted host selection. The CLI separates the host
from the canonical seat in the routing envelope. Different queue subcommands
have different flags: check their help instead of copying a flag from send.
A local success message alone does not establish remote persistence or pickup.

## Read failures at the layer that failed

| Signal | What to inspect |
|---|---|
| registry-load-failed / unknown-host | Registry path, entry and exact destination |
| ssh-unreachable | SSH connection, target and transport diagnostics |
| permission-gate | The configured SSH or HTTP credentials and target policy |
| remote-daemon-unreachable | Target listener and actual running daemon identity |
| remote-outcome-unknown | The request may have arrived (timeout, dropped connection, unreadable reply): check its effect, for a send the target pane, before any retry |
| remote-command-not-found | Remote CLI installation and executable lookup |
| remote-command-failed | The remote operation's own status and error |

The exact result taxonomy depends on the path. HTTP failures expose the remote
status/error; SSH distinguishes the shell transport from the remote command.
Do not start or replace a remote daemon merely because a diagnostic suggests it;
first establish the target's state and the authority for that lifecycle action.
A timed-out write may have reached its destination. Reconcile its durable effect
before retrying.

## Verification and attribution

Transport success is not delivery verification or agent consumption. SSH forwards
--verify and returns the remote CLI result. HTTP preserves the remote transport
verdict and explicitly reports that the local pane-effect check did not run
cross-host. Inspect that result and the destination effect required by the task;
never replace it with “SSH exited zero” or “HTTP returned successfully.”

Cross-host output names the host/target; JSON envelopes carry cross_host metadata.
The precise envelope differs by command and transport. Preserve the underlying
remote result when passing evidence onward.

A target's host suffix selects a destination; a sender's origin identifies where
a reply belongs. Use the rendered reply address and verify its host mapping.
Current send derives the sender from the executing seat context, not a caller's
--from assertion. It adds origin-host identity at cross-host forwarding; do not
assume local sends have the same suffix. Unknown identity remains unknown.

This guide describes the implemented command paths, not proof of a live remote
journey on your installation. Forks, handovers and other lifecycle compositions
need their own supported command and scoped authority; reading remote state
does not authorize them.

## See also

- openrig-user — exact command reference
- seat-continuity-and-handover — stable seat and occupant outcomes

© mvschwarz · Apache-2.0 · mvschwarz/openrig

Similar skills

All skills for DevOps and infrastructure →

From the same set32

session-source-fork A skill for authoring rig specs: it starts a new managed seat from a prior Claude or Claude conversation without claiming the old seat continued. CX Codex +1 ★ 8,227repo stars rig-bundles-and-shareable-artifacts This skill covers creating, inspecting, and installing OpenRig bundles that package a rig topology with its workflow. Use it when preparing a proven setup for reuse in another environment. CX Codex +1 ★ 8,227repo stars openrig-upgrade Walks an agent through an OpenRig CLI and daemon upgrade one step at a time: inspect, mutate, observe. Useful when live seats matter. CX Codex +1 ★ 8,227repo stars openrig-skills This skill helps an agent in OpenRig find the right context for a handover, debugging, or recovery task. It also shows how to locate and load other skills with rig. CX Codex +1 ★ 8,227repo stars openrig-architect This skill helps plan an OpenRig agent team, write its specs and startup guidance, and investigate agents that behave differently from their intended roles. CX Codex +1 ★ 8,227repo stars messaging-the-human This skill covers the mechanics of an agent messaging a human through rig: filing a decision request or a quiet update, then handling the reply. CX Codex +1 ★ 8,227repo stars agent-startup-and-context-ingestion A skill for anyone writing an agent's startup files: it covers the four failure modes of startup context and how a seat picks up its role and current operating mode. CX Codex +1 ★ 8,227repo stars rigs Set up OpenRig and hand a coding task to its agent team. The skill is for projects where you want Claude Code and Codex agents working side by side. CX Codex +1 ★ 8,227repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor