Вайб-кодинг в Crush: настройка TUI-агента Charm через RouterAI (Claude, GPT-6, DeepSeek)
Crush
Crush — терминальный coding-агент от Charm (репозиторий charmbracelet/crush). Он работает в TUI-интерфейсе прямо в терминале: читает и правит файлы, запускает команды, использует LSP для контекста и подключает MCP-серверы. Модель можно сменить посреди сессии, не теряя контекст.
Crush умеет работать с любым OpenAI- или Anthropic-совместимым API, поэтому RouterAI подключается как обычный кастомный провайдер. Вы получаете в одном агенте Claude, GPT, DeepSeek и GLM из каталога моделей, работу из России без VPN и оплату в рублях.
Требования
- macOS, Linux или Windows (PowerShell или WSL)
- Терминал с поддержкой цвета; Node.js нужен только для установки через npm
- API-ключ из личного кабинета
Установка
Через Homebrew (macOS и Linux):
brew install charmbracelet/tap/crush
Через npm (macOS, Linux, Windows):
npm install -g @charmland/crush
Windows:
winget install charmbracelet.crush
или через Scoop:
scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git
scoop install crush
Другие способы (Arch, Nix, deb/rpm-пакеты, готовые бинарники, go install) перечислены в README проекта. Проверьте установку:
crush --version
Откройте проект и запустите агент:
cd /path/to/your/project
crush
На первом запуске Crush предлагает инициализировать проект: он изучит кодовую базу и сохранит контекст в файл AGENTS.md.

Подключение к RouterAI
В Crush RouterAI добавляется как кастомный провайдер. Конфигурация — файл crushrc: это обычный Bash с командами provider, model, mcp, lsp. Глобальный файл лежит в ~/.config/crush/crushrc (в Windows — %USERPROFILE%\.config\crush\crushrc), проектный — ./.crushrc в корне проекта и имеет приоритет.
OpenAI-совместимый API
Подходит для всех моделей каталога — Claude, GPT, DeepSeek, GLM:
- Задайте ключ в переменной окружения (например, в
~/.zshrc):export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx". - Откройте
~/.config/crush/crushrcи добавьте провайдера и модель:
provider add routerai \
--name "RouterAI" \
--type openai-compat \
--base-url "https://routerai.ru/api/v1" \
--api-key "$ROUTERAI_API_KEY"
model add routerai/anthropic/claude-sonnet-5.5 \
--name "Claude Sonnet 5.5" \
--context-window 1000000 \
--default-max-tokens 32000
model large routerai/anthropic/claude-sonnet-5.5
- Запустите
crush— внизу интерфейса появится выбранная модель «via routerai».
Тип openai-compat нужен для сторонних провайдеров с OpenAI-совместимым API; тип openai предназначен для проксирования самого OpenAI (документация Crush). Идентификатор модели в командах model add и model large — это <id провайдера>/<id модели из каталога>, то есть routerai/anthropic/claude-sonnet-5.5.
Если список моделей у провайдера не задан, Crush сам запрашивает каталог у /v1/models, и в выборе моделей появляются все модели RouterAI. Тогда достаточно одной команды provider add.

