Infomesh について
Infomeshは、ホスト型検索APIを使わずにウェブ検索を行いたいAIアシスタントや開発者向けの分散型P2P検索エンジンです。オフラインで使えるローカルインデックスに、ピア検索とページのクロール・取得機能を組み合わせています。
主な機能
- 01分散型P2P検索
- 02ローカルインデックスでのオフライン検索
- 03URLのクロールとインデックス化
- 04ページ全体の取得
- 05CLI、Pythonパッケージ、ローカルHTTP API
活用シーン
- 01ネットワークなしでインデックス済みページを検索
- 02利用可能なピアを横断して検索
- 03URLをクロールしてから内容を検索
- 04AIアシスタント用にページを取得
MCP 対応
MCPサーバーは、MCPクライアントに検索、クロール、ページ取得機能を提供します。ローカル検索はノード内にとどまり、分散検索ではクエリがピアに送られます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| answer_mode | enum | いいえ | 応答モード:'snippets'(順位付き結果)、'summary'(回答の抽出)、'structured'(スコアとメタデータを含む JSON)snippets | summary | structured |
| chunk_size | integer | いいえ | RAG コンテキスト分割のチャンクサイズです。設定すると、出典情報付きのチャンクが返されます。 |
| domain_allowlist | array | いいえ | これらのドメインからの結果のみを含めます |
| domain_blocklist | array | いいえ | これらのドメインからの結果を除外します |
| explain | boolean | いいえ | 各結果にスコアの内訳(BM25、新しさ、信頼性、権威性)を含める |
| fetch_full_content | boolean | いいえ | 各結果の完全な記事本文を取得して返す |
| language | string | いいえ | ISO 639-1 言語コード(例:'en'、'ko'、'ja') |
| local_only | boolean | いいえ | ローカルインデックスのみを検索(オフライン、<10ms) |
| query | string | はい | 検索クエリ文字列 |
| recency_days | integer | いいえ | 過去 N 日以内に公開された結果に絞り込む |
| rerank | boolean | いいえ | ローカル LLM によるセマンティックな再ランキングを適用する |
| top_k | integer | いいえ | 返す結果の件数 |
詳細
InfoMesh
完全分散型 P2P 検索エンジン(LLM 向け)
クレジットカード不要。ホスト型 API キー不要。クエリごとの料金も不要です。
クイックスタート • InfoMesh を選ぶ理由 • 機能 • 新機能 • アーキテクチャ • セキュリティ • クレジット • コントリビューション • ドキュメント
ヒント
P2P ブートストラップの設定 InfoMesh には現在、Azure East US にブートストラップノードが 1 つ組み込まれています。オプションの
p2p依存関係をインストールすると、ノードは起動時に接続を試みますが、利用可能性や到達可能性は保証されません。ピアを手動で追加するには、次のコマンドを実行します。infomesh peer add /ip4/<IP>/tcp/4001/p2p/<PEER_ID> infomesh peer test
💡 InfoMesh を選ぶ理由?
問題
すべての AI アシスタントにはリアルタイムのウェブアクセスが必要ですが、その利用は高額でプロプライエタリな検索 API によって制限されています。
| 種類 | 一般的な費用 | 制限 |
|---|---|---|
| LLM にバンドルされたウェブ検索 | トークン料金に内包 | 1 社の API に固定され、単独では利用できません |
| カスタム検索 API | 約 1,000 クエリあたり 3~5 ドル | API キーと請求アカウントが必要で、レート制限があります |
| AI 検索 SaaS | クエリあたり約 0.01~0.05 ドル | SaaS への依存があり、月間利用上限があります |
| 検索スクレイピングプロキシ | 月額約 50 ドル以上 | 不安定で、上流の変更により動作しなくなることがあります |
| InfoMesh | ソフトウェア料金・クエリ料金ともに 0 ドル | ハードウェアと接続環境はご自身で用意してください。クロールとリソースには制限があります |
これにより、個人で AI を開発する人、オープンソースのアシスタント、研究者にとって有料の壁が生じます。小規模なプロジェクトやローカル LLM には、リアルタイムのウェブ検索を利用する余裕がありません。
上記の価格は説明用の例であり、プロバイダーの現在の料金を示すものではありません。実際の料金、無料枠、ログ記録ポリシー、制限は、プロバイダーや導入環境によって異なります。
解決策
AI エージェントの構築を始めてすぐに、壁にぶつかりました。無料のウェブ検索 API がなかったのです。 AI エージェントにウェブで何かを調べさせるだけなのに、どのプロバイダーもクレジットカード、請求アカウント、または月額サブスクリプションを求めていました。それはおかしいと感じました。
そこで InfoMesh を構築しました。コミュニティそのものがインフラとなる分散型検索エンジンです。
- 中央サーバーなし — 参加者は全員、クローラーと検索ノードの両方になります。
- クエリごとの料金なし — クロールに貢献すると、検索クレジットを獲得できます。貢献するほど、より多く検索できます。
- ベンダーロックインなし — 標準の MCP プロトコルに統合でき、ローカルインデックスを使ってオフラインでも動作します。
- クエリの一元的な収集なし — ローカルのみのクエリはノード内にとどまります。分散検索では、参加しているピアにクエリが送信されます。ローカルの診断情報にはクエリテキストが含まれる場合があります。
InfoMesh は、既存の商用検索プロバイダーと競合するものではありません。そうした企業は、広告を収益源として大規模な「人間向け」の検索サービスを提供しています。InfoMesh は、AI アシスタント向けに、必要十分な検索機能を MCP 経由で無料で提供し、クエリごとの課金なしでリアルタイムのウェブアクセスを誰もが利用できるようにします。
AI エージェントに財布を気にせずウェブ検索させたかっただけです。同じように感じたことがあるなら、InfoMesh はあなたのためのものです。
🆓 無料。すべてのインターフェースで。例外なし。
| 利用方法 | 費用 | 例 |
|---|---|---|
| MCP(AI アシスタント) | 無料 | Claude、VS Code Copilot、その他の MCP クライアントから search() を呼び出せます。API 料金はかかりません |
| CLI(ターミナル) | 無料 | uv run infomesh search "python asyncio" — ローカルの検索結果と利用可能なピアが表示されます。レイテンシはワークロードによって異なります |
| Python パッケージ(コード) | 無料 | from infomesh.index.local_store import LocalStore — アプリに検索機能を組み込めます |
| ローカル API(HTTP) | 無料 | curl localhost:8080/search?q=... — ローカルの管理 API が実行中の場合に利用できる REST エンドポイントです |
ホスト型 API のキーや請求アカウントは不要です。運用者は API キー認証を有効にできます。クロール頻度、クレジットの計算、リソース制限は引き続き適用されます。金額の支払いに基づくレート制限はありません。 ノードを運用し、ネットワークに貢献すれば、検索は永久に無料です。
InfoMesh と他の Web 検索 MCP サーバーの比較
無料の Web 検索 MCP サーバーをお探しですか?InfoMesh と一般的な代替サービスを比較しました。
| 機能 | InfoMesh | API ベースの MCP サーバー | スクレイピングベースの MCP サーバー | メタ検索エンジン |
|---|---|---|---|---|
| 無料枠 | クエリごとの課金なし。クレジット/リソースの上限が適用されます | 限定的(通常、月 1,000~2,000 件) | 無制限(API なし) | 無制限 |
| API キー | オプションの運営者設定認証 | ✅ 必須(登録が必要) | ❌ 不要 | ❌ 不要 |
| 分散型 | ✅ 完全な P2P | ❌ 集中型 | ❌ 集中型 | ❌ 単一インスタンス |
| オフライン検索 | ✅ ローカルインデックスはオフラインで動作 | ❌ | ❌ | ❌ |
| プライバシー | ローカルのみのクエリはローカルに留まります。分散クエリはピアに接続します | ⚠️ プロバイダーによってログに記録されます | さまざまです | ✅ セルフホスト可能 |
| セルフホスト | ✅ すべてを自分で管理できます | ❌ | ❌ | ✅ Docker が必要 |
| 独自の URL をクロール | ✅ crawl_url() ツール | ❌ | ❌ | ❌ |
| ページ全体の取得 | ✅ fetch_page() ツール | さまざまです | ❌ | ❌ |
| インストール | pip install infomesh | さまざまです | さまざまです | Docker Compose |
| オープンソース | ✅ MIT | さまざまです | さまざまです | さまざまです |
InfoMesh は、分散型ピア検索、オフラインのローカル検索、ホスト型 API キー不要、独自コンテンツのクロール/インデックス作成を組み合わせ、クエリごとの課金もありません。
🔐 設計段階から安全 — ノードを守る多層防御
ほとんどの検索エンジンは、運営者を信頼するよう求めます。InfoMesh が求めるのは、数学を信頼することです。
InfoMesh には、クエリを収集する中央サーバーはありません。**ローカルのみの検索はお使いのマシン上に留まります。分散検索ではクエリがピアに送信され、ネットワークに参加すると、インデックス化したコンテンツが公開または複製されることがあります。**ローカルセッション、分析データ、診断ログには情報が保持される場合があるため、セルフホストしてもクエリが一切保持されない保証はありません。
ネットワークに貢献 → クレジットを獲得 → リソースとクロールの上限内で、クエリごとの料金なしで検索できます。
それがすべてです。裏はありません。
InfoMesh のセキュリティ層
| 🔑 | Ed25519 暗号アイデンティティ | ノードは Ed25519 キーを使用します。署名付きの v2 交換では、署名者を libp2p ピアアイデンティティに紐付けます。旧式の v1 互換性は、認証済みの v2 トラフィックではありません。クレジットエントリーへの署名は任意です。キーのローテーションは infomesh keys rotate で行えます。秘密鍵を保護し、アプリケーションキーとトランスポートアイデンティティを区別してください。 |
| 🔏 | 署名付きコンテンツ証明 | 公開されたソース証明では、SHA-256(raw_response) と SHA-256(extracted_text) を署名アイデンティティに紐付けます。検証により、署名された証拠の変更を検出できますが、ソースページの真実性が立証されるわけではありません。ローカルのみのクロールでは、ネットワークへの公開は保証されません。 |
| 🌳 | マークルツリーによる完全性 | マークル包含証明により、特定のルートに対するドキュメントハッシュを検証します。改ざんされた証拠はそのルートに対する検証に失敗します。有効な証明でも、ソースの真実性や、すべてのピアがインデックス全体を保存していることは保証されません。 |
| 🔍 | ランダム監査 | レプリカ/ソースの監査メンテナンスは、利用可能なピアと証拠に応じて、およそ1時間ごとに実行されます。レプリカの破損は信頼性の失敗につながる可能性があります。ウェブコンテンツの変更は結論が出ないものであり、不正の自動的な証明にはなりません。記録された監査の連続失敗が3回に達すると、隔離が行われます。 |
| 🛡️ | Sybil 攻撃への防御 | ローカルでの Proof-of-Work 生成とサブネットへの参加制限により、参加コストを引き上げます。生成時間はハードウェアと乱数性によって異なります。これらの仕組みは、大量のアイデンティティの生成を防ぐことを保証するものではありません。デフォルトのサブネット制限は、/24 の参加バケットあたり3ノードです。 |
| 🌐 | Eclipse 攻撃への防御 | ブートストラップの検出、ピア交換、サブネット制限により、接続先の多様化を促します。到達可能な独立したブートストラップピアを少なくとも3つ確保することはデプロイ時の目標であり、標準で保証されるものではありません。現在のノードリストにはピアが1つだけ含まれています。これらの防御策によって Eclipse 攻撃を完全に排除することはできません。 |
| 🚫 | DHT ポイズニングへの防御 | キーワードごとの公開制限(ノードあたり毎時10件)、新規公開への署名、コンテンツハッシュのチェックにより、流入を制限します。旧式の署名なし読み取りヒントは未検証のままであり、有効な署名があってもコンテンツの真実性は立証されません。 |
| 🔒 | 暗号化されたトランスポート | libp2p Noise トランスポートにより、転送中のピア間トラフィックを保護します。受信側のピアは引き続きクエリテキストと結果を処理します。トランスポートの暗号化は、匿名性や、侵害されたエンドポイントからの保護を意味しません。 |
| 🕵️ | クエリの一元的なログ記録なし | DHT の検出にはキーワードキーを使用しますが、ピアへの検索リクエストには元のクエリが含まれます。ローカルのセッションや診断情報にクエリ情報が保持される場合があり、リモートピアのログ記録は制御できません。クエリをピアに送信してはならない場合は、ローカルのみの検索を使用してください。 |
| 🧮 | クレジット証明の検証 | 署名キーを使用して記録されたエントリーは、検証可能なマークル証明に含めることができます。署名なしのエントリーには、この保証は適用されません。不正行為の検出と24時間の猶予期間ポリシーは、悪用の特定に役立ちますが、自己申告された貢献の正確性を保証するものではありません。 |
統合信頼スコア
各ピアは、アイデンティティではなく振る舞いに基づいて、継続的に更新される信頼スコアを獲得します。
Trust = 0.15 × uptime + 0.25 × contribution + 0.40 × audit_pass_rate + 0.20 × summary_quality
| ティア | スコア | 内容 |
|---|---|---|
| 🟢 信頼済み | ≥ 0.8 | 最も高い信頼グレードです。検索コストは貢献ティアによって別途決まります |
| 🔵 通常 | 0.5 – 0.8 | 標準的な動作です |
| 🟡 要注意 | 0.3 – 0.5 | 信頼グレードが低い状態です。監査証拠と隔離状態を確認してください |
| 🔴 信頼できない | < 0.3 | 連続失敗が3回に達すると、ネットワークから隔離されます |
コンプライアンスを標準装備
| 規制 | InfoMesh の対応 |
|---|---|
| robots.txt | 例外なく厳格に遵守し、自動ブロックリストを適用 |
| DMCA | 署名済みの正式な通知を受け付け、永続的な除外とピア経由の中継に対応します。ただし、到達不能なピアへの配信期限は保証されません |
| GDPR | 分散型の削除記録を保持し、忘れられる権利をサポートします |
| 著作権 | 全文はキャッシュとしてのみ保存し、検索結果には出典を明記した抜粋を返します |
要点: InfoMesh は暗号技術、監査、貢献インセンティブを活用し、中央プロバイダーへの依存を減らします。ローカルのみの検索ではクエリがローカルに保持されますが、ピア検索と公開では他のノードとデータが共有されます。クエリごとの料金はありませんが、運用上の制限と信頼に関する前提は引き続き適用されます。
🚀 クイックスタート
インストールして実行(2 ステップ — Git 不要)
必要なのは Linux ターミナル(Ubuntu、Debian など)だけです。 Python や開発の経験は必要ありません。
ステップ 1 — uv(Python パッケージマネージャー)をインストールします(初回のみ):
curl -LsSf https://astral.sh/uv/install.sh | sh
完了したら、ターミナルを閉じて開き直してください(または source ~/.bashrc を実行してください)。
これにより、uv と uvx コマンドが使えるようになります。
ステップ 2 — InfoMesh を実行します:
uvx infomesh status
uvx が InfoMesh を自動的にダウンロードして実行します。git clone、pip install、仮想環境の手動管理は不要です。InfoMesh には Python 3.12 以降が必要です。
初回実行時に依存関係がダウンロードされ、以降の実行ではキャッシュされたツール環境が再利用されます。
試してみる
# Crawl a webpage and index it
uvx infomesh crawl https://docs.python.org/3/library/asyncio.html --depth 0
# Search locally, and peers when P2P dependencies are available
uvx infomesh search "asyncio"
# View the node dashboard (works over SSH too)
uvx infomesh dashboard --text
--depth 0 を指定すると、この例では 1 ページに制限されます。省略すると、クロール設定に従ってリンクをたどります(デフォルトでは深さは無制限です)。ベースパッケージには P2P は含まれていません。ネイティブの前提条件をインストールした後、ピア検索には uvx --from 'infomesh[p2p]' infomesh search "asyncio" を使用してください。ローカルインデックスが空の場合、ローカル検索結果を返すには、クロールまたはインポートを正常に完了させる必要があります。
永続的にインストールする(任意)
InfoMesh を定期的に使う場合は、永続的なツールとしてインストールすると、uvx のプレフィックスが不要になります。
uv tool install infomesh
# Now run directly:
infomesh status
infomesh crawl https://example.com
infomesh search "example"
infomesh dashboard --text
AI アシスタントに接続する(MCP)
InfoMesh を VS Code(Copilot)、Claude Desktop、Cursor、Windsurf の MCP サーバーとして追加できます。デフォルトではホスト型 API キーは必要ありません。運用者は INFOMESH_API_KEY を使って認証を有効にできます。
Claude Desktop / Cursor / Windsurf では、次の mcpServers 形式を使用します。
{
"mcpServers": {
"infomesh": {
"command": "uvx",
"args": ["infomesh", "mcp"]
}
}
}
VS Code(Copilot) では、代わりに .vscode/mcp.json のルートに servers を使用します。
{
"servers": {
"infomesh": {
"type": "stdio",
"command": "uvx",
"args": ["infomesh", "mcp"]
}
}
}
これで、AI アシスタントは MCP 経由でローカルインデックスをクロールおよび検索でき、クエリごとの課金もありません。ピア検索を有効にするには、P2P の前提条件を準備し、args を ["--from", "infomesh[p2p]", "infomesh", "mcp"] に置き換えてください。上記のベース構成例では P2P の依存関係はインストールされません。
ソースから実行する(コントリビューター/開発者向け)
コードに貢献する場合、またはソースから実行する場合:
システム要件
P2P のオプション依存関係(libp2p)には C 拡張(fastecdsa、coincurve、pynacl)が含まれており、ネイティブのビルドツールが必要になる場合があります。これらは uv tool install 'infomesh[p2p]' などの P2P インストールや、libp2p も含むリポジトリの開発用依存関係に必要です。
Linux(Debian/Ubuntu):
sudo apt-get update && sudo apt-get install -y build-essential python3-dev libgmp-dev
macOS:
brew install gmp
# Xcode Command Line Tools must also be installed
Windows: WSL2(推奨)を使用するか、Visual Studio Build Tools と GMP をインストールしてください。
注: ベースパッケージ(
uv tool install infomesh、またはソースからのuv sync --no-dev)では、P2P のビルド依存関係は不要です。通常のuv syncではデフォルトでdevグループが含まれるため、このリポジトリで通常のコントリビューター向け環境を構築する場合は、それらが必要です。
クローンして実行
# Clone and install with dev dependencies
git clone https://github.com/dotnetpower/infomesh.git
cd infomesh
uv sync
# Start InfoMesh with the TUI dashboard
uv run infomesh start
# Or run headless (servers / CI)
uv run infomesh start --no-dashboard
Docker
docker build -t infomesh .
docker run -d --name infomesh \
-p 4001:4001 -p 8080:8080 \
-v infomesh-data:/data \
infomesh
動作を確認する
# Search your local index and peers
uvx infomesh search "python asyncio tutorial"
# Check node status
uvx infomesh status
# Crawl a specific URL on demand
uvx infomesh crawl https://docs.python.org/3/
# Export your index as a portable snapshot
uvx infomesh index export backup.zst
使用例
すぐに実行できる Python スクリプトが examples/ ディレクトリにあります。
# Local search
uv run python examples/basic_search.py "python tutorial"
# Crawl → index → search pipeline
uv run python examples/crawl_and_search.py https://docs.python.org/3/
# Programmatic MCP client
uv run python examples/mcp_client.py "async programming"
一覧は examples/README.md をご覧ください。
✨ 機能
コア機能
| 機能 | 説明 |
|---|---|
| 🌐 完全分散型 | 中央サーバーはありません。すべてのノードがハブであり参加者でもある、協調型のしっぺ返しアーキテクチャです |
| 🤖 LLM ファースト設計 | AI による利用に最適化された、MCP 経由の純粋なテキスト API です。ブラウザー UI は不要です |
| 🔍 デュアル検索 | キーワード検索(SQLite FTS5 + BM25)と、オプションのセマンティックベクトル検索(ChromaDB)に対応します |
| 🕷️ スマートクローラー | robots.txt の遵守、アクセス間隔の設定、3 層の重複排除に対応した非同期クロールです |
| 📡 P2P ネットワーク | Kademlia DHT、mDNS によるローカル検出、暗号化通信を備えた libp2p ベースのネットワークです |
| 💾 オフライン対応 | インターネットに接続していなくてもローカルインデックスを利用できます。クロールしたナレッジをいつでも検索できます |
| 🏆 クレジットによるインセンティブ | クロールやピアへの提供でクレジットを獲得できます。貢献するほど検索枠が増えます |
| 🔐 コンテンツの完全性 | SHA-256 コンテンツハッシュ、Ed25519 ソース証明、ランダム監査、Merkle 証明に対応します |
| 🤏 zstd 圧縮 | 保存されたドキュメントのコンテンツとインデックスのスナップショットには zstandard を使用します。P2P フレーミングは全体で圧縮されるわけではありません |
| 📊 コンソールダッシュボード | 概要、クロール、検索、ネットワーク、クレジット、設定の 6 タブを備えた、見やすい Textual TUI です |
| 🌏 CJK 検索 | 中国語/日本語/韓国語のトークン化と、バイグラム/トライグラムへの展開にネイティブ対応します |
| 📡 RSS モニタリング | 優先度ベースのスケジューリング(crawl.rss_enabled)による、オプトイン方式の RSS/Atom フィードのポーリングです |
| 🖥️ JS レンダリング | SPA/React ページ向けに Playwright(ヘッドレス Chromium)をオプションで利用できます |
| 📈 暗黙的フィードバック | LLM ネイティブな品質シグナル(取得/スキップ/引用)によりランキングを改善します |
| 🩺 診断 | infomesh doctor でヘルスチェックを実行し、infomesh bench でパフォーマンスを測定できます |
| 🔌 プラグインシステム | カスタムクローラー、ランカー、トークナイザー向けの、フックベースで拡張可能な API です |
| 🌐 ウェブダッシュボード | localhost:8080/dashboard にある、ブラウザーから利用できる 5 タブのダッシュボードです |
MCP 連携 — AI アシスタント向けの無料ウェブ検索
多くの商用検索 API は、クエリごとに課金するか、有料サブスクリプションを必要とします。 InfoMesh は、クエリごとの課金なしで 5 つの統合 MCP ツールを提供します。デフォルトではホスト型 API キーは不要ですが、運用者が設定した認証とリソース制限は引き続き適用されます。
| ツール | 説明 |
|---|---|
web_search(query, ...) | 統合検索 — P2P + ローカル、RAG、説明、回答の抽出。CJK を自動検出します |
fetch_page(url) | URL の抽出済みテキスト全体を取得します(キャッシュまたはライブ、最大 100KB) |
crawl_url(url, depth, force) | URL をクロールしてインデックスに追加します(1 時間あたり 60 回のレート制限) |
fact_check(claim, top_k) | インデックス化されたソースと照合して主張を検証します |
status() | ノードの状態:インデックスサイズ、ピア、クレジット、分析情報 |
従来のツール名(
search、search_local、network_statsなど)も、後方互換性のため引き続き利用できます。
VS Code/Copilot/Claude Desktop/Cursor での設定
この例は Claude Desktop と Cursor 向けです。VS Code/Copilot では、Connect to Your AI Assistant に示されている servers 形式が必要です。これらの基本パッケージの例ではローカルインデックスを使用します。P2P を有効にする方法についても同じセクションで説明しています。
{
"mcpServers": {
"infomesh": {
"command": "uvx",
"args": ["infomesh", "mcp"]
}
}
}
オプションのアドオン
# Vector search with ChromaDB + sentence-transformers
pip install 'infomesh[vector]'
# Local LLM summarization via Ollama
pip install 'infomesh[llm]'
# JavaScript rendering for SPA pages (Playwright)
pip install 'infomesh[browser]'
# Chinese/Japanese/Korean tokenization (jieba)
pip install 'infomesh[cjk]'
# Everything
pip install 'infomesh[all]'
これらのコマンドでインストールされるのは依存関係であり、すべての実行時前提条件ではありません。ベクトル検索、ローカル LLM、JS レンダリングも有効化/設定する必要があります。JS レンダリングには Playwright のブラウザーバイナリが必要で、ローカル要約には利用可能なモデル/ランタイムが必要です。
CLI コマンド
infomesh start # Start node (auto-prompts starter index download)
infomesh start --background # Headless mode (no dashboard)
infomesh start --role crawler # DMZ crawler-only node
infomesh search "query" # Search local index + peers
infomesh search --local "query" # Search local index only
infomesh crawl https://... # Crawl a URL
infomesh dashboard # Interactive TUI dashboard
infomesh doctor # System diagnostics (10 checks)
infomesh bench # Performance benchmarks
infomesh feedback stats # Implicit search quality signals
infomesh feedback top-urls # Highest-quality URLs by feedback
infomesh feeds import subs.opml # Import RSS/Atom feeds from OPML
infomesh index import --starter # Download community starter index
infomesh mcp # Start MCP server (stdio)
infomesh mcp --http --port 8081 # Start MCP server (HTTP)
🆕 v0.2.0 の新機能
CHANGELOG.md に記録されている v0.2.0 の機能マイルストーンでは、検索インテリジェンス、RAG のサポート、セキュリティ、可観測性、開発者エクスペリエンスにわたる 100 以上の機能をまとめています。この過去のマイルストーン表記は現在のパッケージバージョンではありません。このチェックアウトで宣言されているバージョンは 0.1.15 です。以下の主な機能にはオプション機能やライブラリユーティリティも含まれており、すべての実行経路で有効になっていることを保証するものではありません。
検索インテリジェンス
| 機能 | 説明 |
|---|---|
| 🧠 NLP クエリ処理 | ストップワードの除去(9 言語)、同義語の展開、自然言語の解析 |
| ✏️ もしかして | 検索結果がない場合に、編集距離を用いてスペルを修正 |
| 📊 検索ファセット | クエリごとのドメイン、言語、期間ファセットの件数 |
| 🎯 結果のクラスタリング | 結果をドメインごとにグループ化し、整理して表示 |
| 🔦 スニペットのハイライト | 検索クエリの語句を結果のスニペット内でハイライト表示 |
| 🧹 スマートな重複排除 | ジャッカード類似度に基づいて類似した重複項目を削除 |
| 🔍 検索の説明 | すべての結果についてスコアの内訳を明示 |
RAG と回答抽出
| 機能 | 説明 |
|---|---|
| 📚 RAG 出力 | LLM での利用に向けた、チャンク化され出典が付与されたコンテキストウィンドウ |
| 💡 回答抽出 | 信頼度スコアと出典 URL を含む直接的な回答 |
| ✅ ファクトチェック | インデックス化された複数のソースと照合して主張を検証 |
| 🏷️ エンティティ抽出 | 人物、組織、URL、メールアドレスを特定 |
| 🛡️ 有害性フィルタリング | 検索結果のコンテンツ安全性をスコアリング |
クローラーの強化
| 機能 | 説明 |
|---|---|
| 📄 PDF 抽出 | クロールした PDF ドキュメントからテキストを抽出 |
| 🏗️ 構造化データ | JSON-LD、OpenGraph、メタタグを解析 |
| 🌍 言語検出 | 文字体系と単語頻度に基づいて検出(9 言語) |
| 📡 RSS/Atom フィード | フィードを自動検出して解析 |
| 📝 コンテンツ差分 | クロールしたバージョン間の変更を検出 |
| 💻 コードブロック | <pre><code> を言語検出とともに抽出 |
| 📊 テーブル抽出 | HTML テーブルを構造化データ(CSV/dict)に変換 |
セキュリティと API
| 機能 | 説明 |
|---|---|
| 🔑 API キー管理 | キーの作成、検証、失効、ローテーション |
| 👥 ロールベースのアクセス制御 | 管理者/閲覧者/クローラーの権限マトリックス |
| 📋 監査ログ | SQLite を基盤とする監査ログユーティリティ。カバレッジは有効になっている呼び出し経路によって異なります |
| 🔒 Webhook 署名 | HMAC-SHA256 によるペイロード検証 |
| 📊 Prometheus メトリクス | 監視用の /metrics エンドポイント |
| 📖 OpenAPI 仕様 | /openapi-spec で OpenAPI 3.1 を自動生成 |
開発者エクスペリエンス
| 機能 | 説明 |
|---|---|
| 🐍 Python SDK | 同期/非同期の検索、クロール、候補提示に対応した InfoMeshClient |
| 🔌 プラグインシステム | ライフサイクルフックを使ってカスタムプラグインを登録 |
| 🦜 LangChain | InfoMeshRetriever との統合 |
| 🦙 LlamaIndex | InfoMeshReader との統合 |
| 🏗️ Haystack | InfoMeshDocumentStore との統合 |
| ⎈ Helm チャート | リソースを設定可能な Kubernetes デプロイ |
| 🐳 Docker Compose | ボリュームを使用する複数コンテナ構成 |
変更の全一覧については、CHANGELOG.md をご覧ください。
🏗️ アーキテクチャ
| レイヤー | 技術 | 理由 |
|---|---|---|
| 言語 | Python 3.12+ | モダンな非同期処理、型ヒント、match/case、StrEnum |
| P2P ネットワーク | libp2p (py-libp2p) | Kademlia DHT と Noise 暗号化を備えた、実績のある P2P スタック |
| DHT | Kademlia | XOR 距離によるルーティング。現在の py-libp2p バックエンドは、256 ビットの SHA-256 でルーティングキーを正規化します |
| クローリング | httpx + trafilatura | 非同期 HTTP と高精度なコンテンツ抽出を実現します |
| キーワード検索 | SQLite FTS5 | インストール不要の組み込み型で、BM25 をすぐに利用できます |
| ベクトル検索 | ChromaDB(任意) | all-MiniLM-L6-v2 によるセマンティック検索/埋め込み検索 |
| MCP サーバー | mcp-python-sdk | LLM のツール統合に使用する標準プロトコル |
| 管理 API | FastAPI | ローカルのヘルスチェック、ステータス、設定用エンドポイント |
| シリアライズ | msgpack | バイナリメッセージのエンコード。JSON と比べた速度とサイズはペイロードによって異なります |
| 圧縮 | zstandard | レベル調整可能。同種のドキュメントには辞書モードを利用できます |
| ダッシュボード | Textual | タブ、スパークライン、EQ ビジュアライゼーション、BGM を備えたリッチな TUI |
| ローカル LLM | ollama / llama.cpp | ノード上での要約(Qwen 2.5、Llama 3.x、Gemma 3) |
| ロギング | structlog | 構造化された、機械で解析可能なログ |
| パッケージング | uv | Python の依存関係、環境、ビルドの管理。高速化の度合いはワークロードによって異なります |
検索フロー(目標レイテンシ:約 1 秒)
🔒 セキュリティと信頼
InfoMesh はゼロトラストの前提に基づいて設計されており、すべてのピアが敵対的である可能性を想定しています。システムは複数層の防御を提供します。
コンテンツの完全性
| メカニズム | 説明 |
|---|---|
| コンテンツの証明 | 公開されたソース証明は、SHA-256(raw_response) + SHA-256(extracted_text) を署名IDに紐付けます。ローカルのみのクローリングでは公開は保証されません |
| マークルツリー | メンバーシップ検証を備えたインデックス全体の完全性証明により、誰でも任意のドキュメントが含まれているかを監査できます |
| ランダム監査 | ピアの可用性に応じて、およそ1時間ごとにレプリカ/ソースを確認します。レプリカの破損は信頼度の低下につながる可能性がありますが、ソースコンテンツの変更だけでは結論を出せません |
| P2P クレジット検証 | 署名キーを使って記録されたエントリーにはマークル証明が付与されます。署名のないエントリーは署名付き証明から除外されます |
ネットワークセキュリティ
| 脅威 | 防御策 |
|---|---|
| Sybil 攻撃 | ローカルでの Proof-of-Work 生成(所要時間はハードウェアに依存)と、/24 のアドミッションバケットあたりデフォルト最大3ノード。大量のIDに対する保証ではありません |
| エクリプス攻撃 | ブートストラップによる検出 + サブネット制限 + ピアの更新。独立して到達可能なピアを3つ以上確保することはデプロイ時の目標であり、現在同梱されているデフォルト設定ではありません |
| DHT ポイズニング | キーワードごとの公開レート制限(ノードあたり10回/時)+ 署名付き公開 + コンテンツハッシュの検証 |
| クレジットファーミング | 新規ノードへの24時間の保留期間 + 統計的な異常検出 + 生の HTTP ハッシュ監査 |
| 中間者攻撃 | すべての P2P トランスポートを libp2p Noise プロトコルで暗号化します |
キー管理
~/.infomesh/keys/に保存される Ed25519 キーペア- キーのローテーション:
infomesh keys rotate— アプリケーション署名キーをローテーションし、二重署名された失効レコードをローカルに保存します。別個の libp2p トランスポートキーはローテーションしません - ピア ID:libp2p トランスポートでは、独自の公開キーから導出されたピア ID を使用します。アプリケーション署名キーの識別子は別個の ID です
現在の伝播に関する制限: ローテーションでは .bin レコードが書き込まれますが、起動時のパブリッシャーは .json ファイルをスキャンします。この連携上の不整合が修正されるまでは、このコマンドによる DHT 失効情報の自動伝播に依存しないでください。
統合トラストスコア
すべてのピアには、継続的に更新されるトラストスコアがあります。
Trust = 0.15 × uptime + 0.25 × contribution + 0.40 × audit_pass_rate + 0.20 × summary_quality
| Tier | Score | Treatment |
|---|---|---|
| 信頼済み | ≥ 0.8 | 最高の信頼度。検索コストは別個の貢献ティアに従います |
| 通常 | 0.5 – 0.8 | 標準的な運用 |
| 要注意 | 0.3 – 0.5 | 信頼度が低いため、監査証拠と隔離状態を確認してください |
| 信頼できない | < 0.3 | 監査に3回連続で失敗するとネットワークから隔離 |
🏢 エンタープライズ対応
InfoMesh には本番環境を想定した機能が含まれていますが、現在のパッケージは Alpha に分類されています。本番環境で使用する前に、環境とランタイム適合性の制限を確認してください。
分割デプロイメント(DMZ/プライベートネットワーク)
エンタープライズ環境では、ネットワークゾーンをまたいでクローラーとインデクサーを分離できます。
┌─────────── DMZ ──────────────┐ ┌──────── Private Network ────────┐
│ │ │ │
│ infomesh start --role crawler ───────▶ infomesh start --role search │
│ (crawls the public web) │ P2P │ (indexes + serves queries) │
│ │ auth │ │
│ infomesh start --role crawler ───────▶ infomesh start --role search │
│ │ │ │
└──────────────────────────────┘ └─────────────────────────────────┘
3つのノードロール:
| ロール | コンポーネント | ユースケース |
|---|---|---|
full(デフォルト) | クローラー + インデクサー + 検索 | 単一ノードまたはシンプルなデプロイメント |
crawler | クローラーのみ。ページをインデクサーに転送 | インターネットにアクセスできる DMZ ノード |
search | インデクサー + 検索のみ。送信を受け付け | インターネット接続が不要なプライベートネットワーク |
設定例(~/.infomesh/config.toml):
# DMZ Crawler node
[node]
role = "crawler"
listen_address = "0.0.0.0"
[network]
index_submit_peers = ["/ip4/10.0.0.1/tcp/4001/p2p/<INDEXER_1_PEER_ID>", "/ip4/10.0.0.2/tcp/4001/p2p/<INDEXER_2_PEER_ID>"]
# Private Search/Index node
[node]
role = "search"
listen_address = "10.0.0.1"
[network]
peer_acl = ["<CRAWLER_1_PEER_ID>", "<CRAWLER_2_PEER_ID>"]
各プレースホルダーを、該当するノードの実際の libp2p ピア ID に置き換えてください。インデックス送信には、完全なピアマルチアドレスと認証済みの v2 ACK が必要です。IP/TCP アドレスのみの指定や、レガシー HTTP の宛先はサポートされていません。
CLI の使用方法:
# Start as DMZ crawler
infomesh start --role crawler --seeds tech-docs
# Start as private indexer
infomesh start --role search --no-dashboard
運用
- リソースガバナー — CPU/メモリのしきい値、I/O 優先度、帯域幅を制御します。4つのプリセットプロファイル(
minimal、balanced、contributor、dedicated)を利用できます。システム負荷のサンプル値とプロセスの RSS に応じて動的にスロットリングしますが、厳密なメモリ上限ではなく、OS の OOM キラーによる終了を防ぐ保証もありません - 長時間稼働時の回復性 —
StartupLockと PID の cmdline 検証により、同じデータディレクトリでノードプロセスが重複して起動するのを防ぎます。infomesh stopは SIGTERM を送信し、PID ファイルを削除する前に正常なシャットダウンを待機します - ランタイムハートビート — 長時間稼働する
_serveワーカーは、10秒ごとにruntime_status.jsonを書き込みます。管理 API は/health?detail=1、/status、/metricsを通じて、最新のハートビート、劣化レベル、スロットリング係数、プロセスメモリを公開します - 起動前チェック — 起動前にディスク容量とネットワーク接続を確認します
- 負荷ガード — QPM(1分あたりのクエリ数)と同時実行数を制限し、ノードの過負荷を防ぎます
- WAL モードの SQLite — クロール中の書き込みをロックせず、ダッシュボードの更新中も安全に同時読み取りできます
- 構造化ログ — すべてのライブラリコードで、機械解析可能な出力を行う
structlogを使用します - Docker サポート — 永続データ用のボリュームマウントを備えた
Dockerfileを提供します。本番環境への対応には、デプロイメントごとの検証が引き続き必要です
設定可能
- TOML 設定(
~/.infomesh/config.toml)。環境変数による上書き(INFOMESH_CRAWL_MAX_CONCURRENT=20)にも対応しています。 - 値の検証 — 一部の設定値は、構造化された警告とともに検証または上限・下限が設定されます。検証はフィールドごとに行われ、すべての値が対象となるわけではありません。
- ダッシュボード設定 — 一般的な設定は TUI の Settings タブから編集できます。高度な項目の変更には、引き続き設定ファイルまたは CLI の操作が必要です。
- エネルギーを考慮したスケジューリング — LLM を多用するタスクは、設定されたオフピーク時間帯に優先的にスケジュールされます(クレジット倍率は 1.5 倍)。
コンプライアンス
- robots.txt を厳格に遵守し、すべてのクロール指示に従います。
- DMCA に基づく削除 — 承認済みの署名付き通知により、除外設定と転送義務が保持されます。到達不能なピアへの 24 時間以内の配信は保証されません。
- GDPR — 個人データの分散型削除記録に対応し、忘れられる権利をサポートします。
- コンテンツの帰属表示 — AI が生成した要約には、
content_hashとソース URL がラベル付けされます。 - ペイウォール検出 —
fetch_page()はペイウォールで保護されたコンテンツを検出し、その扱いに従います。 - 利用規約 — クローラーの動作とデータの取り扱いを説明した明確な利用規約を用意しています。
規模
- Kademlia DHT ルーティングにより、数千ノードに対応できるよう設計されています。
- 3 層の重複排除により、インデックスの肥大化を防ぎます(URL の正規化 → SHA-256 による完全一致 → SimHash による近似重複)。
- ノード間で効率的にインデックスを共有するため、スナップショットを zstd で圧縮します。
- 大規模なインデックスの初期構築に、Common Crawl のデータをインポートできます。
💰 クレジットの獲得
クレジットは、ネットワークの健全性を維持するインセンティブの仕組みです。クレジットはノードごとにローカルで記録され、ブロックチェーンも中央台帳も使用しません。
クレジットの仕組み
Credits Earned = Σ (Weight × Quantity × TimeMultiplier)
獲得アクション
| アクション | 重み | カテゴリ | 獲得方法 |
|---|---|---|---|
| クロール | 1.0 /ページ | 基本 | InfoMesh を実行するだけで、シード URL から自動的にクロールします |
| クエリ処理 | 0.5 /クエリ | 基本 | 他のピアが検索クエリをあなたのノード経由でルーティングします |
| ドキュメントのホスティング | 0.1 /時間 | 基本 | パッシブ — インデックス化されたドキュメントを提供してネットワークに貢献します |
| ネットワーク稼働時間 | 0.5 /時間 | 基本 | ノードを稼働させておくだけです |
| LLM による要約 | 1.5 /ページ | LLM | ローカル LLM を有効にすると、クロールしたコンテンツを自動で要約します |
| ピア向け LLM | 2.0 /リクエスト | LLM | 他のノードからの要約リクエストに対応します |
| PR — ドキュメント/誤字 | 1,000 /マージ済み PR | ボーナス | 誤字を修正するか、ドキュメントを改善します |
| PR — バグ修正 | 10,000 /マージ済み PR | ボーナス | テストを追加してバグを修正します |
| PR — 機能 | 50,000 /マージ済み PR | ボーナス | 新機能を実装します |
| PR — 大規模な変更 | 100,000 /マージ済み PR | ボーナス | コアアーキテクチャまたは主要機能に関する変更です |
PR の行に記載された値は、台帳上のアクションの重みであり、GitHub から自動的に報酬が得られる証拠ではありません。マージ済み PR によってこれらのクレジットを獲得できるのは、対応する貢献が台帳に記録された場合のみです。
時間帯による倍率
- 基本アクション:常に
1.0× - オフピーク時間帯の LLM アクション(設定可能、デフォルトは 23:00~07:00):
1.5× - オフピークのスケジューリングはエネルギーを考慮した仕組みです。ネットワークは、現在オフピークのノードにバッチ LLM 処理を優先的にルーティングします。
検索コスト
| ティア | 貢献スコア | 検索コスト | 実効比率 |
|---|---|---|---|
| ティア 1 | < 100 | 0.100 / クエリ | 10 回のクロール → 100 回の検索 |
| ティア 2 | 100 – 999 | 0.050 / クエリ | 10 回のクロール → 200 回の検索 |
| ティア 3 | ≥ 1,000 | 0.033 / クエリ | 10 回のクロール → 約 303 回の検索 |
公平性の保証
- 非 LLM による参加:1 時間あたり 10 クレジットのクロールで、通常の Tier 1 レートでは 1 時間あたり 100 件の検索(債務レートでは 50 件)をカバーできます。これはクレジットの計算であり、処理量を保証するものではありません
- LLM の貢献スコアには上限があります:LLM のアクションがティア判定に使われる有効な貢献スコアに占める割合は最大 60%です。これは台帳上の生の獲得額や残高には上限を設けません
- 稼働時間の報酬:ハードウェアに関係なく、ノードをオンラインに保つだけで 1 時間あたり 0.5 クレジットを獲得できます
- クレジットがなくなっても検索はブロックされません:クレジットがゼロでも、以下のルールに従って台帳上は検索できます。リソース保護機能によってリクエストが制限される場合はあります
💳 0 ドルの債務 — クレジットカードも現金も不要
クレジットがなくなるとどうなりますか?検索を続けられます。
InfoMesh は利用を停止しません。ペイウォールも、「クレジットカードを入力してください」という案内も、アップグレードボタンもありません。代わりに、シンプルで利用者にやさしい回復方法があります。
| フェーズ | 期間 | 内容 |
|---|---|---|
| ✅ 通常 | 残高が 0 より大きい間 | 通常のコストで検索できます。これまでどおりです。 |
| ⏳ 猶予期間 | 残高が 0 になってから最初の 72 時間 | これまでとまったく同じように検索できます。残高はマイナスになりますが、ペナルティはありません。焦らずにご利用ください。 |
| 📉 債務モード | 72 時間経過後 | 検索は続けられますが、コストは 2 倍になります。債務は蓄積しますが、回復を促すものであり、利用をブロックすることはありません。 |
| 🔄 回復 | いつでも | ノードを実行するだけです。クロール、ホスティング、貢献によってクレジットを獲得できます。残高が再びプラスになれば、通常の状態に戻ります。 |
Credits ran out
│
▼
┌─────────────────────────────────────┐
│ 🟢 Grace Period (72 hours) │
│ Search works normally. │
│ Balance goes negative — no penalty.│
└──────────────┬──────────────────────┘
│ 72h passed, still negative?
▼
┌─────────────────────────────────────┐
│ 🟡 Debt Mode │
│ Search continues at 2× cost. │
│ Debt accumulates. │
└──────────────┬──────────────────────┘
│ Earn credits → balance > 0
▼
┌─────────────────────────────────────┐
│ 🟢 Back to Normal │
│ Debt cleared. Grace reset. │
│ Full speed ahead. │
└─────────────────────────────────────┘
重要な原則: InfoMesh の債務は、金額ではなくクレジットで計算されます。回復する方法は、支払うことではなく、貢献することです。ノードを実行し、ページをクロールし、ネットワークを維持すれば、債務は自然に解消されます。
クレジットカード不要。現金不要。サブスクリプション不要。「試用期間が終了しました」というポップアップもありません。 ノードを実行するだけで、元どおりです。
🤝 貢献
コード、ドキュメント、バグ報告、機能のアイデア、シード URL リストなど、あらゆる貢献を歓迎します。
はじめに
# Clone and install
git clone https://github.com/dotnetpower/infomesh.git
cd infomesh
uv sync --dev --locked
# Run the supported test suite
uv run pytest tests/ --ignore=tests/test_vector.py -x -q --tb=short
# Run linter + formatter
uv run ruff check infomesh/ tests/
uv run ruff format --check .
# Run type checker
uv run mypy infomesh/ --ignore-missing-imports
貢献の方法
| 貢献内容 | 難易度 | 影響 |
|---|---|---|
| 🐛 バグを報告する | 簡単 | 高 — すべての利用者に役立ちます |
| 📝 ドキュメントや翻訳を改善する | 簡単 | 高 — 参加へのハードルを下げます |
| 🌱 シード URL を追加する | 簡単 | 中 — クロール範囲を広げます |
| 🧪 テストを書く | 中 | 高 — 分散検索、クロール、ダッシュボードのリグレッションを検出できるようにします |
| 🔧 問題を修正する | 中 | 直接的な影響があります |
| ✨ 機能を実装する | 難しい | プロジェクトを前進させます |
| 🔐 セキュリティ監査 | 難しい | 信頼性を確保するうえで不可欠です |
コードスタイル
- フォーマッター:
ruff format(black 互換、1 行 88 文字) - リンター:
E、F、I、UP、B、SIMルールを適用するruff - 型ヒント:すべての公開関数に必須です
- Docstring:すべての公開クラスと関数に必須です
- テスト:すべての PR に、新機能のテストを含めてください
- ライブラリーコードでは
print()を使わず、structlogを使用してください
プルリクエストの手順
- リポジトリーをフォークします
- 機能ブランチを作成します:
git checkout -b feat/my-feature - コードとテストを書きます
uv run ruff check infomesh/ tests/、uv run ruff format --check .、uv run mypy infomesh/ --ignore-missing-imports、およびuv run pytest tests/ --ignore=tests/test_vector.py -x -q --tb=shortを実行します- PR を送信します — マージされた貢献には、台帳上で 1,000 – 100,000 クレジットの報酬ウェイトが設定されます。クレジットの付与には貢献の記録が必要であり、PR を作成またはマージしただけでは付与されません。
詳しい手順については、CONTRIBUTING.md をご覧ください。
📖 ドキュメント
詳細なドキュメントは、docs/ ディレクトリにあります。
| ドキュメント | 説明 |
|---|---|
| 概要 | プロジェクトのビジョン、原則、ミッション |
| アーキテクチャ | システム設計、データフロー、コンポーネント間の連携 |
| クレジットシステム | インセンティブの仕組みと公平性の詳細な分析 |
| 技術スタック | 技術選定とその理由 |
| 法務 | robots.txt、DMCA、GDPR、コンプライアンス |
| 信頼性と完全性 | セキュリティモデルと脅威分析 |
| セキュリティ監査 | 脆弱性分析とエンタープライズ向けのセキュリティ強化 |
| コンソールダッシュボード | TUI ダッシュボード、タブ、ウィジェット、ショートカット |
| MCP 統合 | MCP サーバーのセットアップ、IDE の設定ガイド |
| 公開 | PyPI パッケージング、CI/CD、リリースプロセス |
📌 ドキュメントは**韓国語 (한국어)**でも利用できます。
📊 プロジェクト統計
2026-09-20 時点の作業ツリーのスナップショットです。ファイル数と行数には、infomesh/ および tests/ 配下の Python ファイルが含まれます。ソースモジュールにはパッケージの初期化ファイルも含まれます。以下のテスト結果は Python 3.13 で取得したもので、オプションのベクトルスイートを除外し、オプトインのライブ LLM チェックをスキップしています。
| 指標 | 値 |
|---|---|
| ソースモジュール | Python ファイル 169 個 |
| テストファイル | test_*.py ファイル 91 個 |
| ソース行数 | 51,404 |
| テスト行数 | 28,478 |
| テスト合格数 | 2,183 件合格、1 件スキップ(--ignore=tests/test_vector.py) |
| MCP ツール | 統合されたツール 5 個(従来の名称にも対応) |
| テストカバレッジ | 回帰テストのカバレッジ。この実行では、コードまたは実行時パスのカバレッジが 100%であることを確認していません |
| 開発フェーズ | 過去のマイルストーン 10 件(Phase 0 → 6)。すべての実行時適合性を保証するものではありません |
| Python バージョン | 3.12+ |
| ライセンス | MIT |
🗺️ ロードマップ
この表は過去に完了したコンポーネントのマイルストーンを記録したものであり、すべての実行時統合やデプロイ要件の完了を保証するものではありません。現在はコミュニティの拡大と本番環境向けの強化に注力しています。根拠と運用上の制限については、実行時適合性の記録をご覧ください。
| フェーズ | 主な取り組み | 状態 |
|---|---|---|
| 0 | MVP — 単一ノードのクロール + インデックス + MCP + CLI | ✅ 完了 |
| 1 | インデックス共有 — スナップショット、Common Crawl、ベクトル検索、SimHash | ✅ 完了 |
| 2 | P2P ネットワーク — libp2p、DHT、分散クロールとインデックス、Sybil/Eclipse 防御 | ✅ 完了 |
| 3 | 品質 + インセンティブ — ランキング、クレジット、信頼性、アテステーション、監査、LLM | ✅ 完了 |
| 4 | 本番環境 — リンクグラフ、LLM による再ランキング、アトリビューション、法令遵守 | ✅ 完了 |
| 5A | コアの安定性 — リソースガバナー、自動再クロール、クエリキャッシュ、負荷ガード | ✅ 完了 |
| 5B | 検索品質 — レイテンシを考慮したルーティング、Merkle Tree による完全性検証 | ✅ 完了 |
| 5C | リリース準備 — Docker、キーのローテーション、mDNS、LICENSE、CONTRIBUTING | ✅ 完了 |
| 5D | 仕上げ — LLM の評判、タイムゾーンの検証、ダッシュボード設定、P2P クレジット検証 | ✅ 完了 |
| 6 | 検索インテリジェンス、RAG、セキュリティ、オブザーバビリティ、SDK、統合、DX | ✅ 完了 |
次の予定
- 🌍 パブリックブートストラップノード — 複数の地域にコミュニティ管理のシードノードを拡大
現在の設定:
bootstrap/nodes.jsonには Azure East US のピアが 1 つ含まれています。P2P を有効にしたノードは自動的にブートストラップ検出を試みます。このリストは稼働状況を保証するものではなく、ファイアウォールや NAT の設定が必要な場合があります。 - 🎭 JS レンダリング — JS を多用するサイト向けの Playwright ベースの SPA クロール
- 📱 ウェブダッシュボード — TUI に加えて利用できる、任意のブラウザー UI
- 🔍 セマンティック検索の融合 — RRF による BM25 + ベクトルのハイブリッドランキング
- 🌐 多言語ステミング — 言語に応じたトークナイズとステミング
⚖️ 法務
- robots.txt:厳格に適用されます。クロールを禁止しているサイトはクロールされません。
- 著作権:全文はキャッシュとしてのみ保存されます。検索結果には、出典を明記したスニペットが表示されます。
- DMCA:承認済みの署名付き通知により、除外措置とピアリレーの処理が継続されます。接続できないピアへの24時間以内の配信は保証できません。
- GDPR:削除記録は分散して保存されます。ノードは個人データを含むページを除外できます。
- AI による要約:AI 生成であることを明記し、
content_hashを介して出典にリンクします。元の URL は常に表示されます。 - 利用規約:規約の全文は TERMS_OF_USE.md をご覧ください。
🙏 謝辞
InfoMesh は、優れたオープンソースプロジェクトの成果の上に成り立っています。
httpx • trafilatura • libp2p • SQLite • ChromaDB • Textual • FastAPI • mcp-python-sdk • uv • structlog • zstandard
MIT License — Copyright 2026 InfoMesh Contributors
InfoMesh が役に立ったら、リポジトリに ⭐ を付けていただけると幸いです。このプロジェクトを多くの方に知ってもらう助けになります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。