CLI Configuration
Point arcane-cli at your server, sign in, and choose which environments a command covers.
Set up arcane-cli once after you install it. It keeps its server URL, credentials, and defaults in a YAML config file; change values with arcane-cli config set <key> <value>.
Set up the CLI
Section titled “Set up the CLI”- Create a starter config file with
arcane-cli config init. - Set your server URL with
arcane-cli config set server-url http://localhost:3552. - Sign in with one of the methods below.
Sign in
Section titled “Sign in”With a device code
Section titled “With a device code”Use this to sign in through your identity provider in a browser. Your server needs OIDC set up.
arcane-cli auth loginThe session is saved to ~/.arcanecli/auth.json, not the config file (see Auth file). Device-code login can’t complete an MFA challenge, so with passkey MFA on, use an API key. See Passkeys & MFA.
With an API key
Section titled “With an API key”Use this for CI/CD, automation, or accounts with MFA.
arcane-cli config set api-key arc_xxxxxxxChange list limits
Section titled “Change list limits”List commands are paginated. Page size comes from, in order: --limit on the command, pagination.resources.<resource>.limit, pagination.default.limit, then the command’s built-in default. Set limits from the CLI:
arcane-cli config set default-limit 25arcane-cli config set pagination.resources.containers.limit 50 pagination.resources.images.limit 100You can also edit pagination in the config file (see the example below). Resource names are containers, images, volumes, networks, projects, environments, registries, templates, repos, gitops-syncs, users, roles, events, and apikeys.
For doctor, shell completion, and other commands, see CLI Commands.
Work across environments
Section titled “Work across environments”Commands cover every enabled environment your server shows you, including local Docker. Pass --env <id> to limit a read to one environment or choose where a create goes:
arcane-cli containers listarcane-cli --env 2 containers listAuthentication, config, environments, registries, repositories, templates, variables, and system backups aren’t tied to an environment, so --env doesn’t change them.
Container, image, volume, network, project, and vulnerability lists print one table with an ENVIRONMENT column. They read up to the server’s Environment limit (64 by default) in one request; environments beyond it or that failed are reported on stderr. With --json they print the server’s merged response, with failures in failedEnvironments.
Other reads run in each environment in turn. With --json they print one document that wraps each environment’s result:
{ "success": true, "environments": [ { "environmentId": "0", "environmentName": "Local Docker", "result": { "success": true, "data": [] } } ]}A failed environment has error instead of result, success is false, and the command exits nonzero.
Actions on one resource
Section titled “Actions on one resource”Commands that take a resource name or ID, such as containers restart nginx, search every environment. One match runs right away, and stderr shows which environment was picked. Several matches open a picker, or fail without a terminal or with --json until you pass --env.
Creates, imports, builds, image pulls and uploads, and conversions need a destination. In a terminal the CLI asks you to pick one; otherwise pass --env.
Changes in every environment
Section titled “Changes in every environment”Prune, update checks, updater runs, settings and schedule updates, and similar changes ask <command> in all N environments? once, then run in each environment in turn. --yes or --force skips the question. A failure in one environment doesn’t stop the others, but the command exits nonzero.
If your credentials can’t list environments, for example an API key limited to one environment, the CLI stops with these credentials cannot list environments; pass --env <id> to choose one.
Verify self-update signatures
Section titled “Verify self-update signatures”Turn this preview on so arcane-cli self-update checks the release signature before it trusts any checksum. Every release signs its checksum file with the Arcane cosign key and records it in Sigstore’s public transparency log.
arcane-cli config set previews.newSelfUpdater truearcane-cli self-update runThe CLI downloads the checksum file and its .sigstore.json bundle and confirms the file was signed with the Arcane key, is in the transparency log, and is unchanged. Only then does it check the binary against that checksum. The key is built in, so you don’t need cosign installed.
If verification fails, the update stops and your binary is unchanged; there’s no fallback to an unverified update. Verification also runs with --dry-run and --json, and the JSON output reports signatureVerified and bundleUrl.
Network access and caching
Section titled “Network access and caching”The first verified update downloads Sigstore’s trust data from tuf-repo-cdn.sigstore.dev. It’s cached in arcane-cli/sigstore under your user cache directory (~/.cache on Linux, ~/Library/Caches on macOS). Later updates use the cache, even offline, until the trust data expires; then the CLI must reach tuf-repo-cdn.sigstore.dev again.
Older releases
Section titled “Older releases”Releases before v1.18.0 are unsigned and can’t be installed with this preview on. Turn it off first:
arcane-cli config set previews.newSelfUpdater falsearcane-cli self-update --version v1.17.4A signature proves Arcane published a release. It does not stop you from installing an older signed release, for example with --version.
Reference
Section titled “Reference”Config file
Section titled “Config file”The config file is at ~/.config/arcanecli.yml by default. Print the exact path, then see a typical file below:
arcane-cli config pathpreviews: newSelfUpdater: falseapi_key: ''cli_update_channel: stablefederated_audience: ''log_level: infopagination: default: limit: 20 resources: containers: limit: 50 images: limit: 100server_url: http://localhost:3552Auth file
Section titled “Auth file”auth login, auth refresh, auth federated --persist, and config set jwt-token save session tokens to ~/.arcanecli/auth.json with owner-only permissions. With --json, auth login and auth refresh print the tokens instead of saving them. Tokens are stored per server URL, so a session for one server is never sent to another. auth logout removes the current server’s session.
{ "https://arcane.example.com": { "accessToken": "eyJ...", "refreshToken": "..." }}If auth.json is damaged, the CLI ignores it with a warning but can’t save new sessions. Run arcane-cli config backup --auth to move it to auth.json.bak, then sign in again.
API keys set with arcane-cli config set api-key stay in the config file. A config with an API key ignores saved sessions and always authenticates with the key.
Global flags
Section titled “Global flags”These flags work on every command.
| Flag | Purpose |
|---|---|
--output <mode> |
Output mode, text or json. --json is an alias for --output json. |
--env <id> |
Limit the command to one environment. Without it, commands cover all environments. |
--yes, -y |
Auto-confirm destructive prompts. |
--no-color |
Disable ANSI color output. |
--request-timeout <duration> |
Override the HTTP timeout for one command. |
--config, -c <path> |
Use a config file other than the default. |
--log-level <level> |
Set verbosity: debug, info, warn, error, or fatal. |
--log-json |
Emit structured JSON logs. |