zuno providers
zuno providers manages which model providers this installation can reach and the credentials it holds for them. Login methods differ per provider, so the flow is: ask which methods a provider implements, authenticate with one of them, and remove the stored credential when it is no longer wanted.
Credentials are stored locally. logout removes them, which is what to run before handing over a machine or rotating an account.
Synopsis
zuno providers [OPTIONS] <COMMAND>Options
| Option | Description | Default |
|---|---|---|
-v, --version | Show the Zuno package version | |
--print-logs | Print logs to stderr in addition to the structured local log store | |
--log-level <LOG_LEVEL> | Set the minimum log level. Possible values: TRACE, DEBUG, INFO, WARN, ERROR | |
--sandbox <SANDBOX> | Select Shell confinement for this invocation. Possible values: read-only, workspace-write, danger-full-access | |
--sandbox-on-unavailable <ACTION> | Select what happens when confined Shell cannot be deployed. Possible values: deny, run-unconfined | deny |
--sandbox-backend <BACKEND> | Select the Shell execution backend for this invocation; native is not confinement. Possible values: auto, native | platform-dependent |
-h, --help | Print help (see a summary with -h) |
Subcommands
| Subcommand | Description |
|---|---|
list | |
methods | List the login methods implemented for a provider |
login | Authenticate a provider with one of its implemented login methods |
logout | |
help | Print this message or the help of the given subcommand(s) |
zuno providers list
zuno providers list [OPTIONS]| Option | Description | Default |
|---|---|---|
-v, --version | Show the Zuno package version | |
--print-logs | Print logs to stderr in addition to the structured local log store | |
--log-level <LOG_LEVEL> | Set the minimum log level. Possible values: TRACE, DEBUG, INFO, WARN, ERROR | |
--sandbox <SANDBOX> | Select Shell confinement for this invocation. Possible values: read-only, workspace-write, danger-full-access | |
--sandbox-on-unavailable <ACTION> | Select what happens when confined Shell cannot be deployed. Possible values: deny, run-unconfined | deny |
--sandbox-backend <BACKEND> | Select the Shell execution backend for this invocation; native is not confinement. Possible values: auto, native | platform-dependent |
-h, --help | Print help (see a summary with -h) |
zuno providers methods
List the login methods implemented for a provider.
zuno providers methods [OPTIONS] <PROVIDER>| Argument | Description |
|---|---|
<PROVIDER> | Provider id or display name |
| Option | Description | Default |
|---|---|---|
-v, --version | Show the Zuno package version | |
--print-logs | Print logs to stderr in addition to the structured local log store | |
--log-level <LOG_LEVEL> | Set the minimum log level. Possible values: TRACE, DEBUG, INFO, WARN, ERROR | |
--sandbox <SANDBOX> | Select Shell confinement for this invocation. Possible values: read-only, workspace-write, danger-full-access | |
--sandbox-on-unavailable <ACTION> | Select what happens when confined Shell cannot be deployed. Possible values: deny, run-unconfined | deny |
--sandbox-backend <BACKEND> | Select the Shell execution backend for this invocation; native is not confinement. Possible values: auto, native | platform-dependent |
-h, --help | Print help (see a summary with -h) |
zuno providers login
Authenticate a provider with one of its implemented login methods.
zuno providers login [OPTIONS] [TARGET]| Argument | Description |
|---|---|
[TARGET] | Provider id/name, or an HTTPS URL implementing /.well-known/zuno. Omit in a terminal to choose interactively. A URL login runs a program that the remote host names, shown for confirmation before it starts |
| Option | Description | Default |
|---|---|---|
-p, --provider <PROVIDER> | Provider id or display name, as an alternative to the positional target | |
-v, --version | Show the Zuno package version | |
-m, --method <METHOD> | Method id shown by zuno auth methods <provider>. Omit in a terminal to choose when several methods are available | |
--trust-remote-command | Run the program named by the URL's /.well-known/zuno document without an interactive confirmation. The remote host chooses that program and its arguments, and it runs with your privileges: pass this only for a host you already trust. Without it, a URL login refuses when stdin or stderr is not a terminal | |
--print-logs | Print logs to stderr in addition to the structured local log store | |
--log-level <LOG_LEVEL> | Set the minimum log level. Possible values: TRACE, DEBUG, INFO, WARN, ERROR | |
--sandbox <SANDBOX> | Select Shell confinement for this invocation. Possible values: read-only, workspace-write, danger-full-access | |
--sandbox-on-unavailable <ACTION> | Select what happens when confined Shell cannot be deployed. Possible values: deny, run-unconfined | deny |
--sandbox-backend <BACKEND> | Select the Shell execution backend for this invocation; native is not confinement. Possible values: auto, native | platform-dependent |
-h, --help | Print help (see a summary with -h) |
A URL target executes a command chosen by the remote host. zuno auth login <url> accepts https:// to any host, or plain http:// to a loopback IP address such as http://127.0.0.1:8080 or http://[::1]:3000; the URL must carry no userinfo. A hostname that merely begins with 127.0.0.1 (for example http://127.0.0.1.attacker.example), a user@host form, and http://localhost are refused before anything is fetched. Zuno downloads <url>/.well-known/zuno, prints the program and every argument that document names — one argument per line, quoted — and asks Run this command with No preselected; Enter, Esc, or Ctrl-C declines and nothing is run or stored. The credential is stored only after the confirmed command exits successfully. When stdin or stderr is not a terminal the login refuses instead of prompting; pass --trust-remote-command to run the remote-chosen command without confirmation, for a host you already trust. The flag is refused for provider logins.
With no provider configuration, the interactive picker still offers three product-level choices:
- OpenAI — official OpenAI, or a custom Responses endpoint. A custom endpoint is written as
transport: "openai"withsurface: "responses". - Amazon Bedrock — one user-facing provider. Setup asks for the region, optional profile, and either the AWS credential chain or a Bedrock API key. It does not ask for a model id: the provider inherits the complete supported model list and per-model transports from Models.dev. If that catalog entry is unavailable, run
zuno models --refreshbefore retrying login. - OpenAI-compatible — a custom endpoint using Chat Completions. Setup writes
transport: "openai-compatible"withsurface: "chat".
Setup collects only non-secret provider fields in visible prompts, reads API keys with terminal echo disabled, then atomically merges one provider into the global zuno.json. Existing unrelated configuration is retained. A validation or credential-storage failure restores the previous file rather than leaving a half-configured provider.
Authentication does not choose a Bedrock model or change the default model. After setup, use zuno models amazon-bedrock or the model picker to choose from the catalog instead of copying a vendor model id into the login prompt.
A configured Bedrock provider exposes bedrock-bearer-token. Selecting that method prints the bearer-token and AWS credential-chain priority before reading a hidden token. Piped login remains supported for already-configured providers:
printf '%s' "$AWS_BEARER_TOKEN_BEDROCK" |
zuno providers login amazon-bedrock --method bedrock-bearer-token2
The token is stored under that provider id with mode 0600 on Unix. If no stored or environment bearer token is present at request time, Bedrock uses the AWS SDK credential chain instead. AWS_BEARER_TOKEN_BEDROCK outranks the stored token.
zuno providers logout
zuno providers logout [OPTIONS] [PROVIDER]| Argument | Description |
|---|---|
[PROVIDER] |
| Option | Description | Default |
|---|---|---|
-v, --version | Show the Zuno package version | |
--print-logs | Print logs to stderr in addition to the structured local log store | |
--log-level <LOG_LEVEL> | Set the minimum log level. Possible values: TRACE, DEBUG, INFO, WARN, ERROR | |
--sandbox <SANDBOX> | Select Shell confinement for this invocation. Possible values: read-only, workspace-write, danger-full-access | |
--sandbox-on-unavailable <ACTION> | Select what happens when confined Shell cannot be deployed. Possible values: deny, run-unconfined | deny |
--sandbox-backend <BACKEND> | Select the Shell execution backend for this invocation; native is not confinement. Possible values: auto, native | platform-dependent |
-h, --help | Print help (see a summary with -h) |
Examples
See which providers this installation knows about.
zuno providers listAsk a provider which login methods it implements before choosing one.
zuno providers methods openaiAuthenticate with an explicit method instead of the interactive picker.
zuno providers login openai --method api-keyStore an Amazon Bedrock bearer token.
printf '%s' "$AWS_BEARER_TOKEN_BEDROCK" |
zuno providers login amazon-bedrock --method bedrock-bearer-token2
Remove the stored credential for one provider.
zuno providers logout openai