Haypile について
Haypileは、個人やエージェント向けのローカル文書インデックス・検索ツールで、単一バイナリとして配布されます。セマンティック検索とキーワード検索を組み合わせ、文書を端末内に保ちながら、ファイル名とページ番号付きの抜粋を返します。
主な機能
- 01監視フォルダーの文書インデックス化
- 02セマンティック検索とキーワード検索
- 03ファイル名とページ番号の引用
- 04CLI、REST、ローカルWeb UI
- 05検索とソース一覧のMCPツール
活用シーン
- 01ローカル契約書から条項を探す
- 02引用付きの抜粋をエージェントに渡す
- 03更新されるフォルダーを継続的に検索
MCP 対応
HaypileはlocalhostでStreamable HTTPまたはstdioによるMCPサーバーを提供します。引用付きのハイブリッド検索を行う`search_documents`と、インデックス済みソースを列挙する`list_sources`を公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Haypile
あなたとエージェントのための、プライベートなドキュメント検索。 フォルダーを監視してすべてのドキュメントをインデックス化し、ファイルとページの引用付きで適切な箇所を MCP 経由でエージェントに渡す、1つのバイナリです。データがマシンの外に出ることはありません。
ファイルの中から情報を探すのは、干し草の山から針を探すようなものだと、誰もが言います。Haypile は、自分で針を見つける干し草の山です。

