charmbracelet/crush

Glamourous agentic coding for all 💘

Crush – ターミナル向けのLLM駆動型コーディングアシスタント

何であるか – Crushは、任意のターミナルから大規模言語モデル(LLM)と直接会話できるコマンドラインアプリケーションです。これは「コーディングの親友」のような存在です:コードの作成、編集、説明を依頼したり、ツールを実行したり、プロジェクトのファイルとやり取りしながら、既に使っているシェル内で作業を続けられます。

なぜ重要か – 多くのAIコードアシスタントはIDEプラグインやWeb UIに依存しています。Crushは同じ機能をターミナルに持ち込み、Vim/Emacs、リモートシェル、CIパイプラインなどで長時間作業する開発者にとって有用です。また、複数の LLMプロバイダー(OpenAI、Anthropic、Gemini、Bedrock、ローカルのOllamaなど)をサポートし、コンテキストを失うことなくモデルを即座に切り替えることができます。


コア機能(READMEに記載)

  • マルチモデル対応 – OpenAIまたはAnthropic互換APIを任意に選択、カスタムプロバイダーを追加、Ollama経由でローカルモデルを実行可能。
  • セッションベースのワークフロー – プロジェクトごとに別々の会話を持ち、同時に複数のセッションを開くことが可能。
  • LSP統合goplsniltypescript-language-serverなどの言語サーバープロトコルサーバーを起動し、モデルにコードに対する深い理解を提供。
  • MCP経由での拡張stdiohttpsse経由でMCPサーバーを追加し、カスタムツール、データ、リアルタイム更新を提供可能。
  • クロスプラットフォーム – macOS、Linux、Windows(PowerShell/WSL)、Android、BSDファミリーで動作。
  • crushrcによる設定可能 – プロジェクト単位またはグローバルに配置可能なBashスタイルの設定ファイル。プロバイダー、モデル、LSP、MCP、権限などを追加可能。
  • グローバルコンテキストファイル – markdownファイル(CRUSH.mdAGENTS.md)がシステムプロンプトに自動的に挿入され、個人的な指示を反映。
  • 権限システムlsgrep、GitHubアクションなどのツールは明示的な許可/拒否が必要で、不必要な副作用から保護。
  • ワークスペース共有 – 同じ作業ディレクトリを指す複数のTUIクライアントが、SSE経由で同じセッションリスト、履歴、ツール状態を共有。

クイックスタート(導入手順)

  1. インストール – Homebrew、NPM、ArchのAUR、Nix、Winget、Scoop、またはOS用のバイナリ/パッケージを使用。Goツールチェーンがある場合はgo installも可。
  2. モデルの選択Ctrl + Lを押してモデルピッカーを開き、プロバイダー(例:組み込みのHyperサービス、OpenAI、Anthropicなど)を選択し、APIキーを貼り付けたり、適切な環境変数(OPENAI_API_KEYANTHROPIC_API_KEYなど)を設定。
  3. セッションの開始 – プロジェクトディレクトリでcrushを実行。TUIが表示されるので、自然言語のプロンプトを入力、コード生成を依頼、またはツール実行をリクエスト可能。
  4. 設定(オプション)crushrc(Bash構文)またはJSON設定ファイルを作成し、LSP、MCPサーバー、事前に承認されたツールを追加。READMEに例スニペットあり。

設定のハイライト

  • プロバイダー定義crushrcまたはJSONでprovider add <name> --type <type> --base-url <url>と記述し、モデルを登録(model add …)。
  • LSPlsp add go --command "gopls" --enabled trueでGo言語サーバーをモデルに利用可能に。
  • MCPサーバー – カスタムツールバックエンドを追加、例:ローカルNodeスクリプト(mcp add filesystem --command node …)やGitHubベースのMCP(mcp add github --type http …)。
  • 権限permissions allow view editで安全なツールを事前に承認;permissions deny bashで危険なものをブロック。
  • グローバルコンテキスト – 個人の指示を~/.config/crush/CRUSH.md(またはoption global-context-pathでカスタムパス)に配置。
  • 環境オーバーライドCRUSH_GLOBAL_CONFIGまたはCRUSH_GLOBAL_DATAを設定して、設定/データディレクトリの場所を変更可能。

どんな人に向いているか

  • ターミナルで生活し、シェルから離れずにAI支援を望む開発者。
  • 複数のOSやCI環境で一貫性があり、設定可能なAIアシスタントが必要なチーム。
  • オンプレミスのLLM(Ollama、ローカルHugging Face推論)を使い、シンプルなフロントエンドを求めるユーザー。
  • LLMを通じてツール呼び出しをスクリプト化・自動化したいが、細かい権限制御を維持したい人。

READMEからのリンク


まとめ

Crushは、既存の開発ツール(LSP、バージョン管理、カスタムMCPサービス)と統合され、ほぼすべてのLLMバックエンドと動作する、完全機能のターミナルネイティブLLMアシスタントです。コマンドラインを好む開発者向けに設計されており、設定可能で権限意識のあるAIパートナーを提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト