# How to Configure Anthropic Models with OpenClaude: A Complete Guide

> Easily configure Anthropic models with OpenClaude. Follow our guide to set your API key and model parameters for seamless integration. Get started now.

- Repository: [Gitlawb/openclaude](https://github.com/Gitlawb/openclaude)
- Tags: how-to-guide
- Published: 2026-09-08

---

**Set `ANTHROPIC_API_KEY` and use `--provider anthropic --model <model-id>` or `OPENAI_MODEL=anthropic/<model-id>` to route requests through OpenClaude's built-in Anthropic integration.**

OpenClaude treats Anthropic as a first-party provider with dedicated routing, metadata, and transport layers. Whether you're calling Claude 3 Opus directly or routing through a custom proxy, configuration happens through environment variables and CLI flags defined in the provider system.

## Selecting an Anthropic Model

You can specify Anthropic models through two primary mechanisms:

### CLI Flag Method

```bash
openclaude \
  --provider anthropic \
  --model claude-3-opus-20240229 \
  --prompt "Write a TypeScript function that sums an array."

```

### Environment Variable Method

```bash
export OPENAI_MODEL="anthropic/claude-sonnet-3.5"
openclaude --prompt "Explain quantum entanglement in plain English."

```

Both approaches resolve to the same internal route. In [`src/utils/providerValidation.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/providerValidation.ts), the validator checks that any model with the `anthropic/*` prefix belongs to the Anthropic vendor before processing.

## Required Credentials

Anthropic integration requires minimal environment setup:

| Variable | Required | Purpose |
|----------|----------|---------|
| `ANTHROPIC_API_KEY` | Yes | Bearer token for API authentication |
| `ANTHROPIC_BASE_URL` | No | Custom proxy endpoint (defaults to `https://api.anthropic.com`) |

These variables are declared in the Anthropic descriptor's `envVarConfig` and consumed by the transport layer. In [`src/utils/teleport/api.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/teleport/api.ts), the transport automatically injects required headers including `anthropic-version` and `anthropic-beta` at lines 274-280.

### Minimal Configuration Example

```bash

# .env

ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxxxx"

```

No base URL is needed for standard Anthropic API access.

## Architecture: How Configuration Flows

OpenClaude separates Anthropic configuration into three distinct layers:

| Layer | Responsibility | Key File |
|-------|---------------|----------|
| **Metadata** | Descriptor files declare defaults, env-var contracts, and capabilities | [`src/integrations/define.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/integrations/define.ts) |
| **Routing** | Maps user config to concrete provider routes | [`src/utils/providerProfiles.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/providerProfiles.ts) |
| **Transport** | Executes HTTP requests with proper headers | [`src/utils/teleport/api.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/teleport/api.ts) |

The default Anthropic profile is identified by `ANTHROPIC_DEFAULT_PROFILE_ID` at lines 984-990 of [`providerProfiles.ts`](https://github.com/Gitlawb/openclaude/blob/main/providerProfiles.ts). When you specify `--provider anthropic`, this profile loads automatically.

## Custom Anthropic Proxy Configuration

For organizations routing through an intermediate proxy, OpenClaude supports the `anthropic-proxy` transport kind.

### Environment Setup for Custom Proxy

```bash

# .env

MY_PROXY_TOKEN="my-proxy-token"
MY_PROXY_BASE_URL="https://my-proxy.example/v1"
MY_PROXY_MODEL="claude-3-haiku-20240307"

export ANTHROPIC_API_KEY="$MY_PROXY_TOKEN"
export ANTHROPIC_BASE_URL="$MY_PROXY_BASE_URL"
export OPENAI_MODEL="anthropic/claude-3-haiku-20240307"

```

### Creating a Custom Proxy Descriptor

Add a new TypeScript file under `src/integrations/anthropicProxies/`:

```typescript
// src/integrations/anthropicProxies/my-proxy.ts
import { defineAnthropicProxy } from '../define.js';

export default defineAnthropicProxy({
  id: 'my-proxy',
  label: 'My Anthropic Proxy',
  classification: 'anthropic-proxy',
  defaultBaseUrl: 'https://my-proxy.example/v1',
  defaultModel: 'claude-3-sonnet-20240229',
  setup: {
    requiresAuth: true,
    authMode: 'token',
    credentialEnvVars: ['MY_PROXY_TOKEN'],
    setupPrompt: 'Paste your My-Proxy token.',
  },
  envVarConfig: {
    authTokenEnvVar: 'MY_PROXY_TOKEN',
    baseUrlEnvVar: 'MY_PROXY_BASE_URL',
    modelEnvVar: 'MY_PROXY_MODEL',
  },
  capabilities: {
    supportsStreaming: true,
    supportsVision: false,
    supportsFunctionCalling: true,
    supportsJsonMode: true,
    supportsReasoning: true,
  },
  transportConfig: {
    kind: 'anthropic-proxy',
  },
  usage: { supported: true },
});

```

After creating the descriptor, regenerate the integration loader:

```bash
bun run integrations:generate

```

## Complete Configuration Examples

### Direct Anthropic API Access

```bash

# .env

ANTHROPIC_API_KEY="sk-ant-abc123..."

# CLI

openclaude \
  --provider anthropic \
  --model claude-3-opus-20240229 \
  --prompt "Refactor this Python script for readability."

```

### Enterprise Proxy with Custom Headers

```bash

# .env

ENTERPRISE_ANTHROPIC_KEY="ent-token-xyz789"
ENTERPRISE_BASE_URL="https://ai-gateway.company.internal/anthropic"

export ANTHROPIC_API_KEY="$ENTERPRISE_ANTHROPIC_KEY"
export ANTHROPIC_BASE_URL="$ENTERPRISE_BASE_URL"
export OPENAI_MODEL="anthropic/claude-3-5-sonnet-20240620"

openclaude --prompt "Generate a SQL query for monthly revenue trends."

```

## Key Files for Anthropic Configuration

Understanding these source files helps debug configuration issues:

- **[`src/utils/providerProfiles.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/providerProfiles.ts)** — Contains `ANTHROPIC_DEFAULT_PROFILE_ID` and profile resolution logic
- **[`src/utils/providerValidation.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/providerValidation.ts)** — Validates model vendor membership at line 525
- **[`src/utils/teleport/api.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/teleport/api.ts)** — Builds requests with Anthropic-specific headers
- **[`docs/integrations/how-to/add-anthropic-proxy.md`](https://github.com/Gitlawb/openclaude/blob/main/docs/integrations/how-to/add-anthropic-proxy.md)** — Authoring guide for custom proxies
- **[`docs/integrations/overview.md`](https://github.com/Gitlawb/openclaude/blob/main/docs/integrations/overview.md)** — Explains the three-layer architecture

## Summary

- **Authentication**: Set `ANTHROPIC_API_KEY` as the minimum requirement
- **Model selection**: Use `--provider anthropic --model <id>` or `OPENAI_MODEL=anthropic/<id>`
- **Custom proxies**: Set `ANTHROPIC_BASE_URL` or create a full proxy descriptor with `transportConfig.kind: 'anthropic-proxy'`
- **Header injection**: The transport layer in [`teleport/api.ts`](https://github.com/Gitlawb/openclaude/blob/main/teleport/api.ts) handles `anthropic-version` and `anthropic-beta` automatically
- **Extensibility**: New proxy configurations only require descriptor changes—no modifications to routing or transport code

## Frequently Asked Questions

### How do I switch between different Anthropic models?

Use the `--model` flag with any Anthropic model ID, or set `OPENAI_MODEL=anthropic/<model-id>`. The system validates the model against Anthropic's vendor list in [`providerValidation.ts`](https://github.com/Gitlawb/openclaude/blob/main/providerValidation.ts) before executing requests.

### Can I use Anthropic through a corporate proxy or gateway?

Yes. Either set `ANTHROPIC_BASE_URL` to your gateway endpoint, or create a custom proxy descriptor in `src/integrations/anthropicProxies/` using `defineAnthropicProxy`. The descriptor approach gives you full control over environment variable names and transport configuration.

### Why does OpenClaude use `OPENAI_MODEL` for Anthropic models?

The `OPENAI_MODEL` environment variable accepts a vendor-prefixed format (`anthropic/<model-id>`) to maintain backward compatibility while supporting multiple providers. The parser routes `anthropic/*` values to the Anthropic provider profile automatically.

### What headers does OpenClaude send to the Anthropic API?

The transport layer in [`src/utils/teleport/api.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/utils/teleport/api.ts) injects `anthropic-version` and `anthropic-beta` headers along with the standard `Authorization: Bearer` header containing your `ANTHROPIC_API_KEY`.