Oarbank has six commands. Every one prints its full usage with --help, and oarbank <command> --help shows a
command’s own arguments. This page lists them as of Oarbank 2.11.1 and module SDK 1.8.0.
| Command |
Runs on |
What it is |
oarbank |
the coordinator |
The operator CLI: nodes, settings, groups, sites, protection, jobs, campaigns, modules, workloads, inbound listeners, host tools, datasets, secrets, accounts, signing and moves |
oarbank-setup |
the coordinator |
Opens the first-run setup wizard, or refreshes the services of an existing wizard-managed installation |
oarbankd |
the coordinator |
The coordinator service itself; the installers run it, you normally do not |
oarbank-node |
each node |
Joins the node to a fleet, checks a code, shows where the node is, and leaves |
oarbank-agent, oarbank-launcher, oarbank-uninstall |
each node |
The node’s agent, the launcher that installs, runs and rolls back agent builds (oarbank-node is the launcher under a second name), and the macOS node uninstaller |
oarbank-sdk |
a module author’s computer |
The module SDK’s tools: validate, preview, bundle and test modules |
|
oarbank |
oarbank-setup |
| macOS |
/usr/local/bin/oarbank, a link to /Applications/Oarbank Coordinator.app/Contents/Resources/coordinator/bin/oarbank |
/usr/local/bin/oarbank-setup |
| Linux |
/usr/bin/oarbank, a link to /opt/oarbank/coordinator/bin/oarbank |
/usr/bin/oarbank-setup |
| Windows |
oarbank from C:\Program Files\Oarbank\Coordinator\package\cli on the system PATH, which runs C:\Program Files\Oarbank\Coordinator\current\bin\oarbank.cmd (an elevated prompt) |
C:\Program Files\Oarbank\Coordinator\package\oarbank-setup.ps1 (asks for elevation) |
From 2.9 the coordinator packages put oarbank on the PATH (open a new terminal after installing); the full paths
work the same. The node packages put oarbank-node on it: /usr/local/bin/oarbank-node on macOS,
/usr/bin/oarbank-node on Linux, and C:\Program Files\Oarbank\oarbank-node.exe on Windows.
The CLI talks to the coordinator through its local admin channel, which admits the members of the coordinator’s
owners’ group: _oarbankadmin on macOS, oarbank-admin on Linux, administrators in an elevated prompt on Windows
(The coordinator service). Anywhere else, sign in with
oarbank console login or use a personal access token from oarbank token create.
On a node, the programs are in /Library/Oarbank/bin/ on macOS, in /usr/lib/oarbank/ on Linux (with
oarbank-launcher linked into /usr/bin), and in C:\Program Files\Oarbank on Windows.
Commands that change the fleet share these flags:
--reason TEXT records why in the audit log (or set OARBANK_REASON). Some operations require it.
--yes (or -y) skips the interactive confirmation.
--confirm NAME is the extra confirmation of the most dangerous operations: it must name the resource, for
example the campaign or the coordinator move’s target.
--dry-run shows what would change and changes nothing. oarbank op --dry-run exits 2 when there are changes.
--json (on show and explain) prints the document instead of the summary.
oarbank ops lists every operation with its tier and reason policy.
| Command |
What it does |
oarbank fleet |
Every node: state, online, jobs and slots, protection, modules, GPU APIs, caps; pending enrollments; campaigns |
oarbank node show <node> |
One node: doctor, GPU APIs with evidence, containers, services, what each module keeps there and when what is leaving goes, folders, host tools, sandbox, the settings it sets itself, agent version |
oarbank job show <id> |
One job: attempts, checkpoint, results, and why it is where it is |
oarbank explain job <id> |
Why a job is pending, as the scheduler’s own reason codes (Reason codes) |
oarbank explain node <id> |
Why a node takes no work |
oarbank verify [--strict] |
Checks protocol invariants and fleet health; exits 1 on a violation (--strict: also on warnings) |
oarbank alerts list |
Open alerts; ack, snooze, resolve <id> with --useful or --noise; precision for the monthly review |
oarbank audit log |
The audit log (--limit, --op, --target); audit verify [--against FILE] checks its hash chain |
oarbank modules |
The installed modules with their versions and what they require |
oarbank module ready [<name>] |
A module’s readiness checklist, every step with its status, reason and fix (every module without a name) |
| Command |
What it does |
oarbank join-code [--label NAME] [--ttl SECONDS] [--uses N] [--approve|--no-approve] [--system] [--containers] |
A join code for new machines: single use and approved at once by default (4 hours); --uses N lets N machines join, each waiting for approval unless --approve |
oarbank join-codes [--all] |
Outstanding join codes, their uses and the machines that used them |
oarbank join-code revoke <id> |
Revoke a code; machines that already joined with it stay |
oarbank node approve <enrollment> / reject |
Decide a pending enrollment (a machine from a multi-use code, or one joined by the coordinator’s address) |
oarbank node approve-code <CODE> |
Approve the waiting machine that shows this 8-letter code |
oarbank node state <node> active|paused|draining |
Take work, stop taking work, or finish current work and then stop |
oarbank node mode <node> fleet_first|moderate|strict_yield |
The node’s own protection mode (how strongly it yields to the person using it) |
oarbank node label <node> <a,b> [--remove] |
Add or remove owner labels |
oarbank node sign <node> |
Sign the node’s statement (folders and tool paths it did not find itself), in signing mode |
oarbank node confirm-identity <node> |
Confirm a node’s identity after a key change |
oarbank protection show <node> |
The node’s effective protection rules and where each comes from |
oarbank protection set|preview <node|fleet|group:G> <file> |
Replace (or preview replacing) one scope’s own protection section, from a JSON or TOML file |
oarbank protection probe <node> |
Run a protection probe now |
oarbank protection ab start <node> --rule <id> [--work gpu|cpu|all|<module>|<module>/<workload>] [--duty D] [--blocks N] [--window S] [--washout S] [--margin M] [--off paused|evicted] [--max-hours H] |
Measure what fleet work costs a protected program with the paired on/off harness (2.10, Prove co-tenancy is safe) |
oarbank protection ab sweep <node> --rule <id> [--levels 0.1,0.2,…] |
Run the harness at rising gpu_duty levels; the highest passing level is the node’s certified duty |
oarbank protection ab status [<node>], oarbank protection ab show|abort <run> |
Harness runs and their reports; abort one |
oarbank protection certificates [<node>] |
Co-tenancy certificates: valid, expired or stale, and why |
oarbank protection duty [<node>] |
The GPU duty governor: budget against the certified ceiling, baselines, each unit’s asked and measured duty, recent steps |
Per-node caps and policy are settings from 2.9: oarbank node limits and oarbank node policy are gone (below).
Settings explains the model. Without a scope flag, set and reset act on the fleet;
both preview the per-node impact, then apply.
| Command |
What it does |
oarbank settings get [<key>] [--node N] [--module M] [--campaign C] [--json] |
Effective values with their source; one key’s chain with --explain |
oarbank settings explain <key> [--node N] [--module M] [--campaign C] |
The whole chain for one key |
oarbank settings set <key> <value> [--node N | --group G | --nodes A,B | --label L | --campaign C] [--module M] [--enforce] [--comment TEXT] [--dry-run] |
Set a value; --enforce locks it at the fleet or a group |
oarbank settings reset <key> [the same scope flags] [--module M] |
Remove a value, so the scope inherits again |
oarbank settings overrides <key> [--module M] |
Who overrides the fleet value, with what |
oarbank settings promote <key> --group G [--to <group>] |
Move a group’s value (a canary) to the fleet or a wider group |
oarbank settings schema |
Every key, every installed module’s keys included |
oarbank settings set-secret|clear-secret ntfy_token |
The write-only ntfy token (asked for hidden, twice) |
oarbank settings export [--scope fleet|group:G|node:N] [--module M] [--out FILE] |
Settings as YAML |
oarbank settings import FILE [--dry-run] |
Apply a file’s differences as one change (--dry-run exits 0 with no changes, 2 with changes) |
oarbank settings shadowed [--yes] |
Values that change nothing; --yes resets them |
oarbank settings drift |
Nodes not running their latest settings |
oarbank groups list|show [G] |
Groups by rank, with members and why |
oarbank groups create <name> [--os --arch --label --hostname --battery|--no-battery --ram-min --ram-max --cores-min --selector JSON --member …] |
A node group |
oarbank groups update <G> [selector flags] [--name --description --no-selector --no-members] |
Change a group |
oarbank groups rank <G> up|down|top|bottom, oarbank groups delete <G> |
Reorder or delete a group (deleting deletes its values) |
oarbank sites list|show [S]|suggest |
Sites (nodes sharing one internet line) with their budget and state, and suggested sites (2.10, Sites) |
oarbank sites create <name> --node N … [--transfers N --heavy-jobs N --mbps M], oarbank sites update <S> […] |
A site and its uplink budget (Sites) |
oarbank sites add <S> <node>…, oarbank sites remove <node>…, oarbank sites delete <S> |
Members of a site |
oarbank sites accept <key> [--name N | --site S], oarbank sites dismiss <key> |
Take or drop a suggestion |
From 2.10 (Make a node reachable). A listener is <module>/<listener>.
| Command |
What it does |
oarbank listener list [<node>] |
Each node’s listeners: state, where reachable, mapping, result, connections |
oarbank listener show <node> <module>/<listener> |
One listener: its result and fix, the owner’s entry, router mappings and top client addresses |
oarbank listener mappings [<node>] |
The router mappings the agents hold, and other mappings the routers report (never touched) |
oarbank listener set <node> <module>/<listener> [--external-port P] [--fallback refuse|next_free:A-B|router_choice] [--mapping auto|pcp|natpmp|upnp|manual|none] [--internal-port P] [--bind ADDR] [--ipv6 auto|off] [--limit KEY=VALUE …] [--allow CIDR …] |
Assign a listener to a node, or change its entry (sign the statement in signing mode) |
oarbank listener remove <node> <module>/<listener> |
Take the entry away: the listener closes and its mapping goes |
oarbank listener probe <node> <module>/<listener> |
Check it from outside now (the Network card’s Check now) |
oarbank listener disable|resume --node N | --all |
The kill switch: close every listener and remove every mapping on a node or the fleet, and undo it |
| Command |
What it does |
oarbank tools [--node N] [--module M] [--json] |
Tool definitions, what each node found, and each module’s resolution |
oarbank tools detect <node> [--wait [S]] |
Ask a node to detect again; --wait prints what it found |
oarbank tools define <id> --search <scope>=<pattern> [--kind jdk|python|executable --version-args … --version-regex …] |
Define a tool, or add search patterns (scope fleet, darwin, linux, windows) |
oarbank tools delete <id> |
Delete a definition (a built-in loses only your extra patterns) |
oarbank settings set|reset tool.<id>.path <path> --node <node> [--module M] |
Choose or add the installation a node grants (Host tools) |
| Command |
What it does |
oarbank campaign list / show <id> |
Campaigns: every module’s grouped work |
oarbank campaign pause|resume|cancel|retry-failed <id> |
Control a campaign |
oarbank campaign weight|priority <id> <value> |
Share of the fleet, and order |
oarbank campaign rebind <id> --platform <token> / placement <id> --mix same-os|same-arch|same-platform |
Where its work may run |
oarbank campaign download <id> [dir] |
Download its artifacts |
oarbank job retry|cancel <id> |
One job |
oarbank workload list [--node N] [--module M] |
Workloads and their state on each node: seat, lease, held or paused, last error (2.10, Workloads) |
oarbank workload assign <module>/<workload> --node N | --count C [--dry-run] |
Assign a workload to a node, or place C copies of a seat = "fleet" workload |
oarbank workload unassign|restart <module>/<workload> --node N |
Stop it on a node for good, or restart it there (also lifts a withdrawal) |
oarbank workload logs <module>/<workload> --node N [--follow] |
Its log tail |
oarbank pause --all / halt --all / resume --all |
Stop handing out work / stop work now / start again, fleet-wide |
| Command |
What it does |
oarbank module install <bundle> |
Install a module bundle (--dry-run first) |
oarbank module list / show <name> / verify <name> / check <name> [--deep] |
Inspect installed modules |
oarbank module approve|enable|canary|promote|rollback|disable|pin|unpin|uninstall <name>[@<version>] |
The module lifecycle: canary on chosen nodes (--node) or a group’s members (--group), promote, roll back |
oarbank module purge <name> --node <node> | --all [--yes] |
Delete what a module left on a node, or on every node where it is turned off, at the node’s next heartbeat; refused where it is enabled (2.11, When a module leaves a node) |
oarbank mod <module> <verb> [target] -p key=value |
Run one of a module’s own operations |
oarbank cli <module> [args…] |
Run a module’s own command line on the coordinator, sandboxed |
oarbank dataset upload <folder> / download <id> [dir] / list / show <id> / register <file.json> |
Datasets |
oarbank folders list / map <folder> --node <node>=<path> / sign <node> |
Folders modules may read or write on nodes |
oarbank secret set|clear|list <module> [name] [--node NODE | --group GROUP] |
Module secrets, write-only: set reads the value from stdin or a no-echo prompt |
| Command |
What it does |
oarbank account list|create|disable|enable|role|reset-totp|password [name] |
Console accounts (--role admin|operator|viewer) |
oarbank token create|revoke |
Personal access tokens |
oarbank console login [--open] |
A console sign-in link |
oarbank agent list|upload|sign|canary|promote|rollback |
Node agent self-update; list shows the version every node runs |
oarbank update status|releases|import|fetch|sign|plan|start|pause|resume|halt|rollback|skip|hold|unhold|pin|unpin|coordinator |
Fleet updates: whole node packages and the coordinator, ring by ring (Update the fleet) |
oarbank release build|keygen|sign|promote|list |
Release bundles and the release signing key |
oarbank owner show|set|disable|rescue-move |
The owner key set (signing mode) |
oarbank coordinator status|prepare|move|sign|cancel|finalize |
How the coordinator runs (status), and moving it to another machine |
oarbank coordinator migrate [--status] |
Move a 2.8 per-user coordinator to the system service (macOS, Linux); --status shows what is installed and the migration record |
oarbank coordinator-build list|upload|sign, oarbank vendor-metadata upload <dir> |
Coordinator builds and update metadata for moves and agents |
oarbank op <operation> [target] / oarbank ops |
Any operation from the registry, and the registry itself |
| 2.8 |
2.9 |
oarbank node policy, oarbank node limits |
oarbank settings get|set|reset … --node <node> |
oarbank pipeline single|split --module <name> |
oarbank settings set pipeline split --module <name> |
oarbank protection restore|canary|promote |
a canary group, then oarbank settings promote protection.rules --group <group> |
oarbank-setup --root <dir> [--no-browser] [--port PORT] opens the setup wizard on loopback. The coordinator
app runs it for you; run it yourself only to start the services again after they stopped. It asks for an
administrator and never creates a second fleet over an existing one.
oarbankd is the coordinator service. Its flags (--agent-bind, --agent-port, --standby --pair … --from … --from-ca … for a move target) are set by the installers and the move procedure.
| Command |
What it does |
oarbank-node join |
Join this machine: prompts for the code (hidden), or --code-stdin, --code-file PATH; --coordinator URL joins by address with a device code. Checks first, then waits until joined (--no-wait, --wait SECONDS). macOS: --scope system (the default with sudo) or personal. Also --name, --containers (Windows), --json, --force |
oarbank-node check |
The same checks without joining: the code’s format and expiry, DNS, the port, the coordinator’s identity and certificate authority, the clock |
oarbank-node status [--json] [--follow] |
Where the node is: not joined, waiting for approval, connected, or why joining failed |
oarbank-node leave |
Forget the coordinator: the node’s key, certificate, caches and logs go |
oarbank-node doctor [--json] |
Status, the checks against the node’s coordinator, and the container runtime |
oarbank-agent policy |
The managed policy in force, as JSON; a join code shows as (set) |
oarbank-agent tools detect |
Detect the node’s host tools now and print what was found (run as the agent’s account) |
oarbank-launcher --version |
The launcher’s version (the agent itself updates through the coordinator: see oarbank agent list) |
oarbank-launcher update-run, update-trust |
The node’s root update runner, started by its launchd job, systemd path unit or the Windows helper; sudo oarbank-launcher update-trust --from-agent pins update trust on a node that joined after its package was installed |
oarbank-agent discover |
Coordinators announcing themselves on the local network, and whether macOS Local Network privacy blocks it |
oarbank-agent gpu-apis |
The GPU APIs this node provides and why any is missing (Linux: sudo -u oarbank /usr/lib/oarbank/oarbank-agent gpu-apis) |
oarbank-agent containers doctor [--probe] [--gpu] |
The node’s container runtime: its state, each missing piece with its fix (exit 3 while something is missing); --probe runs real containers. On macOS run it as the agent’s account (Containers on nodes) |
oarbank-agent containers install |
Windows: install the WSL container prerequisites (administrator) |
oarbank-agent portmap status |
The router mappings this node’s agent requested, from its journal, as JSON (2.10) |
oarbank-agent portmap release-all |
Delete every mapping the agent made (only its own); node removal runs it. Exit 3 when a router could not be asked |
oarbank-agent firewall status |
Whether the host firewall lets connections reach the agent, as JSON (2.10) |
oarbank-agent firewall allow [--port P …] |
Let connections reach the agent (administrator): macOS lists the agent in the Application Firewall; Linux opens the given ports for it |
oarbank-agent probe-endpoint [--bind ADDR:PORT] |
Serve dial-back checks for the fleet’s listeners from a machine on another network (default 127.0.0.1:7480; put it behind HTTPS and name it in listener_probe_endpoint) |
oarbank-uninstall [--purge] |
macOS: unload the node’s service; --purge deletes its home; with sudo also removes the programs |
oarbank-launcher service refresh [--system] |
Render the agent’s installed launchd job or systemd unit again with this launcher’s settings, keeping its program, account and environment, and reload it. Node package upgrades run it for you |
oarbank-launcher remove --scope system [--purge] |
Stop and remove the node’s service (the Linux package’s removal runs it); --purge also deletes the node’s home |
| Command |
What it does |
oarbank-sdk check <module-dir> |
Validate a module’s manifests strictly |
oarbank-sdk conform <module-dir> |
Run the conformance kit: the module’s runner as each platform would run it. It must end with 0 failed |
oarbank-sdk preview <module-dir> |
Render the module’s console pages against fixtures |
oarbank-sdk bundle build|verify|wheels |
Build or verify a module bundle; wheels downloads the pinned wheels for every declared platform |
oarbank-sdk deps |
A module’s Python dependencies |
oarbank-sdk gpu-apis |
The GPU APIs this computer provides, as a node’s agent would detect them (JSON) |
oarbank-sdk export-schemas |
Regenerate schemas/ from the models (SDK development) |
Build a module in a day uses each of them in order.