Arbiter Client reference
arbiter is the client-facing command for agents and humans. It connects to an
Arbiter server and exposes discovery and operation execution.
Most users and agents should start with info server, then drill into
plugins or op as needed.
Arbiter exposes a hierarchical discovery surface. Start with server orientation, then drill into the plugin, account, policy, or operation needed for the task:
arbiter info server
arbiter plugins smtp
arbiter op desc smtp:send_email
Global options
arbiter [--config-dir DIR] [--config-name NAME] <command>
--config-dir DIR: client config directory. Defaults to~/.arbiter.--config-name NAME: client config file name without.yaml. Defaults toarbiter-client.--version: print the installed version.
The client reads the server URL from its config. The current config key is
arbiter.url; you can override it per command with a Hydra-style argument:
arbiter info server arbiter.url=https://127.0.0.1:8075
The client accepts Arbiter's local self-signed TLS certificates by default.
Configure arbiter.tls_ca_file in the client config when you want certificate
verification against a specific certificate authority file.
When the server reports deployment_scope=staged, the client prints a small
heads-up on stderr so you know you are talking to a staged deployment.
Default client config:
~/.arbiter/arbiter-client.yaml
Example:
arbiter:
url: https://127.0.0.1:8075
bootstrap
Create the client config file.
arbiter bootstrap client [--force] [override...]
--force: overwrite an existing client config.
Example:
arbiter bootstrap client arbiter.url=https://127.0.0.1:8075
Common flow
arbiter info server
arbiter plugins
arbiter plugins smtp
arbiter plugins smtp account bot
arbiter op desc smtp:send_email
arbiter op run smtp:send_email --args '{"account":"bot","to":["ops@example.com"],"subject":"Hello","text_body":"Hi"}'
info
Show server identity. Bare arbiter info prints a short help menu.
arbiter info
arbiter info server [--yaml]
info server prints JSON by default so agents and scripts can consume it
directly. For terminal reading, pipe it through jq:
arbiter info server | jq
Use --yaml when you want readable YAML output instead:
arbiter info server --yaml
info: show help for server info commands.info server: show the server URL, deployment scope, version, and source metadata when available.
plugins
Discover plugins and plugin-scoped accounts and policies.
arbiter plugins [--yaml]
arbiter plugins <plugin> [--yaml]
arbiter plugins <plugin> accounts [--yaml]
arbiter plugins <plugin> account <account> [--yaml]
arbiter plugins <plugin> policy <policy> [--yaml]
plugins: list installed plugins.plugins <plugin>: describe one plugin.plugins <plugin> accounts: list configured accounts for one plugin.plugins <plugin> account <account>: show one account with its policy.plugins <plugin> policy <policy>: show one redacted policy.
op
Discover and run operations.
arbiter op list [plugin]
arbiter op desc <operation-id>
arbiter op run <operation-id> --args '<json-object>'
op list: list operation summaries.op desc: show one operation and its input schema.op run: run one operation with JSON arguments.operationis an alias forop.
Example:
arbiter op run smtp:send_email --args '{"account":"bot","to":["ops@example.com"],"subject":"Hello","text_body":"Hi"}'