- ターミナル上で動作する AI コーディングエージェントとして、さまざまな LLM(大規模言語モデル) と連携し、コード作成、ワークフロー自動化、コードコンテキストの維持などで コード生産性の向上をサポートします。
- 複数のモデルを選択したり、セッション中に自由に モデル切り替え ができ、プロジェクトごとのセッション/コンテキストの維持をサポートします。
- LSP(Language Server Protocol)連携、拡張可能な MCP(Model Context Protocol)対応、
.gitignore や個別ファイルの無視設定など 開発者向け機能を提供します。
- macOS、Linux、Windows、FreeBSD など 主要なターミナル環境で動作し、パッケージマネージャーまたは Go、バイナリなどの複数の方法でインストールできます。
- 直感的な設定と高度なカスタマイズを両立し、環境変数、JSON 設定、ツールのホワイトリストなど 上級ユーザーにも配慮した設計です。
Crush
- ターミナル環境で実行する AI コーディングエージェントで、開発者が好む LLM と自由に連携して、コーディング、編集、自動化をサポートします。
- 複数モデル(Anthropic、OpenAI、Groq、OpenRouter など) を自由に選択・切り替えでき、セッションごとにコンテキストを独立して管理します。
- LSP(Language Server Protocol) を通じて、各言語に適した追加コンテキストを受け取り、より賢くコードを補助します。
- MCP(Model Context Protocol) を通じて、外部システム、HTTP、コマンドライン、SSE などのさまざまなソースから追加情報を収集・活用できます。
主な機能
- マルチモデルサポート: OpenAI、Anthropic、Groq、OpenRouter など、さまざまな LLM を連携。直接追加も可能。
- セッションベースの作業: プロジェクトごとに複数の作業セッションとコンテキストを分離し、管理。
- 柔軟なモデル切り替え: セッションの途中でも自由にモデルを変更し、既存のコンテキストを維持。
- LSP 連携: Go、TypeScript、Nix など主要言語の LSP 接続で、コードの文脈を強化。
- 拡張性: MCP プロトコルベースで、外部 HTTP/CLI/SSE などの追加機能を簡単に拡張。
- 広範なプラットフォーム対応: macOS、Linux、Windows(WSL、PowerShell)、FreeBSD、OpenBSD、NetBSD など主要 OS のターミナルで動作。
- 直感的な設定: 別途設定なしで即利用可能で、必要に応じてプロジェクト別/グローバル JSON 設定をサポート。
- 強力な除外(ignoring)機能:
.gitignore、.crushignore ファイルを使用して、対象外のファイル/ディレクトリを管理。
- ツールホワイトリスト: ツール実行時の事前承認および自動実行オプションをサポートし、
--yolo フラグで全体プロンプトをスキップ可能(注意が必要)。
- カスタムプロバイダー: OpenAI、Anthropic 互換 API を自由に追加でき、価格やコンテキストなどの詳細オプションを指定可能。
インストールと開始
- Homebrew、NPM、Arch、Nix、Debian/Ubuntu、Fedora/RHEL など、さまざまなパッケージマネージャーおよびバイナリ/Go でインストール可能。
- 初回起動時に好みの LLM API キー(OpenAI、Anthropic、Groq など)を入力する必要があり、環境変数でも指定可能。
- 環境変数で連携可能な主要 LLM:
OPENAI_API_KEY、ANTHROPIC_API_KEY、GROQ_API_KEY、OPENROUTER_API_KEY、GEMINI_API_KEY、VERTEXAI_PROJECT など。
設定例
- グローバルまたはプロジェクト単位の JSON ファイル(
./.crush.json、./crush.json、$HOME/.config/crush/crush.json)で高度なオプションを適用
- LSP 設定: 言語別のコマンドを指定可能
{
"lsp": {
"go": { "command": "gopls" },
"typescript": { "command": "typescript-language-server", "args": ["--stdio"] }
}
}
- MCP 設定: HTTP/CLI/SSE ベースの外部拡張例
{
"mcp": {
"filesystem": {
"type": "stdio",
"command": "node",
"args": ["/path/to/mcp-server.js"]
}
}
}
- ファイル除外とツール承認
.crushignore で特定のファイル/フォルダーを除外
- ツール実行ホワイトリスト、または
--yolo フラグでプロンプトをスキップ
上級ユーザー向け機能
- カスタムプロバイダー登録: OpenAI/Anthropic 互換 API を追加し、価格・コンテキストなどの詳細オプションを指定。
- ロギング: プロジェクト別ログファイルを提供し、
crush logs、crush logs --follow などの CLI コマンドでリアルタイム確認。
- デバッグオプション:
--debug フラグまたは config で詳細ログを有効化
2件のコメント
aiderはマジでイマイチだけど;;
Hacker Newsのコメント
ほとんどのターミナルベースのAIコーディングエージェントが、テキストUIをやたら派手に飾ろうとしているのが奇妙に感じる。余白を増やし、ラインアート、ウィジェット、アスキーアート、グラデーション、アニメーションまで追加している。しかし、必要なキー バインドの網羅、タブ補完、一貫したスクロールバック、あるいはちらつきのないテキストレンダリングといった基本機能は欠けている。その点、このツールはnode.jsで書かれていないので、不要な再描画を減らすなど、ターミナル出力の性能面では期待できそうだ。ただ、REPLやCLIを期待して使ってみると、インタラクションモデルは同じなのに動作はまったく異なり、エディタやリーダー系のUnix TUIとも明らかに感触が違う。この流れはClaude Codeだけを真似たものなのか、それとももっと以前から始まっていたのか気になる。だから私は今でもAiderを好んでいる。REPLに近い見た目と使い勝手を提供してくれるからだ
このツールはCharmという会社が作っていて、コマンドウィンドウを魅力的にすることをミッションにしている。LLMブーム以前から何年も活動してきた。golang向けのCLIフレームワークやツールを作っている会社だ
私がターミナルで好きなのは、コマンドを打ち、複数のソースやプログラムのアクションや出力をログのように順番にずっと見ていける、スクロール中心のワークフローだ。本当に欲しいのは、強力なHTMLベースのマルチプログラム・スクロールワークフローだ。ところが最近のこうした試みは、両方の欠点を合体させたようなものだ。優れたUIは、より優れたレンダリングシステムの上で見たい
このテキストUIの流れは、実はAIエージェントが出る前からのcharmbracelet特有のスタイルだった。私は従来のTUIとは違って、キー バインドが直感的に見つけやすいので気に入っている
最近こうしたインターフェースが急速にファンと開発者を集めている理由の1つは、多くの人がもともとグラフィカルなIDEスタイルのエディタに慣れているからだと思う。すべての開発者がターミナルだけで作業しているわけではない。(私は今でもX/Waylandすら起動しない日がある)
少なくともemacsではClaude Codeを使える https://github.com/stevemolitor/claude-code.el
このツールの良い点の1つは、まだ初期段階なのでコードが非常に明快でモジュール化されていることだ。ツール呼び出し、セッション、自動要約、永続化管理など、エージェントを設計したいときに参考になる優れた青写真になっている。このコミットリンクはぜひ保存しておく価値がある
デモGIFで何が起きているのか実際に読みたい人向けに、ffmpegで遅く変換して動画にして投稿してくれた https://share.cleanshot.com/XBXQbSPP
15分ほど真剣に使ってみた。Claude Codeと比べた長所は、美しいUI、変更ファイルやコストなどを追跡できる便利なサイドバー、変更を受け入れやすいUX(ホットキー、見やすいdiffの提供)だ。一方で短所は、複数モデルを組み合わせられないことと、不要なバイナリファイルが大量にディレクトリへ追加されること。初期initで
CHARM.mdというファイルが生成されるが、そこに書かれる内容は私がモデルに共有したい情報と一致していなかった。たとえば、私のGoのテストケースがPascalCasingを使うことまでは伝わらない。また、Ctrl+Cで終了すると自分のターミナルがクラッシュしたCHARM.mdが作られるという話、もうそろそろみんながよく知られた単一のagent instructionファイル標準(例:AGENT.md)に合意してほしい。Ampが自社CLIツール向けに推している標準ではあるが、その皮肉を承知のうえでもその方式を支持したくなる https://ampcode.com/AGENT.md を参照。あるいは、こういう回避的なハックもある https://kau.sh/blog/agents-md/本当に重要な問いは、新しいエージェントのうちどれがローカルモデルをきちんとサポートしているかだ。外部APIへの依存をなくしたいし、ある程度の性能低下は受け入れるつもりだ
CrushではOllama対応を追加するissueが進行中だ(2週間前から)
ほとんどのエージェントはOpenAI互換エンドポイントで動く
OpenHandsは、望むどんなLLMでも設定できる https://github.com/All-Hands-AI/OpenHands
Aiderもローカルモデルをサポートすると明記しているが、自分ではまだ使っていない https://aider.chat/docs/llms.html
Claude Code、opencode、aider、cortexのような新しいツールを全部比較した表があると本当に助かる。各ツールがどう動き、何が違うのかが一目で分かりにくい
商用モデルを使った比較やベンチマークは、コストのせいで非常に難しい。最近論文を書いたときも、SOTAの商用モデルをいくつも評価するのに1万ドル以上かかった。オープンモデルとの比較は安くできたが、査読者が「最高」との比較を求めるので避けられなかった。それだけでなく、商用モデルの内部構造やスタックは透明ではなく、いつでも変わりうるため、あまりに非効率だ。学術研究で商用モデルとの比較を無条件に要求するのは望ましくないと思う
opencodeが元の名前だったが、開発者間の対立があって名前が変わったと記憶している
パフォーマンスは単にツールだけでなく、使うモデル、コードベース(コンテキスト)、そして与えるタスク(プロンプト)によって変わる。これらの要素は独立しておらず、組み合わせによって性能差が大きい。たとえばClaude Sonnet 4とClaude CodeはバックエンドのPython機能実装に向いていて、Gemini 2.5 ProはフロントエンドのReactコード修正により向いていた。つまり、すべての変数を固定してツールだけ比較することはできず、ツールモデルコンテキスト*プロンプトまで含めた組み合わせが必要になる。16x Evalはこのあたりを一部扱っているが、ツールのような要素はまだ含まれていない https://eval.16x.engineer/
"glamorous" はイギリス英語でも使われる表現だ https://dictionary.cambridge.org/dictionary/english/glamorous
ここ数週間Crushを使っているが、本当に期待している。Charmは長年追ってきたが、開発者体験を本当に理解し、人々が気に入るツールを一貫して作ってきた数少ないチームの1つだ。AIコーディング競争にこれほど早く参加したのも良い兆候だ。実際に使う人たちが作ったツールであることがはっきり分かる
また1つ出てきたが、今回は本当にデザインが良い。ぜひ試してみるつもりだ。どのツールでも不満なのは(EDIT: opencodeはgithub認証が可能)、月額制サービス(github copilot、claude code、openai codex、cursorなど)に対して、自分の既存の購読でそのまま認証できないことだ。サービス自体には課金しているのに、インターフェースが気に入らないとき自由に差し替えられたら本当にいいと思う
LSP強化: Crushは、一般的な使い方としてLSPを追加コンテキストとして活用する。これが私にとって最も興味深い機能だ。マルチセッションやプロジェクト機能にも関心がある