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.
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.
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.
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.
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
| Command | What it does (from help) | Help source |
|---|---|---|
rig file |
Cross-host file movement over ssh/rsync (v0: one explicit verb , copy) | file.txt |
rig file copy |
Copy 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 gateway |
Gateway: the human registry + connector surfaces | gateway.txt |
rig gateway human |
Manage human specs (file-per-human fragments under gateway/humans/) | gateway.human.txt |
rig gateway human add |
Add a human fragment (verb-add-only; the fragment is truth, the registry is a GENERATED projection) | gateway.human.add.txt |
rig gateway human list |
Show 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 remove |
Remove 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 set |
Edit 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 show |
Show the effective record: fragment values + which defaults filled the rest, with provenance | gateway.human.show.txt |
rig host |
Manage the multi-host registry (~/.openrig/hosts.yaml) | host.txt |
rig host add |
Add a host entry (validated with the registry loader's own rules) | host.add.txt |
rig host doctor |
Stepwise host verification (+ --posture for the product-factory-vps baseline) | host.doctor.txt |
rig host list |
List registered hosts w/ status + selected marker (config pointers only , never secret values) | host.list.txt |
rig host pair |
Pair with a remote host from one pasted address , one approval on the target, done (FR-6) | host.pair.txt |
rig host rename |
Rename THIS host's display name (renders in dashboard, explorer, ls, whoami) | host.rename.txt |
rig host select |
Select which host you are viewing/acting on (persisted; 'local' returns to this host) | host.select.txt |
rig slack |
Slack connector: configuration + in-daemon subsystem admin (S10) | slack.txt |
rig slack disable |
Disable the connector (the daemon rewires to an inert delivery path) | slack.disable.txt |
rig slack enable |
Enable 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 inbound | slack.inbound.txt |
rig slack outbound |
[RETIRED , S10] the in-daemon subsystem owns outbound delivery | slack.outbound.txt |
rig slack setup |
Configure the connector (first-class config; secrets stay in the env file, never here) | slack.setup.txt |
rig slack status |
Show the connector's configured + resolvable state (honest; no network) | slack.status.txt |
rig slack verify |
Live-verify GRANTED Slack scopes (from response headers) + channel membership | slack.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 copyoverwrites an existing destination; preview with--dry-run.
Where it goes next
- Messaging: the seat-to-seat channel that
--hostextends. - Coordination: the queue row that carries a human request and its receipt.