Sourcegull について
Sourcegullは、Rust製のセルフホスト可能なコード検索・インテリジェンスサービスです。GitLab、GitHub、Giteaのリポジトリを管理するチームやコーディングエージェント向けに、インデックス検索、リポジトリ横断ナビゲーション、権限同期を提供します。
主な機能
- 01GitLab、GitHub、Giteaを横断検索
- 02リテラル、正規表現、キーワード、構造検索
- 03リポジトリ横断のシンボル、定義、参照ナビゲーション
- 04コードホストと同期した権限の適用
- 05トレンド、ウォッチ、一括変更
- 06gullコマンドラインとGraphQL API
活用シーン
- 01複数のコードホストからコードを検索
- 02コーディングエージェントによるシンボルやコミット履歴の確認
- 03リポジトリ権限に沿ったコード検索
- 04一括変更とマージリクエストの追跡
MCP 対応
Sourcegullは、コード検索、ファイルの読み取り、シンボル、定義、参照、Git履歴の確認に使うMCPサーバーを提供します。結果は呼び出し元の権限に従い、モデルのコンテキスト量に合わせて返されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://{sourcegull_host}/.api/mcpclaude mcp add --transport http sourcegull-sourcegull https://{sourcegull_host}/.api/mcp{"mcpServers":{"sourcegull-sourcegull":{"type":"http","url":"https://{sourcegull_host}/.api/mcp"}}}Cursor で開く{"servers":{"sourcegull-sourcegull":{"type":"http","url":"https://{sourcegull_host}/.api/mcp"}}}VS Code で開く{"mcpServers":{"sourcegull-sourcegull":{"type":"http","url":"https://{sourcegull_host}/.api/mcp"}}}{"mcpServers":{"sourcegull-sourcegull":{"serverUrl":"https://{sourcegull_host}/.api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細

