The binary is anypick. The first
bare interactive run asks whether future bare runs should open the
terminal UI or desktop Tray.
Global flags
Valid on every command.
| Flag | Effect |
|---|---|
--json |
Machine-readable output |
-v, --verbose |
Verbose logging |
-q, --quiet |
Minimal output |
--dry-run |
Print the plan; write nothing |
--reveal |
Show secrets — dangerous |
--no-input |
Never prompt, even on a TTY |
-y, --yes |
Skip destructive confirmations |
--trace |
Print internal step names, without secrets |
--tui |
Open the Terminal UI for this run |
--tray |
Open the desktop Tray for this run |
Bindings
anypick use [client] [--with <source>] [--current]
[--model <id>] [--save <name>]
anypick run [client] [--with <source>] [--model <id>]
anypick current [client]
anypick link <client> [--with <source>] [--model <id>]
anypick unlink [client]
anypick reset [client]| Command | Description |
|---|---|
use |
Set what a client uses by default |
use --current |
Re-apply the stored global binding |
use --save <name> |
Bind, and also save the result as a preset |
run |
Launch a client with its effective binding |
current |
Show effective bindings |
link / unlink |
Project-scoped bindings for the current directory |
reset |
Remove AnyPick-managed configuration for a client |
--with accepts an account (grok/work), a gateway name, a pool
(pool:gemini), the Proxy Hub (hub:default), or a preset (@work-stack).
Inventory
anypick list [accounts|gateways|clients|presets]
anypick providers
anypick clientslist with no argument prints all four. ls is an alias.
Adding sources
anypick add account [provider] [--current] [--new]
[--name <name>] [--source <id>]
[--api-key [key]] [--region <region>]
anypick add gateway [name] --provider <id> --endpoint <url>
[--api-key <key> | --api-key-env <var>]
[--model <id>] [--models <id...>]--current snapshots the login that is live now; --new stashes it first so the
provider’s CLI prompts for a fresh one. --source gemini-cli|antigravity picks
which Gemini sign-in to read. --api-key saves a key you already hold instead of
a login — currently kiro only — and prompts for the value when it is omitted;
--region pins the API region for it.
Accounts
anypick account list [provider]
anypick account refresh <provider> [name] [--all]
anypick account remove <provider> <name>
anypick account export <provider> <name> -o <file>
anypick account import <provider> <name> -i <file> [-f]refresh with no name refreshes the live login. rm is an alias for remove,
ls for list.
Gateways
anypick gateway list
anypick gateway show <name>
anypick gateway edit <name> [--endpoint <url>] [--api-key <key>]
[-m <id>] [--models <id...>]
anypick gateway remove <name>show masks the API key unless you pass the global --reveal.
Presets
anypick preset list
anypick preset show <name>
anypick preset remove <name>Preset names are written without the @ here; the @ prefix is only how you
reference one in --with.
Proxies
anypick proxy
anypick proxy status [provider] [name]
anypick proxy start [provider] [name] [-p <port>] [--host <host>]
anypick proxy stop [provider] [name]
anypick proxy enable <provider> <name> [-p <port>] [--host <host>]
[--auth-mode auto|public|api] [--no-start]
[--oauth-source auto|gemini-cli|antigravity]
anypick proxy config <provider> <name> [-p <port>] [--host <host>]
[--auth-mode …] [--oauth-source …] [--no-restart]
anypick proxy disable <provider> <name>
anypick proxy logs <provider> [name] [-n <lines>] [-f]config has the alias set. --host defaults to 127.0.0.1. Omitting -p on
enable takes the first free port. stop with no arguments stops every running
account proxy.
Pools
anypick proxy pool status <provider>
anypick proxy pool enable <provider> [-p <port>] [--host <host>] [--no-start]
anypick proxy pool member <provider> <account> <on|off>
anypick proxy pool disable <provider>Proxy Hub
anypick proxy hub status
anypick proxy hub enable [-p <port>] [--host <host>] [--start]
anypick proxy hub source <provider> <account> <on|off>
anypick proxy hub owner <model> <provider> <account>
anypick proxy hub preview
anypick proxy hub start
anypick proxy hub stopBind with --with hub:default after at least one source is enabled. owner
picks which account wins when two sources advertise the same model id;
preview refreshes catalogs and prints routes plus conflicts.
Plugins
anypick plugin list
anypick plugin add <dir>
anypick plugin enable <name>
anypick plugin disable <name>
anypick plugin trust <name>
anypick plugin remove <name>add installs a local directory disabled. enable is the trust decision and
prompts; it needs the global -y when there is no TTY. trust re-pins the
package digest after the plugin’s code changes. See
Plugins.
Surfaces and supervisor
anypick tui
anypick tray
anypick tray start
anypick tray status
anypick tray stopanypick tui always opens the Apps / Terminal UI.
Bare anypick tray opens or starts the Desktop Tray on
macOS (elsewhere it reports that the desktop surface is unavailable — use
tray start for the supervisor alone). start, status, and stop are
explicit lifecycle commands for automation and diagnostics. stop quits the
supervisor and stops every AnyPick-owned proxy.
Health
anypick doctor [target]
anypick doctor --fix [--dry-run] [-y]See Troubleshooting for what --fix is allowed to
touch.
Updating
anypick update # install the latest release
anypick update --check # report only; install nothingupdate reads the latest tag from the npm registry, compares it with the
running version, and — if there is something newer — runs
npm install -g anypick@<version> with the exact version it just reported.
npm’s own output is passed straight through. With --check it prints the
comparison and exits 0 either way, so a shell script can gate on --json:
anypick update --check --json{ "current": "1.0.0", "latest": "1.1.0", "updateAvailable": true, "updated": false }Shell completion
anypick completion zsh # also: bash | fishAdd it to your shell startup file, or evaluate it directly:
source <(anypick completion zsh)Exit codes
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Operational failure |
2 |
Invalid usage — missing client or source, bare use without a TTY |
3 |
Not found |
4 |
Auth required |
5 |
Capability conflict, unsupported transport, or no binding |
6 |
Health failure |
7 |
Missing required dependency, such as an external proxy binary |
8 |
Malformed or untrusted import envelope |
9 |
Import exceeds size or file-count limits |
130 |
Cancelled with SIGINT |
Environment variables
AnyPick
| Variable | Effect |
|---|---|
ANYPICK_HOME |
Data directory. Default ~/.anypick |
ANYPICK_UI=tui|tray |
Override the saved surface for a bare interactive run |
ANYPICK_NO_PLUGINS=1 |
Skip loading plugins entirely |
| ANYPICK_DEBUG=1 | Echo internal events to stderr |
| NO_COLOR | Drop all color; glyphs still carry state |
Provider overrides
| Variable | Effect |
|---|---|
OPENCODE_PROXY_UPSTREAM |
Override the OpenCode upstream base URL |
OPENCODE_MODEL_METADATA_URL |
Override model metadata source; none disables enrichment |
GEMINI_PROXY_UPSTREAM |
Override the Gemini upstream base URL |
GEMINI_CODE_ASSIST_UPSTREAM |
Override the Code Assist endpoint |
GROK_PROXY_UPSTREAM |
Override the Grok upstream base URL |
KIROLINK_BIN |
Path to an external kirolink binary |
CLAUDE_BINARY, CODEX_BINARY, KIRO_BINARY |
Launch a specific client binary |