garuda について
Garudaは、AIコーディングアシスタントを使うチーム向けの変更管理MCPサーバーです。コードへの影響を分析し、アーキテクチャルールに照らして変更を検査し、保存した判定を改ざん検知ログに記録します。
主な機能
- 01コード依存関係の影響分析
- 02アーキテクチャルールの抽出と検査
- 03ALLOW、WARN、REVIEW、BLOCKの判定
- 04新規問題と既存問題の区別
- 05保存した検査結果の改ざん検知記録
活用シーン
- 01AIによるコード編集前の依存確認
- 02アーキテクチャルール違反の変更阻止
- 03指標の計算式の差異確認
- 04変更検査の監査記録の保持
MCP 対応
`garuda-mcp`は標準入出力で動作し、MCP対応アシスタントに54個のツールと6つのスキルを提供します。読み取り専用操作と状態を変更する操作があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e DATABASE_URL -e GARUDA_WORKSPACE ghcr.io/myshra777-ai/garuda-mcp:1.9.11DATABASE_URLシークレットPostgreSQL connection URL for the Garuda graph and ledgerGARUDA_WORKSPACEWorkspace name to governローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/myshra777-ai/garuda-mcp:1.9.11stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Garuda
AI はコードを書けます。Garuda は変更がシステムのルールを守っていることを確認します。
AI が書いたコードの変更管理。
エンジニアリングチームを率いていますか? 2 分でわかる導入メリット →
これは何ですか?
AI アシスタント(Claude Code、Cursor、Codex など)にコードを変更させます。変更はうまくいき、テストも通ります。 しかし、サービスレイヤーをひそかに迂回したり、昨年チームで合意したルールを破ったり、財務チームが頼りにしている数値を変更したりしていないでしょうか?
アシスタントはコードを書くのが得意です。しかし、チームが決めたすべてのこと、コードに依存するシステムのすべての部分、守らなければならないすべてのルールを、自動的に把握しているわけではありません。
Garuda は、AI アシスタントとコードベースの間に入る安全チェックです。
- アシスタントが何かを編集する前に、Garuda はそのコードに依存するものと適用されるルールを伝えます。
- 編集の後に、Garuda はルールに照らして変更をチェックし、修正方法をわかりやすく示しながら、許可、警告、レビュー、ブロックのいずれかを伝えます。
- 保存された判断は改ざんを検知できるログに記録されるため、後から何をいつチェックしたかを証明できます。
影響を把握する。ルールを適用する。証拠を残す。
Go、Python、TypeScript に対応しており、今後さらに多くの言語に対応する予定です。
変更の最初から最後まで
アシスタントに決済ハンドラーの機能追加を依頼したとします。
- まず Garuda に確認します。 Garuda は「ほかの 12 の要素がこれに依存しています。リスクの高いコードです。ルール:決済ハンドラーはデータベースに直接アクセスしてはいけません」と回答します。
- アシスタントが編集します。 急いでいたため、ハンドラーからデータベースを直接呼び出してしまいます。
- Garuda が変更をチェックします。 違反したルールを検知してブロックし、何をどこに移動すればよいかをアシスタントに正確に伝えます。
- アシスタントが修正します。 2 回目のチェックでは許可されます。
- 結果が保存されます。 後から確認できる記録が残ります。
Garuda は、問題を今回の変更で発生したものと、以前から存在していたものに分けて扱います。先に何年分もの古いコードを整理しなくても、作業を進められます。新たに発生した問題だけに対応すればよいのです。
Go はコンパイラーと同じ方法で読み取るため、結果が再現可能です。Python と TypeScript はコード構造から読み取ります。こちらも正確ですが、解析の深さは Go ほどではありません(Garuda が行わないことを参照)。
使い方を見てみましょう(約 10 分)
1. インストールする · 3 minutes
git clone https://github.com/myshra777-ai/garuda.git
cd garuda
./setup.sh
setup.sh はローカルの PostgreSQL データベースを起動し、ツールを bin/ にビルドして、ダッシュボードを起動します。
最後にログイン情報が表示されます。Windows では setup.ps1 を使用してください。
まずは試してみたいですか? npx garuda-guard demo を実行すると、データベースなしで以下のデモを実行できます(Node 18 以降が必要です)。
AI アシスタントに任せたいですか? ChatGPT、Claude、Codex、Cursor 用のプロンプトをコピーする。
1 行で済ませたいですか? curl -fsSL https://raw.githubusercontent.com/myshra777-ai/garuda/main/install.sh | bash でも同じ処理を実行できます。
(シェルにパイプで渡すインストーラーと同様、まず内容を確認してください。)
2. 仕込まれた 3 つのバグを見てみる · 1 minute
./bin/garuda demo
このコマンドは、意図的に 3 つの問題を仕込んだ小さな架空の決済サービスをビルドし、そのサービスに対して Garuda のアナライザーを実行して、Garuda が検出するように設計されている問題を一覧表示します。データベースは不要です。
| 仕込まれた問題 | 重要な理由 |
|---|---|
| 決済ハンドラーがデータベースと直接やり取りする | 資金の移動を保護するためのレイヤーを迂回してしまいます |
金額の計算に float64 を使っており、1 件のレポートでは値が 10 倍ずれています(48 Cr と 4.8 Cr) | 気づかないうちに誤った数値が使われます |
| ストレージレイヤーが決済レイヤーをインポートする | 依存関係の向きが逆になります |
問題ごとに、該当するファイルと行、そして AI アシスタントが実行できる簡単な「修正方法」が表示されます。
このサービスと 3 つの問題はデモ用に作られた架空のものであり、デモでは問題を検出するのではなく、一覧表示しています。実際のコードを検出するには、ステップ 1 を完了してから、ステップ 4 で garuda check を実行してください。Windows では .\bin\garuda.exe demo を実行してください。
3. ダッシュボードを開く · 2 minutes
http://localhost:8080/login にアクセスし、setup.sh に表示されたログイン情報でサインインします。
ダッシュボードのトップページで、5つのステップを順に進められます。それぞれの内容は次のとおりです。
独自のプロジェクトを追加する。 New Workspace をクリックし、GitHub のリンクまたはフォルダーパスを貼り付けると、Garuda がコードを読み込みます。
スパゲッティのような図を見ずにシステムを把握する。 ひとつの巨大で複雑なグラフではなく、Garuda は知りたいものの周辺に絞って表示します。何がそれを呼び出し、何を呼び出しているのかが分かります。
文書に書かれた決定を、強制されるルールに変える。 設計文書や決定記録(ADR)を取り込みます。Garuda は「必ず」と「してはならない」の記述を抽出し、関連するコードに結び付けます。まだ文書がない場合は、コードからルールブックを作成するので、内容を確認して承認できます。
食い違う数値を見つける。 2つのチームが同じ指標を異なる方法で計算している場合や、あるクエリでは 1e7 で割り、別のクエリでは 1e8 で割っている場合に、Garuda が2つのバージョンを並べ、コード内で見つけた数式を表示し、どちらが正しいか人間に判断を求めます。推測はしません。
シグナルの意味を把握する。 各バッジの意味は固定されています。
| 表示 | 意味 |
|---|---|
| ALLOW / WARN / REVIEW / BLOCK | 変更に対する判定です。BLOCK は変更を停止し、修正方法をアシスタントに伝えます。 |
| SUPPORTED | 確認した範囲で、証拠がこの主張を裏付けています。安心して依拠できます。 |
| UNVERIFIED | コードまたは文書内で見つかりましたが、まだ確認されていません。エラーではありません。 |
| CONTRADICTED | 証拠が、記録したルールまたは主張と矛盾しています。 |
| HIGH / MEDIUM / LOW tier | このコードに依存するものの数を示します。HIGH tier のコードは、AI による予告なしの書き換えから保護されます。 |
4. 独自のコードを対象にする · 3 minutes
cd /path/to/your/project
/path/to/garuda/bin/garuda init . --wizard # five short questions
/path/to/garuda/bin/garuda rulebook generate # drafts rules from your code
/path/to/garuda/bin/garuda check . --diff HEAD # checks what you just changed
どのルールから始めればよいか分からない場合は、すぐに使えるセットを選んでください:garuda init . --template layered(hexagonal、microservices、no-circular-imports、financial、zero-trust-auth、ai-agent-safety、pii-gdpr-hipaa、idempotent-mutations、または all も使用できます)。これらは policies/templates/ にあります。
ArchUnit、Dependency-Cruiser、Import Linter から移行する場合は、garuda import --from archunit --input <file> で既存のルールを変換できます。
問題がありそうな場合は、./bin/garuda doctor を実行します。データベース、マイグレーション、フックをチェックし、問題があれば知らせます。
AI アシスタントに接続する
garuda init を実行すると、Claude Code、Claude Desktop、Cursor 向けの設定が自動的に行われます。代わりにプラグインとしてインストールするには、次のようにします。
| ツール | 方法 |
|---|---|
| Claude Code | /plugin marketplace add myshra777-ai/garuda then /plugin install garuda@garuda |
| OpenAI Codex | codex plugin marketplace add myshra777-ai/garuda |
| Cursor | garuda init を実行します。プロジェクトにルールと MCP 設定が書き込まれます(プラグインのマニフェストは .cursor-plugin/ にあります) |
| MCP に対応するものすべて | stdio 経由で garuda-mcp を実行します(設定例) |
プラグインには garuda-mcp プログラムとデータベースが必要です。まず上記の手順 1 を実行してください。
アシスタントが利用できるもの:54 個のツール(読み取り専用 41 個、状態を変更できるもの 13 個)と6 個のスキル。スキルは、ツールを使うタイミングを示す短い手順書です。
| スキル | アシスタントが使うタイミング |
|---|---|
pre-edit-governance | コードを変更する前:続行するか、修正するか、人に確認するか? |
change-impact | これを呼び出しているのは誰か、影響はどこまで広がるか? |
post-edit-verification | 編集後:この差分に新たな違反はあるか? |
violation-repair | 変更がブロックされた場合、別の問題を起こさずに修正する |
architecture-review | 実際のコードは、文書化された設計と一致しているか? |
evidence-verification | この主張はコードで裏付けられているか、そして証拠は本物か? |
すべてのプルリクエストをチェックする
アシスタントが適切に振る舞うかどうかは、依頼にすぎません。プルリクエストのチェックはルールです。GitHub Action を追加すると、すべてのプルリクエストに判定結果が表示されます。
- 判定結果(ALLOW、WARN、REVIEW、BLOCK)とレシートハッシュが実行サマリーに表示され、手元で再現するためのコマンドも 1 行で示されます。
- BLOCK の場合、チェックは失敗します。
- 用意済みのワークフロー
.github/workflows/garuda-gate.ymlを使うと、プルリクエストへの判定コメントと、GitHub の Security タブへの検出結果も表示されます。 garuda check --notify-slack/--notify-teamsによる Slack または Teams への通知も利用できます(任意)。
docs/GITHUB_MARKETPLACE_STRATEGY.md からすぐに貼り付けられるスニペットをコピーするか、action.yml を直接使用してください。
もう 1 つの手順で、実効性が生まれます: リポジトリの Settings → Rules(または Branches)に移動し、Garuda のチェックを必須ステータスチェックに設定してください。これを行うまでは、失敗したチェックは、無視してマージできる警告にすぎません。
Garuda がしないこと
このページのほかの内容を安心して信頼していただくため、できないことも説明します。
- アシスタントを縛るものではありません。 Garuda はアシスタントにコンテキストを提供し、不適切な変更をブロックしますが、アシスタントが助言を無視したり、フックが無効にされたりすることはあります。スキップできないチェックは、上記の必須プルリクエストチェックです。
- Go は Python や TypeScript よりも深く解析されます。 Go はコンパイラ独自の型情報を使って読み取ります。Python と TypeScript はコード構造に基づいて読み取ります。インポート、呼び出し、レイヤーについては正確ですが、すべての型を解決するわけではありません。
- すべてのチェック結果が自動的に保存されるわけではありません。 結果が改ざん防止ログに封印されるのは、チェックが保存された場合のみです。このログは、記録が後から変更されていないことを証明します。分析が完全だったことを証明するものではありません。
- 数値の不一致を調べるツールは、人が判断するのを支援します。 指定された数式と数値を並べて示しますが、企業におけるあらゆる財務計算を自動的に理解するわけではありません。デモに登場する
48 Crと4.8 Crの違いは、意図的に用意された例です。 - このページの数値は、特定のリリースに基づいています。 何を、いつ、どのように測定したかについては、
EVIDENCE.mdをご覧ください。
どのような方に適していますか?
重要なルールがある実際のコードベースで、AI コーディングアシスタントをすでに頻繁に利用しているチームに適しています。たとえば、必ず通す必要のあるレイヤー、データアクセスの制限、セキュリティ要件や金銭の取り扱いに関する要件などです。AI が書いた変更をすべて自分で確認できない場合は、Garuda が役立ちます。
無料版と有料版
上記の機能はすべてローカルで動作し、無料のオープンソース(Apache 2.0)です。ホスト型機能や複数チーム向け機能(組織内で共有するポリシー、シングルサインオン、長期監査ログの保存)は、有料プランでの提供を予定しています。
詳しくはこちら
QUICKSTART.md:同じ流れをより詳しく説明していますdocs/TALON.md:変更前後のチェックの仕組みdocs/DASHBOARD_WALKTHROUGH.md:ダッシュボードの各ページdocs/DATA_AND_LOGIC_AUDIT_GUIDE.md:数値の不一致を検出するチェックdocs/adr/:Garuda 自体に関する決定事項docs/LISTING_GUIDE.md:このプロジェクトをプラグインや MCP のディレクトリに掲載する方法INSTALL.md·docs/API.md·EVIDENCE.md·SECURITY.md·CONTRIBUTING.md
AI の開発を加速しながら、変更内容の主導権を保ちましょう。
Apache 2.0 ライセンスのもとで公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。