Crush — ИИ-агент для программирования в терминале от Charm
📂 Исходный код на GitHubТерминальный ИИ-агент для программирования. Поддержка множества LLM-провайдеров, LSP-контекст, MCP-серверы, скиллы, сессии и все популярные платформы. 26K+ звёзд на GitHub.
Crush — открытый терминальный ИИ-агент для программирования от команды Charm (известной по Bubble Tea, Huh, Glow, Gum). Написан на Go и набрал больше 26 тысяч звёзд на GitHub. Позиционируется как «ваш новый лучший друг по кодингу в любимом терминале» — инструменты, код и рабочие процессы подключаются к LLM на ваш выбор.
Возможности
Мультимодельность. Можно выбрать из широкого набора LLM или добавить свои через OpenAI- и Anthropic-совместимые API. Модель можно переключать прямо посреди сессии, сохраняя контекст.
Сессионная работа. Несколько рабочих сессий и контекстов на проект. Сессии можно шарить между клиентами через workspace-механизм: два клиента с одним --cwd получают общий список сессий, историю сообщений, очередь разрешений, LSP и MCP-состояние.
LSP-контекст. Crush использует Language Server Protocol для получения дополнительного контекста о коде — так же, как это делает разработчик в редакторе.
Расширяемость через MCP. Поддерживаются все три транспортных типа Model Context Protocol: stdio для CLI-серверов, http для HTTP-эндпоинтов и sse для Server-Sent Events. В параметрах работают shell-подстановки ($VAR, ${VAR:-default}, $(command)).
Скиллы по стандарту Agent Skills. Crush поддерживает открытый стандарт Agent Skills. Скиллы ищутся в глобальных директориях (~/.config/crush/skills/, ~/.claude/skills/ и других), а также в проектных (.agents/skills, .crush/skills, .claude/skills, .cursor/skills). Поддерживаются пользовательские скиллы, вызываемые через командную палитру (Ctrl+P).
Кроссплатформенность. Первоклассная поддержка macOS, Linux, Windows (PowerShell и WSL), Android, FreeBSD, OpenBSD и NetBSD.
Промышленный уровень. Построен на экосистеме Charm, на которой работают 25 000+ приложений — от ведущих опенсорс-проектов до критической бизнес-инфраструктуры.
Установка
# Homebrew
brew install charmbracelet/tap/crush
# NPM
npm install -g @charmland/crush
# Arch Linux
yay -S crush-bin
# Nix
nix run github:numtide/nix-ai-tools#crush
# FreeBSD
pkg install crush
# Go
go install github.com/charmbracelet/crush@latest
Windows: winget install charmbracelet.crush или через Scoop. Пакеты также доступны в DEB- и RPM-форматах, бинарники — для всех поддерживаемых платформ.
Провайдеры и модели
Быстрый старт — выбрать модель Hyper от Charm. Это официальный провайдер Crush с бесплатным тарифом, нулевым хранением данных (ZDR) и соответствием GDPR.
Crush поддерживает около 20 встроенных провайдеров через переменные окружения: Anthropic, OpenAI, Gemini, OpenRouter, Groq, Cerebras, Hugging Face, Alibaba, Moonshot, OpenCode, Azure, VertexAI, Amazon Bedrock и другие.
Список моделей управляется через Catwalk — опенсорсную базу Crush-совместимых моделей. Можно добавить кастомных провайдеров:
{
"providers": {
"deepseek": {
"type": "openai-compat",
"base_url": "https://api.deepseek.com/v1",
"api_key": "$DEEPSEEK_API_KEY",
"models": [
{
"id": "deepseek-chat",
"name": "Deepseek V3",
"context_window": 64000
}
]
}
}
}
Поддерживаются локальные провайдеры: Ollama, llama.cpp, LM Studio, LiteLLM, OMLX — модели автообнаруживаются.
Конфигурация
Crush работает из коробки без конфигурации. При необходимости настройки загружаются с приоритетом: .crush.json → crush.json → ~/.config/crush/crush.json.
LSP. Подключаются вручную в конфиге. Пример для Go, TypeScript и Nix:
{
"lsp": {
"go": { "command": "gopls" },
"typescript": { "command": "typescript-language-server", "args": ["--stdio"] },
"nix": { "command": "nil" }
}
}
Глобальные контекст-файлы. ~/.config/crush/CRUSH.md для Crush-специфичных инструкций и ~/.config/AGENTS.md для общих (если пользуетесь несколькими агентами). Пути настраиваются через global_context_paths.
Безопасность. crush.json — доверенный код. Любой $(...) в нём выполняется при загрузке с привилегиями shell. Не запускайте Crush в директории с непроверенным crush.json.
Игнорирование файлов. Поддерживаются .gitignore и .crushignore (тот же синтаксис).
Управление разрешениями. Можно предварительно разрешить запуск определённых инструментов без запроса подтверждения, или полностью отключить встроенные инструменты/скиллы через options.disabled_tools и options.disabled_skills. Флаг --yolo отключает все запросы разрешений.
Сессии и workspace
При запуске с общим бэкендом (crush serve) клиенты группируются в workspace по ключу --cwd. Клиенты с одинаковой рабочей директорией разделяют сессии, историю сообщений, очередь разрешений, LSP и MCP-состояние. Подключение неявное — второй клиент с тем же --cwd присоединяется к существующему workspace.
Флаги --yolo и --debug следуют правилу «первый побеждает»: последующие клиенты с другими значениями не меняют настройки workspace.
Логирование и метрики
Логи пишутся в .crush/logs/crush.log. Доступны CLI-команды: crush logs, crush logs --tail 500, crush logs --follow. Режим отладки включается флагом --debug или в конфиге.
Метрики использования псевдонимные (привязаны к хешу устройства), собирают только метаданные использования — промпты и ответы никогда не собираются. Отключить можно через CRUSH_DISABLE_METRICS=1 или настройку в конфиге. Crush также уважает конвенцию DO_NOT_TRACK.
Интеграции
Атрибуция в гите. По умолчанию Crush добавляет Assisted-by: Crush:[ModelID] в коммиты (настраивается: co-authored-by или none).
Настольные уведомления. Приходят, когда инструмент требует разрешения или агент завершил ход — только если терминал не в фокусе.
Инициализация проектов. Анализирует код и создаёт контекст-файл (AGENTS.md по умолчанию, путь настраивается через initialize_as).
Хуки. Предварительная поддержка хуков (детали в документации).
Лицензия
FSL-1.1-MIT. Проект — часть экосистемы Charm.
Источник: https://github.com/charmbracelet/crush