Provider Setup
Configure Anthropic, AWS Bedrock, Google Vertex, or Anthropic-compatible proxies in AAA Code.
AAA Code can route conversations through multiple LLM backends. This guide covers how to connect each supported provider.
Quick start — Anthropic direct (zero config)
Easiest path. Requires the Claude Code CLI.
- Install:
npm i -g @anthropic-ai/claude-code - Log in:
claude login - Launch AAA Code. That’s it — your existing Claude Code credentials are reused automatically.
Adding a provider
In AAA Code, open Settings → Providers and click + Add Provider. Pick a provider type, fill in the form, then click Add. The first provider you add becomes the active one automatically; switch providers later from the same dropdown.
Provider types
Anthropic direct
- Where to get a key: console.anthropic.com/settings/keys
- What to paste: the
sk-ant-…string into the API key field. - Tip:leave the API key blank if you’ve already run
claude login— AAA Code will fall back to the ambient OAuth token. - Subscription usage: once logged in via
claude login, the/usagepanel will display your Pro / Max / Team rate-limit windows after the first turn. See the usage guide for what each provider exposes.
Anthropic-compatible presets
For providers that speak Anthropic’s wire format at their own endpoint. Presets fill in the base URL for you; you only paste the API key.
| Preset | Where to get a key |
|---|---|
| DeepSeek | platform.deepseek.com/api_keys |
| Zhipu GLM | bigmodel.cn/usercenter/apikeys |
| Kimi | platform.moonshot.cn/console/api-keys |
| MiniMax | minimaxi.com/user-center/…/interface-key |
After pasting the key, fill in the Main / Haiku / Sonnet / Opusmodel-ID slots with each provider’s actual model names (check their docs — typically things like deepseek-chat, moonshot-v1-8k, etc). Leave any slot blank to mark it “not available” on that provider.
Anthropic-compatible custom
For self-hosted proxies like LiteLLM, OpenRouter’s Anthropic-compat endpoint, or your own reverse proxy.
- Base URL: the full URL to the Anthropic-format endpoint (e.g.
https://litellm.example.com/anthropic). - API key: whatever your proxy expects.
AWS Bedrock
Requires an AWS account with Bedrock model access for the Anthropic models you want to use.
- Ambient credentials: if your
~/.aws/credentialsoraws sso loginis already set up, AAA Code auto-detects this. You only need to fill in the AWS Region. - Inline credentials: otherwise, paste an access key ID + secret. Optional session token for temporary credentials.
- Model IDsuse Bedrock’s versioned ARN format, e.g.
anthropic.claude-sonnet-4-6-20251022-v1:0. Find the exact strings in the Bedrock model catalog.
Google Vertex
Requires a GCP project with the Vertex AI API enabled and Claude model access via partner marketplace.
- Project ID + Region: the GCP project ID and the Vertex region (e.g.
us-central1). - Ambient ADC: run
gcloud auth application-default loginonce. AAA Code detects the resulting credentials file automatically. - Service-account JSON: alternatively, provide a path to a GCP service-account JSON file.
- Model IDs use Vertex’s naming, e.g.
claude-sonnet-4-6@20251022. See the Vertex partner model docs.
Switching providers
Use the Active dropdown in Settings → Providers. The switch takes effect for new chats; chats already open continue with whatever provider was active when they started.
Picking a model per chat
The chat input bar has a small dropdown next to the permission-mode selector. It shows the 4 logical slots (Main / Haiku / Sonnet / Opus) — each slot maps to the active provider’s corresponding model ID (from the form fields when you added the provider).
If a slot is greyed out, that means the active provider doesn’t have a model ID configured for that tier. Edit the provider in Settings → Providers to add one.
You can also type /model <slot-name> in the chat input — for example /model sonnet. To override the model for a single message, type a raw model ID instead: /model claude-sonnet-4-6-20251022.
Storage and security
Provider configurations and API keys are stored in plaintext JSON at ~/.claude/aaa-code/providers.json with 0o600 permissions. This matches how Claude Code CLI itself stores credentials cross-platform (via ~/.claude/.credentials.json).
If your threat model requires encrypted-at-rest credentials, consider full-disk encryption (FileVault on macOS, BitLocker on Windows, LUKS on Linux).