Anthropic-совместимый API
Для моделей anthropic/* можно использовать нативный Messages API. Базовый адрес здесь https://routerai.ru/api — без /v1, Crush сам добавляет /v1/messages:
provider add routerai-claude \
--name "RouterAI (Anthropic)" \
--type anthropic \
--base-url "https://routerai.ru/api" \
--api-key "$ROUTERAI_API_KEY"
model add routerai-claude/anthropic/claude-opus-5.5 \
--name "Claude Opus 5.5" \
--context-window 1000000 \
--default-max-tokens 32000 \
--can-reason true
Старый формат crush.json
Формат ~/.config/crush/crush.json в Crush считается устаревшим, но поддерживается. Эквивалентная конфигурация:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"routerai": {
"name": "RouterAI",
"type": "openai-compat",
"base_url": "https://routerai.ru/api/v1",
"api_key": "$ROUTERAI_API_KEY",
"models": [
{
"id": "anthropic/claude-sonnet-5.5",
"name": "Claude Sonnet 5.5",
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 1000000,
"default_max_tokens": 32000,
"can_reason": true,
"supports_attachments": true
}
]
}
},
"models": {
"large": { "provider": "routerai", "model": "anthropic/claude-sonnet-5.5" }
}
}
Не храните ключ в конфиге, который попадёт в git: используйте
$ROUTERAI_API_KEY. Конфиги Crush выполняют код (вcrushrc— полноценный shell), поэтому не запускайте агент в папке с чужим непроверенным конфигом.
Переключение моделей
Crush держит два слота: Large Task для сложных задач и Small Task для вспомогательных. Нажмите Ctrl+L, выберите модель стрелками и подтвердите Enter; Tab переключает слот. Историю диалога Crush сохраняет, так что можно начать с дешёвой модели и перейти на более сильную, когда задача усложнилась.
Слоты можно задать и в crushrc:
model large routerai/anthropic/claude-sonnet-5.5
model small routerai/anthropic/claude-haiku-5.5

LSP и MCP
Crush подтягивает контекст у языковых серверов, как это делает человек в редакторе. Добавляются они в crushrc:
lsp add go --command "gopls"
lsp add typescript --command "typescript-language-server" --args --stdio
MCP-серверы поддерживаются в трёх вариантах транспорта: stdio, http и sse:
# локальный stdio-сервер
mcp add filesystem --command node --args /path/to/mcp-server.js
# HTTP-сервер с токеном
mcp add github --type http --url "https://api.githubcopilot.com/mcp/" \
--header Authorization "Bearer $GH_PAT"
# SSE-сервер
mcp add streaming-service --type sse --url "https://example.com/mcp/sse" \
--header API-Key "$API_KEY"
По умолчанию Crush спрашивает разрешение на каждый вызов инструмента. Часто используемые безопасные инструменты можно разрешить заранее: permissions allow view ls grep.
Выбор модели
Идентификаторы проверены по каталогу RouterAI на момент написания; цены и актуальный список смотрите в каталоге.
| Модель | Для чего |
|---|---|
anthropic/claude-sonnet-5.5 |
Основная модель для кода: фичи, отладка, рефакторинг среднего размера |
anthropic/claude-opus-5.5 |
Сложные рефакторинги и архитектурные изменения |
anthropic/claude-haiku-5.5 |
Слот Small Task, быстрые мелкие запросы |
openai/gpt-6.1-sol, openai/gpt-5.6-sol
|
Альтернатива Claude от OpenAI для тех же задач |
deepseek/deepseek-v4.1-flash-1017 |
Дешёвые массовые правки и переименования |
z-ai/glm-5.3-flash |
Дешёвые массовые правки, быстрые ответы |
Проверка подключения
Быстрая проверка без запуска интерфейса:
crush run "Объясни одной фразой, что делает этот проект"
Команда выполняет один запрос и выводит ответ в терминал. Список моделей, которые видит Crush, показывает crush models. Для интерактивной проверки запустите crush и дайте агенту небольшую задачу.

Решение проблем
401 Unauthorized
Ключ не передан или неверный. Проверьте, что переменная ROUTERAI_API_KEY экспортирована в том же терминале, где запущен crush (echo $ROUTERAI_API_KEY), и что ключ скопирован из личного кабинета полностью.
404 Not Found
Почти всегда виноват базовый адрес:
- для
openai-compatнуженhttps://routerai.ru/api/v1— с/v1; - для
anthropicнуженhttps://routerai.ru/api— без/v1, иначе запрос уйдёт на/api/v1/v1/messages.
Модель не найдена
Проверьте, что id модели есть в каталоге и написан точно. В командах Crush перед ним стоит id провайдера: routerai/anthropic/claude-sonnet-5.5, а не anthropic/claude-sonnet-5.5.
402 Payment Required
Недостаточно средств на балансе — пополните его в разделе Биллинг.
Изменения в конфиге не применяются
Проектный ./.crushrc перекрывает глобальный. Перезапустите crush и проверьте, нет ли в папке проекта собственного конфига.
Что дальше
- Каталог моделей — подберите модель под задачу
- Аутентификация — управление API-ключами
- Вайб-кодинг в Pi и Вайб-кодинг в Codex — другие CLI-агенты через RouterAI
- Документация Crush по конфигурации