数千のリポジトリを対象に、ミリ秒単位でコードを検索できます。トークン数は最大50分の1です。あなたにも、エージェントにも。
Rust で書かれた、GitLab、GitHub、Gitea 向けのセルフホスト可能なコード検索・コードインテリジェンスです。SSO、SCIM、RBAC、監査ログを含むすべての機能が Apache-2.0 の下でオープンソースとして公開されています。有料プランはなく、今後も提供する予定はありません。
クイックインストール · 本番環境へのインストール · ドキュメント · クエリ言語 · AI エージェント(MCP) · アーキテクチャ · 開発
高速検索でトークン数を削減
MCP 経由で接続したエージェントは、質問への回答に必要な行だけを読み取ります。リポジトリをクローンして grep する場合に比べて、トークン数を最大50分の1に抑えられます(トークン使用量)。
Sourcegull は独自のトライグラムインデックスを使用します。プッシュ後は、変更されたパスだけが差分シャードに書き込まれるため、リポジトリのインデックスを再構築することなく、数秒以内に新しいコミットを検索できます。小規模なリポジトリは複合シャードにまとめられるため、数千のリポジトリを抱えるインスタンスでも高速に動作します。インデックス化されていないリビジョン(任意のブランチ、タグ、コミット)は、git から直接検索されます。結果は見つかり次第、順次ストリーミングされます。
同じ GitLab での他の選択肢との比較: ベンチマーク。
すべて無料です
すべての機能はこのリポジトリで Apache-2.0 のもとに提供されています。エンタープライズ版、ライセンスキー、有料プランはなく、今後も追加する予定はありません。ほかのコード検索製品では通常、個別に販売されている機能も含まれます。
- GitLab、GitHub、Gitea の OAuth、OpenID Connect、または認証プロキシ(HTTP ヘッダー)によるシングルサインオンと、 SCIM プロビジョニング。
- ロール(RBAC)、 GitLab から同期されるリポジトリ権限とすべての読み取り時の適用、 および監査ログ。
- SCIP インデックスによる正確なコードナビゲーション。リポジトリやパッケージのバージョンをまたいで利用でき、GitLab CI からアップロードするか、自動インデックス作成で構築できます。インデックス未作成のリポジトリについては、検索ベースの結果で補完します。
- 一括変更:1 つの YAML 仕様で複数のリポジトリを変更し、GitLab のマージリクエストを作成して追跡します。
- トレンド、ウォッチ、CSV/JSONL エクスポートに対応した網羅的な検索ジョブ。
- 複数のリポジトリノードにまたがるリポジトリストレージ。ダウンタイムなしでノードを追加または削除できます。
- インスタンス内にとどまる使用状況分析。
- AI コーディングエージェント向けのMCP サーバー。
さらに、リテラル検索、正規表現検索、キーワード検索(BM25)、構造検索、ノートブック、コードオーナーシップ、保存済み検索と検索コンテキスト、GraphQL API、gull CLI、送信 Webhook、Grafana ダッシュボード、詳細なアラート定義も含まれます。ドキュメントをご覧ください。
本番環境ですぐに利用可能
- Rust のバイナリ 1 つと、唯一のステートフルな依存関係である PostgreSQL(16 以降)で構成されています。ベンダーのクラウドにデータが送信されることはありません。
- テレメトリはありません。使用状況分析はインスタンス内にとどまります。
- 単一ホスト向けの Docker Compose と、Kubernetes 向けの Helm チャートを用意しています。すべてのリリースで、前のバージョンからのアップグレードをテストしています。
- リポジトリストレージは複数のリポジトリノードに分散され、ダウンタイムなしでノードを追加または削除できます。
- 保存されたシークレットは暗号化され、再起動なしでキーをローテーションできます。
- Grafana ダッシュボードと Prometheus アラートが含まれています。
- コードとしての設定に対応しています。サインイン、コードホスト接続、サイト管理者は git のファイルで管理し、シークレットは環境変数から取得します。
- GitLab(gitlab.com およびセルフマネージド)ではすべての機能を利用できます。GitHub(github.com および Enterprise Server)と Gitea は、リポジトリ同期、権限同期、Webhook、サインインに対応しています。
- 複数のコードホストを同時に利用できます。gitlab.com、セルフマネージド GitLab、GitHub、Gitea を並行して接続でき、それぞれの権限を保ったまま、すべてを対象に一括で検索できます。
クイックインストール
Sourcegull を試す場合や、単一ホストで小規模チーム向けに実行する場合は、Compose バンドルを最新リリースからダウンロードし、公開イメージ ghcr.io/sourcegull/sourcegull(linux/amd64)を使って PostgreSQL と Sourcegull を起動します。
curl -fsSL https://github.com/sourcegull/sourcegull/releases/latest/download/sourcegull-compose.tar.gz | tar -xz
cd sourcegull-compose
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" > .env
docker compose up -d
http://localhost:7080 を開きます。最初にサインアップしたユーザーがサイト管理者になります。サイト管理 → コードホスト接続から GitLab、GitHub、または Gitea の接続を追加すると、リポジトリのクローン作成とインデックス作成が始まります。
本番環境へのデプロイ
docs/install.md はインストールガイドです。本番環境では、次のいずれかを使用してください。
- Kubernetes(Helm)。大規模なインストールや複数のリポジトリノード向けです。 外部 PostgreSQL と独自のシークレット、サイズプリセットを使用し、 サイジングを確認してください。 install.md → Kubernetesをご覧ください。 すべての値はチャートの READMEに記載されています。
- Docker Compose、本番環境レイアウト(
compose.production.yaml、ロールごとに 1 つのコンテナー)。単一ホスト向けです。 install.md → 本番環境レイアウトをご覧ください。
いずれの方法も、アップグレード(Compose、Helm)、 バックアップ、モニタリング、 コードとしての設定に関するドキュメントで運用できます。
AI エージェント(MCP)
/.api/mcp はModel Context Protocol サーバーです。コーディングエージェントは呼び出し元の権限でコードを検索し、ファイルを読み取り、シンボル、定義、参照を見つけ、履歴(ログ、コミット、比較、blame)を読み取れます。出力はモデルのコンテキストに収まるサイズです。
サイドバーの エージェントを接続 から、ワンクリックトークンを使って Claude Code、Cursor、VS Code、
Codex、Gemini CLI、Zed、JetBrains などのセットアップ手順をコピーして貼り付けられます。Claude Code の場合:
claude mcp add --transport http sourcegull https://sourcegull.example.com/.api/mcp \
--header "Authorization: Bearer <token>"
ツールと使用例:docs/mcp.md。
仕組み
1 つのバイナリ sourcegull が複数のロールで動作します。web(UI、API、検索の振り分け)、repo(git ストレージ、
インデックスシャードと検索。ノード間で分割)、worker(バックグラウンドジョブ)、blob(blob ストア)です。sourcegull supervise を実行すると、すべてを 1 つのプロセスで起動できます。sourcegull executor は Docker または Kubernetes でサンドボックス化されたジョブを実行します。PostgreSQL がデータ、ジョブキュー、リース、キャッシュを保持し、Redis は使用しません。
各リポジトリノードが自身のリポジトリをインデックス化して検索します。web がクエリを解析して権限を適用し、各ノードに振り分けて、結果ストリームを統合します。詳しくは
docs/architecture.mdをご覧ください。
ソースからビルドする
すべて Docker 内で実行されます。Docker Compose を備えた Docker 以外に、インストールするものはありません。
docker compose up -d # Postgres, Sourcegull built from this checkout, UI dev server
open http://localhost:5173 # UI with hot reload; API on :7080
scripts/dev test # the test suite against the dev Postgres
scripts/dev check # rustfmt, clippy -D warnings, UI type check and tests
scripts/dev help # e2e tests, benchmarks, a local GitLab with seed data, ...
詳しくはdocs/development.mdをご覧ください。
代替製品
| Sourcegull | Sourcegraph | Sourcebot | Zoekt | OpenGrok | Hound | GitLab のコード検索 | |
|---|---|---|---|---|---|---|---|
| ライセンス | 🟢 Apache-2.0 | 💰 プロプライエタリ | 💰 プロプライエタリ、5 ユーザーまで無料 | 🟢 Apache-2.0 | 🟢 CDDL-1.0 | 🟢 MIT | 💰 GitLab のプラン |
| すべての機能が無料 | 🟢 | 🔴 | 🔴 | 🟢 | 🟢 | 🟢 | 🔴 |
| 使用言語 | Rust | Go、TypeScript | TypeScript(内部で Zoekt を使用) | Go | Java | Go | Ruby、Go |
| インデックス済み正規表現検索 | 🟢 | 💰 | 🟢 5 ユーザーまで | 🟢 | 🟢 | 🟢 | 💰 デフォルトブランチのみ |
| インデックスされていないリビジョン(任意のブランチ、タグ、コミット) | 🟢 | 💰 | 🔴 | 🔴 | 🔴 | 🔴 | 🟡 任意のブランチ、1 回につき 1 プロジェクト |
| 構造検索と BM25 キーワード検索 | 🟢 | 💰 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 |
| コードホスト | 🟢 GitLab、GitHub、Gitea | 💰 多数 | 🟢 多数、5 ユーザーまで | 🟡 ミラーツール | 🟡 ローカルのチェックアウト(多数の VCS) | 🟢 git など | 🟢 GitLab のみ |
| 正確なコードナビゲーション(SCIP)、リポジトリ横断 | 🟢 | 💰 | 🔴 | 🔴 | 🔴 | 🔴 | 🟡 1 プロジェクト内 |
| コードホストから同期されるリポジトリ権限 | 🟢 | 💰 | 💰 | 🔴 | 🔴 | 🔴 | 🟢 組み込み |
| SSO、SCIM、RBAC、監査ログ | 🟢 | 💰 | 💰 SSO は 5 ユーザーまで無料、ほかは有料 | 🔴 | 🔴 | 🔴 | 💰 一部有料 |
| 複数のリポジトリにまたがる一括変更 | 🟢 | 💰 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 |
| トレンド、ウォッチ、検索ジョブ | 🟢 | 💰 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 |
| AI エージェント向け MCP サーバー | 🟢 | 💰 | 🟢 5 ユーザーまで | 🔴 | 🔴 | 🔴 | 🟡 無料、プロジェクト横断のコード検索は有料 |
| ホスト型 AI アシスタント | 🔴 | 💰 | 🟢 5 ユーザーまで | 🔴 | 🔴 | 🔴 | 💰 |
🟢 無料 · 💰 有料 · 🟡 不完全 · 🔴 利用不可
- Sourcegraph は最も包括的なコードインテリジェンスプラットフォームで、商用ライセンスのもとでセルフホストできます。
- Sourcebot は Zoekt を基盤として、ウェブ UI、MCP サーバー、AI アシスタントを構築しています。バージョン 6 以降はクローズドソースです。無料プランは 5 ユーザーまでで、権限の同期と分析機能は有料プランに含まれ、SCIM と監査ログは Enterprise プランに含まれます。
- Zoekt は高速なトライグラム検索エンジンで、それ以外の機能はありません。リテラル検索では Sourcegull より高速です。一方、Sourcegull はインデックス作成が速く、ディスク使用量が少なく、正規表現検索が高速です(以下を参照)。
ベンチマーク:同じ GitLab で、一度に 1 つの製品を検証
各製品は、1 つの GitLab CE 19.4 インスタンスにある同じ 1,007 個の公開プロジェクトをインデックス化しました。内訳は、固定リリースの大規模リポジトリ 7 個(Linux、LLVM、Go、Rust、Kubernetes、GitLab、TensorFlow。ソースコード 4.4 GB)と、履歴付きで生成したリポジトリ 1,000 個(0.84 GB)です。各製品は新規インストール状態から、6 CPU・メモリ 24 GB の 1 台のホストで、GitLab と並行して単独で実行しました。
| すべてのリポジトリを検索可能になるまで | ピークメモリ(インデックス作成中) | メモリ(アイドル時) | ディスク | 絞り込みリテラル | 一般的なリテラル | 正規表現 | 一致なし | |
|---|---|---|---|---|---|---|---|---|
| Sourcegull | 3 min 21 s | 3.7 GB | 2.2 GB | 3.7 GB | 54 / 69 ms (724) | 48 / 54 ms (1000) | 84 / 88 ms (1000) | 29 / 35 ms (0) |
| Sourcegraph 5.0.6 | 10 min 08 s | 5.2 GB | 3.2 GB | 13.4 GB | 22 / 33 ms (640) | 24 / 30 ms (902) | 121 / 242 ms (883) | 12 / 20 ms (0) |
| Sourcebot 5.1.16 | 5 min 31 s | 8.5 GB | 1.9 GB | 13.9 GB | 77 / 90 ms (660) | 101 / 113 ms (971) | 309 / 332 ms (978) | 18 / 21 ms (0) |
| Zoekt | 9 min 05 s | 3.9 GB | 1.7 GB | 13.9 GB | 16 / 23 ms (724) | 29 / 34 ms (1000) | 361 / 390 ms (1000) | 8 / 10 ms (0) |
| Hound | 3 min 02 s | 6.2 GB | 5.9 GB | 9.4 GB | 336 / 351 ms (724) | 766 / 851 ms (2188) | 788 / 884 ms (2187) | 10 / 13 ms (0) |
| OpenGrok 1.14 | 36 min 38 s | 9.0 GB | 5.1 GB | 18.4 GB | 973 / 998 ms (653) | 84 / 107 ms (1000) | 未対応 | 20 / 27 ms (0) |
- 検索可能になるまで:GitLab 接続を追加してから(または、ファイルから設定を読み込む製品では製品の起動から)、クローン作成を含め、すべてのリポジトリが検索インデックスに登録されるまでの時間です。
- メモリ:Docker の報告値に基づく製品の全コンテナ(データベースを含む)の使用量です。インデックス作成中のピーク値と、アイドル状態で 2 分経過した後の値を記載しています。ディスク:製品の全ボリューム(Git ミラー、インデックス、データベース)の使用量です。
- クエリ:各製品の検索 API に HTTP で送信した 20 回の逐次リクエストについて、3 回のウォームアップ後に測定した p50 / p95 です。結果は最大 1,000 件で、括弧内は返されたファイル数です。絞り込みクエリは
kmalloc_array、一般的なクエリはfunc main、正規表現クエリはfunc\s+main\(で、最後のクエリは何も一致しません。Sourcegraph と Sourcebot は行の一致数が 1,000 件に達すると打ち切るため、返すファイル数が少なくなります。Hound には上限がなく、一致するすべてのファイルを返します。 - 設定はデフォルトです。ただし、Zoekt(コミット c0b97d2 からビルドした
zoekt-indexserverとzoekt-mirror-gitlab)は-fetch_interval 1m(デフォルトの 1 時間では最初のインデックス作成が 1 時間遅れるため)と-cpu_fraction 1.0を指定しています。Hound は 6 個のインデクサーを実行します。OpenGrok はコードホストとの連携機能がないため、最初に全リポジトリをクローンする時間(6 個ずつ、86 秒)も含まれています。正規表現は単一トークンにしか一致しないため、正規表現クエリを表現できません。 - Sourcegraph 5.0.6 は、ソースコードが非公開になる前の 2023 年版シングルコンテナイメージです。Sourcebot 6 は、API が応答する前にデプロイをベンダーに登録する必要があるため、その必要がない最後のリリースである 5.1.16 を測定しました。GitLab CE ではコード検索がプロジェクト単位であるため、GitLab 独自のコード検索は含めていません。インスタンス全体の検索には、正確なコード検索(Zoekt)または高度な検索(Elasticsearch または OpenSearch)が必要で、いずれも Premium または Ultimate が対象です。
貢献
バグ報告やプルリクエストを歓迎します。docs/development.md では、Docker を使った開発環境、テスト、ベンチマーク、規約について説明しています。変更を送る前に scripts/dev check を実行してください。
ライセンス
Apache-2.0(LICENSE-APACHE)。サードパーティのプロジェクトに由来する部分は、それぞれのライセンスと帰属表示を引き継ぎます。詳しくは NOTICE を参照してください。
Sourcegull は独立したプロジェクトであり、Sourcegraph, Inc. または GitLab Inc. と提携関係になく、スポンサーも受けておらず、推奨も受けていません。製品名は各所有者の商標であり、代替製品や互換性を説明する目的でのみ記載しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。