brew install BenyD/tap/hay
hay add ~/Documents
claude mcp add --transport http haypile http://localhost:11500/mcp
セットアップはこれだけです。これで Claude Code(Cursor など、MCP に対応したものなら何でも)は、インデックス化したすべての情報を検索できます。search_documents は引用付きの関連箇所をランキング順に返し、エージェントは推測する代わりに、それらをもとに回答します。
スタンドアロンの CLI としても使えます。
hay search "termination clause"
hay ask "what did the Meridian contract say about termination?"
検索では、単語だけでなく意味を理解します。「契約の解除」と検索すると、契約解除条項が見つかります。正確な識別子は、引き続き完全一致します。各結果には、ソースファイルとページが引用されます。
インストール
brew install BenyD/tap/hay
または、リリースからバイナリを入手するか、インストールスクリプトを実行してください。
curl -fsSL haypile.sh | sh
Windows では、PowerShell で次を実行してください。
irm https://haypile.sh/install.ps1 | iex
約 56MB の単一バイナリに、埋め込みモデルが含まれています。Python、Docker、ベクトルデータベース、モデルのダウンロード、ネットワークは不要です。テキストドキュメントは完全にオフラインでインデックス化できます。スキャンした PDF の OCR には、ローカルのビジョンモデルが必要です(hay llm setup)。
背景
エージェントは、指定されたファイルなら何でも開けます。問題は、適切なファイルを見つけることです。grep が一致させるのは単語であって意味ではありません。そのため、契約解除条項について尋ねても、契約書で使われている単語が質問に含まれていなければ見つかりません。1つの箇所を見つけるためにドキュメント全体を読むと、その作業に必要なコンテキストウィンドウを消費します。クラウドのドキュメントツールなら、すべてのデータを他人のコンピューターにアップロードしてこの問題を解決できます。また、セルフホスト型の RAG スタックなら、面倒を見る必要のある Python 環境、Docker、ベクトルデータベースで解決できます。
Haypile は、そのどちらでもない選択肢です。1つのバイナリをフォルダーに向けるだけで完了です。
- エージェント対応。
localhost:11500で MCP と REST を利用できます。search_documentsにより、Claude Code、Cursor、独自のスクリプトから、ドキュメント内の引用付き箇所を取得できます。 - ハイブリッド検索。 セマンティック検索とキーワード検索を組み合わせます。言い換えは意味で一致し、事件番号は完全一致します。
- 常に引用付き。 すべての結果と回答から、ソースファイルとページを確認できます。
- 常に最新。 フォルダーを監視します。ファイルを保存すると、数秒で検索可能になります。
- 検証可能なプライバシー。 詳細は以下をご覧ください。
信頼に関する約束
以下の内容はコードとともにバージョン管理されており、ひそかに変更されることはありません。
- オープン版と有料版の境界を、最初に明示します。 永続的にオープン(AGPL-3.0):インデックス化、検索、質問、REST API、MCP、CLI、そして今後追加予定のシングルユーザー向け Web UI。シングルユーザー向け製品全体を利用でき、一部機能を利用できないようにすることはありません。有料版(後日提供):認証、ロール、監査ログ、共有インデックス、ホスト型バージョンなどのチーム機能。
- 「外部接続ゼロ」は主張ではなく、検証可能な機能です。
hay statusで外部への接続を報告します。目標は 0 です。テレメトリーはありません。これが変更される場合は、オプトイン方式とし、明確に文書化したうえで、デフォルトでは無効にします。 - ネットワーク動作をひそかに行うことはありません。 ローカルファーストのツールが、動作を続けるためにホームへ通信することは決してありません。
- すべての開発は、この公開リポジトリで行います。 非公開リポジトリに関する不意の変更はありません。
仕組み
folders -> watcher -> extract (pdf/docx/pptx/md/txt/html/mbox) -> chunk -> embed
|
you <- citations <- RRF merge <- FTS5 + vector search <- SQLite (one file)
すべてのデータは、ディスク上の単一の SQLite データベースに保存されます。検索は完全に自己完結しており、埋め込みモデルはバイナリに同梱されています。回答(hay ask)は、すでに実行している OpenAI 互換のローカルサーバー(Ollama、LM Studio、llama.cpp、Jan)が生成します。Haypile 自体に LLM は同梱されておらず、ネットワーク呼び出しも行いません。
フォルダーを適切にセットアップする:hay init
作業するフォルダー(案件フォルダー、プロジェクト、論文アーカイブなど)では、hay init を実行すると、フォルダーごとの設定を書き込み、必要なものをまとめてセットアップします。
cd ~/cases/acme-litigation
hay init # three short questions, all with sensible defaults
.haypile.yml(タグと除外パターン)を作成してフォルダーをインデックス化し、必要に応じて .mcp.json を書き込んで、Claude Code と Cursor からこれらのドキュメントを検索できるようにします。また、ローカル LLM がまだない場合は、hay llm setup を提案します。hay init --yes を実行すると、対話なしで処理が進みます。
.haypile.yml はいつでも手動で編集できます。デーモンが変更を検知し、数秒以内にインデックスを再同期します。
tag: acme-litigation
exclude:
- drafts/**
- "*.bak"
質問する(LLM はご自身で用意)
hay ask は関連性の高い文章を取得し、ローカル LLM に引用付きで回答させます。
hay ask "what did the Meridian contract say about termination?"
生成には、すでに実行している OpenAI 互換サーバー(Ollama、LM Studio、llama.cpp、Jan)を使用できます。通常のポートで自動検出するほか、--endpoint と --model で明示的に指定できます。サーバーがない場合、hay ask はその旨を説明し、関連性の高い文章を表示します。検索に LLM は必要ありません。
回答にクラウドモデルを使いたいですか?ご自身のキーをご用意ください。
hay ask --endpoint https://api.example.com/v1 --key sk-... "what changed in the lease?"
境界は明確です。ドキュメントは常にローカルでインデックス化されます。利用を選択した場合、その質問で取得された文章のみが、選択したエンドポイントにご自身のキーとともに送信されます(HAYPILE_LLM_API_KEY も使用できます)。localhost 以外への平文 http 接続では、キーは拒否されます。
ローカル LLM がまだありませんか?ガイド付きのコマンドを 1 つ実行すれば準備できます。
hay llm setup # installs and starts Ollama, pulls a model, asks before every download
Claude Code、Cursor、または独自のツールから使用する
デーモンは localhost:11500 で MCP(Streamable HTTP)と REST を公開します。
# Claude Code
claude mcp add --transport http haypile http://localhost:11500/mcp
# Anything that prefers launching a process (stdio transport)
# command: hay args: ["mcp-stdio"]
# Plain REST
curl -X POST localhost:11500/api/query -d '{"query": "termination clause"}'
公開されるツール:search_documents(引用付きハイブリッド検索)と list_sources。デーモンは hay add の実行時に自動的に起動し、localhost でのみリッスンします。
コマンド
hay init [folder] per-folder setup: config, index, editor wiring
hay add <path> index a folder or file and watch it for changes
hay search "<query>" hybrid retrieval, results with citations
hay ask "<question>" answer from your documents, with cited sources
hay list indexed folders and document counts
hay remove <path> un-index a folder
hay status daemon state, model info, outbound connections (target: 0)
hay web open the local web UI in your browser
hay serve run the daemon (REST API + MCP on localhost:11500)
hay llm setup guided local LLM setup for hay ask
ロードマップ
| バージョン | 対象範囲 |
|---|---|
| v0.x(現在) | CLI、REST API、MCP サーバー、hay web ローカル UI。Markdown、テキスト、PDF、docx、pptx、HTML、mbox メール。ローカルのビジョン LLM を使ったスキャン PDF の OCR。 |
| v1.x | バンドルされた OCR(LLM 不要)、Windows インストーラーの仕上げ |
| v2 | オプションで利用できる大規模な埋め込みモデル、非常に大規模なコーパス向け ANN インデックス |
| Pro | オフィス向けのチーム機能:認証、ロール、監査ログ、共有インデックス(有料) |
ロードマップ、意思決定、信頼に関する取り組みの詳細:docs/ROADMAP.md。
開発
go build ./cmd/hay # build the binary
go test ./... -race # run tests (green before any merge)
セマンティック検索では、リリースビルドの場合、バイナリに同梱された埋め込みモデルを使用します。開発ビルドでは、重みを git に含めないよう、代わりにディスクから読み込みます。
./hack/fetch-model.sh # one-time download (also quantizes)
go build -tags bundled ./cmd/hay # release-style: model in the binary
HAYPILE_MODEL_PATH=internal/embed/bundled/model.safetensors ./hay # dev
モデルがなくても、キーワードのみのモードですべての機能を使用できます。
ウェブ UI(hay web)は、小規模な Vite + Preact アプリとして webui/ にあります。ビルド済みの出力は internal/webui/dist にコミットされ、バイナリに埋め込まれるため、go build だけで常に最新の UI が同梱されます。UI を変更するには、次のコマンドを実行してください。
cd webui && npm install
npm run dev # live dev server, proxies /api to a running daemon
npm run build # writes internal/webui/dist (commit the result)
検索品質は感覚ではなく、測定によって評価します。eval/ には期待される結果を含むクエリセットがあり、検索に影響する変更のたびに実行されます。
貢献
貢献を歓迎します。まず CONTRIBUTING.md をお読みください。開発ワークフロー、プライバシー契約(外部への通信ゼロ、モデルの同梱、localhost のみ)を維持するルール、貢献のライセンス、CI で適用される DCO への署名(git commit -s)について説明しています。
セキュリティ
脆弱性を見つけましたか?公開 issue ではなく、非公開で報告してください。報告手順と対象範囲については SECURITY.md をご覧ください。
ライセンス
AGPL-3.0。個人は永久に無料で利用できます。AGPL により、実際のすべてのユーザーが無料で利用できる一方、Haypile をサービスとして提供する場合は変更内容をオープンソースにする必要があります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。