# Aider Multi-Provider Setup

Global config at `~/.aider.conf.yml`. Model settings at `~/.aider.model.settings.yml`.

## Provider Configuration

Aider reads API keys from environment variables, not config files:
- `OPENROUTER_API_KEY` — for OpenRouter models
- `DEEPSEEK_API_KEY` — for DeepSeek models
- OpenAI-compatible base URL + key — for local inference servers

### Three-Provider Config

```yaml
# ~/.aider.conf.yml (relevant sections)

# Local llama-swap (default)
openai-api-base: http://127.0.0.1:9292/v1
openai-api-key: "not-needed"
model: qwen36-35b-mtp
weak-model: qwopus-9b
edit-format: whole           # GGUF models don't support tool calling

# OpenRouter
openrouter-api-base: https://openrouter.ai/api/v1
openrouter-model: qwen/qwen3-coder
openrouter-weak-model: google/gemma-4-31b-it

# DeepSeek
deepseek-model: deepseek-v4-flash
deepseek-weak-model: deepseek-v4-pro

model-settings-file: ~/.aider.model.settings.yml
```

### Model Settings

```yaml
# ~/.aider.model.settings.yml — 12 models registered

# OpenRouter paid models
- model: qwen/qwen3-coder
  max-input-tokens: 131072
  max-output-tokens: 16384
  use-whole-edits: true
  editor-edit-format: whole

- model: qwen/qwen3.7-max
  max-input-tokens: 131072
  max-output-tokens: 32768
  use-whole-edits: false
  editor-edit-format: diff

- model: qwen/qwen3.7-plus
  max-input-tokens: 131072
  max-output-tokens: 32768
  use-whole-edits: false
  editor-edit-format: diff

- model: minimax/minimax-m3
  max-input-tokens: 1048576
  max-output-tokens: 65536

- model: minimax/minimax-m2.7
  max-input-tokens: 1048576
  max-output-tokens: 65536

- model: xiaomi/mimo-v2.5
  max-input-tokens: 131072
  max-output-tokens: 16384

- model: xiaomi/mimo-v2.5-pro
  max-input-tokens: 131072
  max-output-tokens: 32768

- model: google/gemma-4-31b-it
  max-input-tokens: 262144
  max-output-tokens: 16384

- model: nvidia/nemotron-3-ultra-550b-a55b
  max-input-tokens: 131072
  max-output-tokens: 16384

# DeepSeek
- model: deepseek-v4-flash
  max-input-tokens: 1048576
  max-output-tokens: 16384

- model: deepseek-v4-pro
  max-input-tokens: 65536
  max-output-tokens: 8192

# Local (llama-swap)
- model: qwen36-35b-mtp
  max-input-tokens: 250000
  max-output-tokens: 16384
  use-whole-edits: true
```

## Environment Variables

Keys must be available in the environment (e.g. `source ~/.hermes/.env`):

```bash
export OPENROUTER_API_KEY="sk-or-..."
export DEEPSEEK_API_KEY="sk-9ea..."
```

## Usage

```bash
# Local model (default)
aider 'Fix the typo in src/main.py'

# OpenRouter
aider --model openrouter/qwen/qwen3-coder 'Refactor the auth service'

# DeepSeek
aider --model deepseek-v4-flash 'Summarize the recent changes'

# Explicit local model
aider --model qwen36-35b-mtp 'Add validation to user.py'
```

## Known Issues

- **DeepSeek models use reasoning tokens** — first ~50+ tokens are consumed by internal reasoning before visible output appears. Set `max_tokens` high enough (1024+) for reliable responses.
- **OpenRouter rate limits** — free tier models may throttle. If a request fails, retry with a paid alternative or after a delay.
- **`yes-always: true`** in global config skips file-operation prompts. Use with caution.
