Claude Code vs aider

Claude Code and aider are both terminal-based and agentic, but they treat models and git differently. How they compare, and how to connect both to one key.

5 min · · Updated · сравнение · IDE

Claude Code and aider both run in the terminal, both read a project and propose edits, but they grew out of different ideas: Claude Code is Anthropic's own tool, built around their models with the ability to point at a compatible gateway; aider is an open-source project, designed from the start to work with any model through environment variables and tightly bound to git.

How each one treats models

Aider has been model-agnostic from day one: the provider is set through environment variables or a --model flag, and switching from one model to another is a config-line change, not a tool switch. That's convenient if a project regularly compares different models' answers on the same task.

Claude Code was built around Anthropic's models and speaks to the server using the Anthropic Messages API. Connecting it to a third-party model catalog doesn't happen through picking a provider inside the tool — it happens by changing the address it talks to:

bash
export ANTHROPIC_BASE_URL="https://api.zukko.pro"
export ANTHROPIC_AUTH_TOKEN="fetch_your_key"

It's important to use ANTHROPIC_AUTH_TOKEN specifically — with ANTHROPIC_API_KEY, Claude Code assumes it should log into an official Anthropic account instead of using the gateway key. The URL has no /v1: Claude Code appends the path itself and hits POST /v1/messages with the anthropic-version: 2023-06-01 header.

Aider typically takes a separate API key and base URL for either its OpenAI-compatible or Anthropic-compatible mode, depending on how a given project is set up. Through Zukko it looks the same, just with the /v1 suffix:

bash
export OPENAI_API_KEY="fetch_your_key"
export OPENAI_API_BASE="https://api.zukko.pro/v1"

Both configurations run on the same fetch_... key, because Zukko is simultaneously Anthropic-compatible and OpenAI-compatible — no need to set up two separate accounts for two tools.

What that key can call

The catalog includes claude-opus-5-5 (Claude Opus 5.5), claude-sonnet-5, gpt-5.6-sol, gpt-5.6-luna, glm-5.3, and glm-5.3-flash; the current list is at GET https://api.zukko.pro/v1/models. Claude and GPT models have a 1,000,000-token context; GLM has 128K and no vision. For the kind of work aider traditionally excels at — quick, targeted edits with an explicit diff and commit — the million-token context of Claude and GPT means a whole small-to-medium repository fits in one request without manual chunking.

Git, and how each tool commits changes

By default, aider commits every accepted change itself, with a commit message generated by the model — the history ends up granular, one edit per commit. Claude Code only commits when explicitly asked, otherwise it just shows a diff before applying it. The difference affects how you read the change history after a session: aider's will be longer and more detailed, Claude Code's will look exactly the way the developer chose to shape it.

Cost, and what's visible in real time

Neither aider nor Claude Code charges for use on its own — the cost is in tokens for the model they call. Through Zukko, regular (non-streaming) responses show it right away: the X-Zukko-Cost-Micros header shows the cost of that specific request in microdollars (1,000,000 = $1), and X-Fetch-Balance-Cents shows the remaining balance after the charge (also in microdollars). But both aider and Claude Code stream by default (stream: true), and streaming responses do not include these headers — you check spend in the dashboard, via GET /v1/usage (account-wide history), or GET /v1/balance. For aider, which can make several sequential calls for a single edit (proposal, clarification, final diff), the /v1/usage history is a way to see which step drove the cost up.

If the same task runs repeatedly with an identical prompt — a config test run, say — the X-Zukko-Cache: true header turns on caching (temperature: 0 does too, but only for models that accept it — not Claude): a repeat of a request with an exactly matching body from the same user returns instantly and for free for up to 7 days for chat, with X-Zukko-Cache: hit in the response.

Idempotency when a connection drops

Terminal tools run into a connection dropping mid-response more often than most — a closed laptop lid, Wi-Fi that cuts out. Keep in mind that a drop does not stop billing — the gateway reads the provider's response to the end and charges for the full generation. The Idempotency-Key header addresses the retry problem: it is set per logical request, and replaying a request with the same value within 24 hours returns the same response without charging again (do not generate a new key on retry). Send the same key with a different request body, and you get 422 idempotency_conflict — a signal that content changed somewhere in the retry, not a network error.

Errors that show up immediately

Both tools get the same error codes from Zukko, since both talk over HTTP. 401 for an invalid key ({"error":{"message":"Invalid API key. Use Authorization: Bearer fetch_*","type":"authentication_error"}}), 402 for an empty balance (insufficient_balance, checked before the request reaches the model), 404 model_not_found for a typo in the model name, 503 model_disabled when a model is switched off, 429 when a key's limit is exceeded (key_daily_limit_reached / key_monthly_limit_reached). The current catalog without a key is at GET /v1/models.

Which to pick

If the priority is model flexibility and an explicit, granular git commit history for every edit, aider leans toward that philosophy by default. If the priority is a multi-step agent with manual control over when to commit, plus native Anthropic Messages API support with no compatibility shims needed, that's Claude Code. Both can be pointed at the same Zukko key and compared on the same task without paying twice — the key is created at zukko.pro/app/api-keys and shown once.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

Claude Code vs aider: terminal agents compared · Zukko