When a client and an account do not speak the same protocol, AnyPick runs a local proxy between them. It starts on demand as part of activation and stops with the supervisor, so in normal use there is nothing to manage. Everything on this page is for inspection and debugging.
What the proxy does
Each provider proxy accepts more than one wire format and forwards to the provider’s real API:
- grok — an OpenAI-compatible and an Anthropic-compatible route, forwarding
the authenticated upstream
/v1/modelscatalog and requested model ids unchanged - opencode — Zen and Go catalogs, choosing between the Messages, Chat Completions, Responses, and Google protocols based on what the model supports
- gemini — Gemini API by key, or Code Assist by OAuth, including the modern
/v1/responsesrequest and SSE lifecycle current Codex CLI releases expect - kiro — delegated to an external
kirolink/kiro-proxybinary if you have one installed
Model discovery is live, never a bundled list: Gemini reads models.list for
API-key accounts and Code Assist fetchAvailableModels for OAuth accounts;
OpenCode intersects the live catalogs with provider metadata. New models show up
without a AnyPick release.
Reasoning intent survives translation. Codex and OpenAI reasoning_effort,
Responses reasoning.effort, Claude output_config.effort, adaptive thinking,
explicit budget_tokens, and visible thinking summaries are all preserved;
Google routes map the same intent onto Gemini’s thinkingConfig and keep thought
summaries separate from the final answer. Native Anthropic and OpenAI routes are
pass-through.
Default ports
| Provider | Port |
|---|---|
grok |
8080 |
kiro |
4119 |
opencode |
4120 |
gemini |
4130 |
A proxy that has no configured port takes the first free one.
Manual lifecycle
anypick proxy # board: every proxy-capable account
anypick proxy status
anypick proxy status gemini work
anypick proxy start
anypick proxy stop
anypick proxy enable grok work -p 8080
anypick proxy disable grok work
anypick proxy logs gemini -fenable configures a proxy and starts it; --no-start writes the config only.
disable is the inverse. config (alias set) changes host, port, or auth
options on an existing proxy and restarts it, unless you pass --no-restart.
anypick proxy stop with no arguments stops every running account proxy —
including one left behind by an older session for an account that is no longer
active.
Gemini auth sources
Gemini accepts two sign-ins, and --oauth-source decides which one a proxy
uses:
anypick proxy config gemini work --oauth-source auto # default
anypick proxy config gemini work --oauth-source gemini-cli
anypick proxy config gemini work --oauth-source antigravityauto honors the Gemini CLI’s selected OAuth or API-key login first, then falls
back to the signed-in Antigravity credential from the macOS Keychain when the
CLI catalog does not expose the requested model or returns an entitlement error.
Catalog aliases resolve within a single auth source, so an Antigravity rollout id
is never sent through Gemini CLI by mistake. Pin a source when you are debugging
or when policy requires it.
OpenCode auth mode
anypick proxy config opencode work --auth-mode auto|public|apiauto uses whatever the saved credential supports. public restricts the proxy
to the Zen catalog. The upstream base URL can be overridden with
OPENCODE_PROXY_UPSTREAM, and model metadata enrichment with
OPENCODE_MODEL_METADATA_URL (set it to none to disable enrichment).
Multi-account pools
The default is one proxy process per account. A pool puts several accounts of one provider behind a single port, so a client sees one endpoint and AnyPick handles rotation.
anypick proxy pool enable gemini -p 4130
anypick proxy pool member gemini work on
anypick proxy pool member gemini alt off # keep it configured but paused
anypick proxy pool status gemini
anypick use claude --with pool:gemini
anypick proxy pool disable gemini # back to one process per accountIn the terminal UI’s proxy board, p toggles the pool and space
pauses or re-enables the member under the cursor. On a multi-account pool row,
f toggles the safe quota-driven failover guard.
Proxy Hub (opt-in)
Pools keep one provider. The unified Proxy Hub is a separate opt-in surface that can expose several saved accounts behind one local endpoint and route by model. Enable it without rewriting existing bindings, add sources, then bind:
anypick proxy hub enable -p 4140 --start
anypick proxy hub source grok work on
anypick proxy hub status
anypick use claude --with hub:defaultThe Proxy board lists the Hub as its own row when configured; enter or m opens the Hub editor. Prefer ordinary per-account proxies unless you specifically need one shared endpoint across providers.
The supervisor
Proxies outlive the terminal UI so a client you launched keeps working after you
close it. On macOS the daily owner is the Desktop Tray
menu-bar helper; elsewhere anypick tray start runs a headless supervisor or a
packaged Tauri helper when one is present.
anypick tray # open/start the desktop Tray (macOS)
anypick tray start
anypick tray status
anypick tray stop # quit the supervisor and stop every AnyPick-owned proxyClosing the TUI with q leaves background state unchanged. Press Shift+D when you explicitly want to start or reuse the Tray and detach, or t for the runtime screen.
Orphans are cleaned up rather than accumulating: on startup, AnyPick releases leases whose owning process has exited and stops their proxies.