Skip to content

Other machines, and people ​

Documented against OpenRig 0.5.14. Help text uses "node" where these pages say seat, for a seat's position in the running rig.

What it is for ​

The world does not end at this machine. Other instances run on other machines and are reached through a declared registry, not a guessed hostname. rig host manages that registry, rig file copy moves one file between hosts without hand-rolling the address, and many verbs take --host <id> to act on a registered machine. People are addressed the same way as seats: rig gateway human registers a person and their connector, and a queue row created with that person's external address is the durable way to ask them for a decision. rig slack is one connector implementation.

The three commands you will use first ​

Register a machine and check it works end to end.

bash
rig host add --id vps-b --transport ssh --target vps-b.example.net --user ops
rig host list
rig host doctor

Act on it. The same verbs, with --host.

bash
rig capture --host vps-b dev-impl@my-rig --lines 50
rig transcript --host vps-b dev-impl@my-rig --tail 100
rig file copy ./brief.md vps-b:/home/ops/brief.md --dry-run

Reach a person durably. Register the human, check readiness, then create a row to their external address; the row's transitions are the receipt.

bash
rig gateway human add sam --display "Sam, product owner"
rig gateway human list
rig queue create --destination sam@external --body-file decision.md --verify

Slack as a connector ​

rig slack setup records the channel, the inbound destination seat and the notification levels; secrets stay in a 0600 env file, never in config. status says whether it is configured and resolvable without touching the network; verify live-checks granted scopes and channel membership; enable and disable switch the daemon's delivery path. Notification levels are RECORD, NOTICE and ALERT, and the posting and interrupting thresholds are set separately.

bash
rig slack setup --channel C0123 --inbound-destination direction-lead@my-rig --secrets-env-file ~/.openrig/slack.env
rig slack status
rig slack verify
rig slack enable

The host, file, gateway and slack families ​

CommandWhat it does (from help)Help source
rig fileCross-host file movement over ssh/rsync (v0: one explicit verb , copy)file.txt
rig file copyCopy one file. <hostId>:<absolute-path> = remote (ssh registry entry); bare path = local; local files with a colon need the ./ prefix. Valid shapes: local→remote, remote→local, local→local. An existing destination is OVERWRITTEN , preview with --dry-run.file.copy.txt
rig gatewayGateway: the human registry + connector surfacesgateway.txt
rig gateway humanManage human specs (file-per-human fragments under gateway/humans/)gateway.human.txt
rig gateway human addAdd a human fragment (verb-add-only; the fragment is truth, the registry is a GENERATED projection)gateway.human.add.txt
rig gateway human listShow the configured human (single-human surface per A1/R5; several fragments render honestly with a 0.5.7 advisory)gateway.human.list.txt
rig gateway human removeRemove a human: refuses while open conversations or non-terminal rows exist (--force archives and records what was orphaned; the fragment is archived, never deleted)gateway.human.remove.txt
rig gateway human setEdit one field through the verb (same validation as add; re-projection immediate). Fields: display-name, delivery-class, away, binding.<n>gateway.human.set.txt
rig gateway human showShow the effective record: fragment values + which defaults filled the rest, with provenancegateway.human.show.txt
rig hostManage the multi-host registry (~/.openrig/hosts.yaml)host.txt
rig host addAdd a host entry (validated with the registry loader's own rules)host.add.txt
rig host doctorStepwise host verification (+ --posture for the product-factory-vps baseline)host.doctor.txt
rig host listList registered hosts w/ status + selected marker (config pointers only , never secret values)host.list.txt
rig host pairPair with a remote host from one pasted address , one approval on the target, done (FR-6)host.pair.txt
rig host renameRename THIS host's display name (renders in dashboard, explorer, ls, whoami)host.rename.txt
rig host selectSelect which host you are viewing/acting on (persisted; 'local' returns to this host)host.select.txt
rig slackSlack connector: configuration + in-daemon subsystem admin (S10)slack.txt
rig slack disableDisable the connector (the daemon rewires to an inert delivery path)slack.disable.txt
rig slack enableEnable the connector (daemon seeds the current backlog as history , no replay storm , then rewires)slack.enable.txt
rig slack inbound[RETIRED , S10] the in-daemon subsystem owns Socket Mode inboundslack.inbound.txt
rig slack outbound[RETIRED , S10] the in-daemon subsystem owns outbound deliveryslack.outbound.txt
rig slack setupConfigure the connector (first-class config; secrets stay in the env file, never here)slack.setup.txt
rig slack statusShow the connector's configured + resolvable state (honest; no network)slack.status.txt
rig slack verifyLive-verify GRANTED Slack scopes (from response headers) + channel membershipslack.verify.txt

What it does not do ​

  • Across a host boundary, "it didn't work" has four shapes: unreachable machine, permission gate, remote runtime down, or the remote command itself failed. A successful transport says nothing about the operation.
  • Transports differ by host: an ssh entry carries send and capture; an http entry carries lifecycle verbs; the registry entry says which.
  • Registering a human or configuring a connector does not send anything. A posted receipt proves posting, not that anyone read it.
  • rig file copy overwrites an existing destination; preview with --dry-run.

Where it goes next ​

  • Messaging: the seat-to-seat channel that --host extends.
  • Coordination: the queue row that carries a human request and its receipt.

Read as Markdown

Self-contained SOP. No outbound links. OpenRig 0.5.14.