Skip to main content

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 to arbiter-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.
  • operation is an alias for op.

Example:

arbiter op run smtp:send_email --args '{"account":"bot","to":["ops@example.com"],"subject":"Hello","text_body":"Hi"}'