blob: 83ced5955af991f888c365cfe09cfc9a2cac7673 [file] [view]
# Claude Code
Point Claude Code at `https://llm.apache.org`. Use a model id from the [Models page](/models). This example uses `gemma4-26b`, an open-weight model the gateway hosts. `$LLMAO_KEY` is the personal access token from [My Keys](/keys).
```sh
export ANTHROPIC_BASE_URL=https://llm.apache.org
export ANTHROPIC_AUTH_TOKEN="$LLMAO_KEY"
export CLAUDE_CODE_EFFORT_LEVEL=medium
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=120000
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=8192
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
export MODEL=gemma4-26b
for v in ANTHROPIC_MODEL ANTHROPIC_DEFAULT_OPUS_MODEL ANTHROPIC_DEFAULT_SONNET_MODEL \
ANTHROPIC_DEFAULT_HAIKU_MODEL CLAUDE_CODE_SUBAGENT_MODEL; do
export "$v=$MODEL"
done
claude
```
Set `ANTHROPIC_AUTH_TOKEN`, not `ANTHROPIC_API_KEY`. The base URL has no `/v1`. Every role uses the same model, because the gateway answers only for the models it serves.
Once it starts, `/status` shows the address and the credentials the session is using. Check it if you have signed in to Claude Code before: the address should be `https://llm.apache.org`.
`CLAUDE_CODE_MAX_CONTEXT_TOKENS` matters. Claude Code assumes a 200k window for a model it does not recognise and compacts too late. Set it below the model's window. The [Models page](/models) lists each window.
`CLAUDE_CODE_MAX_OUTPUT_TOKENS` goes with it. Prompt and response share the window, and a request that asks for more than is left is rejected before it runs. The two settings must add up to less than the window: 120000 and 8192 against 131072.
Prefer `gemma4-26b`. A model that reasons before it emits can sit silent long enough that Claude Code abandons the stream and retries. `gemma4-26b` starts emitting immediately.
`CLAUDE_CODE_EFFORT_LEVEL=medium` is for models that refuse the default `high`. `qwen3.8-27b` accepts `low`, `medium`, and `xhigh`. `gemma4-26b` accepts the default, so the effort line is optional there. `claude --effort medium` sets the same value for one run.
`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` turns off update checks, telemetry, and error reports, which do not go through the gateway.
## Keeping the settings
To avoid exporting these in every shell, put them in the `env` block of `~/.claude/settings.json`. Claude Code applies them each time it starts, and other tools in your shell do not see them.
```json
{
"env": {
"ANTHROPIC_BASE_URL": "https://llm.apache.org",
"ANTHROPIC_AUTH_TOKEN": "<your personal access token>",
"ANTHROPIC_MODEL": "gemma4-26b",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "gemma4-26b",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "gemma4-26b",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "gemma4-26b",
"CLAUDE_CODE_SUBAGENT_MODEL": "gemma4-26b",
"CLAUDE_CODE_EFFORT_LEVEL": "medium",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "120000",
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
```
That file holds your token, so keep it in your home directory and out of any repository.
## What does not work
Tools such as web search fail in Claude Code today. Conversation works.