OpenLore
公式エージェントネイティブなナレッジサーバー。SSHおよびMCPを介してAIエージェントにドキュメントを提供し、アイデンティティスコープのビュー、管理された書き込み、構造化メタデータを備えています。単一バイナリ、設定不要。
OpenLore MCPで何ができますか?
-
共有知識ベースを提供 — OpenLoreをMarkdownフォルダに向け、
cat、grep、findなどの使い慣れたツールを使って、MCPやSSH経由で任意のエージェントが同じファイルを読めるようにします。 -
IDごとにアクセスを制限 — 各人またはエージェントに、特定のドキュメントセットへの読み取り専用、公開、または読み書きアクセスを付与し、プライベートホームディレクトリとパスエイリアスを設定します。
-
管理された受信トレイに公開 — エージェントが既存のコンテンツを編集できないようにしつつ、新しいドキュメントを受信トレイに追加できるようにし、アトミックで競合を認識した書き込みを実現します。
-
構造化メタデータをクエリ —
lore metaでフロントマターをNDJSONとして検査し、jqでフィルタリングして、メタデータに基づいてドキュメントを検索します。 -
ドキュメントをポータブルバイナリに埋め込む — ドキュメントを埋め込んだ自己完結型の実行可能ファイルを構築し、
/docsで読み取り専用として提供して、任意のチームに配布します。
ドキュメント
OpenLoreをMarkdownフォルダーに向けるだけで、Claude Code、Codex、Cursor、CIジョブなど、チームのすべてのエージェントが同じファイルを読み取ります。エージェントは、cat、grep、findなど、すでに知っているツールを使用します。誰が何を閲覧・変更できるかは、あなたが決定します。
ワンクリックでホスト型サーバーを利用できます。OpenLoreをRenderにデプロイを参照してください。
クイックスタート
フォルダーをインストールして提供します:
brew install --cask aakarim/tap/lore
openlore ./docs
SSHはポート2222で実行されます。WebビューとMCPはポート8080を共有します。./docsの内容は/に表示されます。
エージェントを接続します:
# Claude Code
claude mcp add --transport http openlore http://localhost:8080/mcp
# Codex
codex mcp add openlore --url http://localhost:8080/mcp
# Anything with a shell
ssh -p 2222 localhost "grep -r 'retry' /"
エージェントに使用タイミングを指示します:
ssh -p 2222 localhost agents >> AGENTS.md
または、エージェントにセットアップ全体を任せます:
ssh openlore.sh teach | claude
Homebrewをお使いでない場合は、LinuxおよびWindows向けのクイックスタートを参照してください。
なぜMarkdownをリポジトリに置くだけではだめなのか?
1つのリポジトリで1つのエージェントだけを使う場合は、それで問題ありません。
OpenLoreは、複数のエージェント、リポジトリ、または人が同じ知識を必要とし、誰が何を読み取り、書き込み、公開できるかを指定する必要がある場合に使用します。ファイルを一度更新すると、すべてのエージェントが次回の読み取り時に新しいバージョンを確認できます。
ベクターデータベース、取り込みパイプライン、SDKはありません。知識は通常のMarkdownのままです。
ガイド
- OpenLoreとは
- Claude Code
- Codex
- Cursor
- OpenCode
- SSH経由の任意のエージェント
- エージェントにインボックスへの公開を許可する
- Renderへのデプロイ
- すべてのドキュメント
機能
- エージェントネイティブな取得 — エージェントは、独自の取得APIを学習する代わりに、すでに理解しているシェルツールと構成パターンを使用します。
- 1つの知識サーフェス、複数のトランスポート — 同じ仮想ファイルシステムを、SSH、SFTP/SSHFS(VS Codeでの直接閲覧・編集を含む)、MCP、および人間に優しいWebビューで提供します。
- ライブで管理された知識 — コンテンツを読み取り専用に保ち、スコープ付き公開を許可するか、ドキュメントセットごとに完全な書き込みを有効にします。書き込みはアトミックで、競合を認識し、コミット前に検証されます。
- IDスコープ付きビュー — 各人またはエージェントに必要なドキュメントセットのみを、ロールベースの
ro、publish、rw権限、パスエイリアス、プライベートホームディレクトリとともに提供します。 - 構造的に安全 — シェルはメモリ内のGoインタープリターであり、実際のオペレーティングシステムのシェルではありません。通常のセッションでは、シェルエスケープ、任意のプロセス実行、または周辺ネットワークアクセスはありません。
- ポータブルな知識バンドル — ドキュメントを自己完結型バイナリに埋め込み、GitHub Actionでクロスプラットフォームバンドルを構築するか、デスクトップMCP拡張機能としてパッケージ化します。
- 新しいクエリ言語なしの構造化知識 —
lore metaでフロントマターをNDJSONとして検査し、jqでクエリを実行し、GoogleのOpen Knowledge Format (OKF)バンドルとAgent Skillsを書き込みパスに近い場所で検証します。 - 拡張可能なポリシーと処理 — プラグインは、同じファイルシステムインターフェースを維持しながら、検証、権限、読み取り/書き込みミドルウェア、メタデータ、およびコミット後処理を追加できます。
ユースケース
- 継続的学習リポジトリ — セッションと学習内容を1つの共有サーバーに保存します。最適化のためのメトリクスを追加します。ユーザー分離を維持しながら、エージェントが学習内容を相互に共有できるようにします。
- チーム成果物リポジトリ — アクセス制御を維持しながら、作成したMarkdown、HTML、JSON、Excelなどのドキュメントを共有します。gitよりもはるかに自然で、Confluence/Notionよりもエージェントネイティブです。
- コーディングエージェント向けドキュメント — 内部APIドキュメント、ランブック、製品コンテキスト、アーキテクチャノートを、使い慣れたgrep可能なインターフェースの背後に配置します。
- エージェントチーム向けの共有ライブメモリ — エージェントに個別または共有のドキュメントセットを提供し、調査結果の公開、作業の引き継ぎ、セッションを超えた永続的なコンテキストの蓄積を可能にします。
- 公開ドキュメントサイト — 公開ドキュメントセットにファイルを追加し、公開アクセスを有効にすると、サイトにアクセスしたエージェントに表示されます。既存のドキュメントを編集せずにAEO/GEOを改善します。
- スキル共有 — Agent Skillsを共有コレクションに公開し、承認されたすべてのエージェントが同じ管理された手順を発見して使用できるようにします。
- エージェントプラグインリポジトリ — GitHubからAgent Pluginsリポジトリをバージョン固定し、チームのエージェントに提供します。オープンスタンダードでパッケージ化されたスキルは自動的に最新の状態に保たれます。
- 管理された知識貢献 — 既存のドキュメントをメンテナー用に予約し、誤った上書きを防ぎながら、貢献者がインボックスに公開できるようにします。
- 成果物リポジトリ — カスタム成果物ビューアーを構築したり、エージェントのマシンへのアクセスを許可したりせずに、レポート、ログ、スクリーンショット、生成ファイルをブラウザーまたはSSH経由で保存および公開します。
- ID固有のワークスペース — 各エージェントにプライベートホームと共有チーム知識をマウントし、すべてを1つのサーバーと1つの認可モデルで管理します。
- ポータブルな顧客またはプロジェクト知識 — 関連ドキュメントを埋め込んだバージョン管理された実行可能ファイルを出荷するか、同じ知識をMCPBデスクトップ拡張機能として配布します。
- 検証済み知識カタログ — フロントマターとバンドル規則を適用し、メタデータを安価に検査し、不正な知識を受け入れ時に阻止します。
仕組み
OpenLoreはSSHトランスポートにWishを使用して構築されています。接続は仮想ファイルシステムに対して完全に処理されます:
- 認証 — キーレスで接続するか、SSHキー、証明書、パスキー、またはOAuthログインをIDに解決します。
- ビューの構成 — そのIDに許可されたドキュメントセットとパスのみをマウントします。
- 探索 — そのビューに対して純粋なGo関数として実装されたシェルコマンドを実行するか、同等のMCP
shellツールを使用します。 - 安全に貢献 — 書き込みが有効な場合、アトミックにコミットする前にファイル全体の変更を承認および検証します。
OAuthクライアントは委任されたIDを使用するため、永続的な書き込みの出所は、adilによる直接作業とadil/claude@claude.aiとして実行された作業を区別します。委任先は、プリンシパルを超える権限を継承できず、ドキュメントセットと機能拒否リストによって絞り込むことができます。CIMDクライアントはさらに、ベンダーがホストするメタデータとprivate_key_jwtで認証できます。認証済みOAuthクライアントを参照してください。
通常のシェルは、bash、exec、curl、または任意のホストプロセスを呼び出すことはできません。埋め込まれたドキュメントは常に読み取り専用です。明示的に信頼されたIDには、spawn機能を通じて、狭いスコープの非同期処理を許可できます。
管理された書き込み
OpenLoreはデフォルトで読み取り専用です。書き込み可能なデプロイメントは、リダイレクト、追加、tee、patch、sed -i、ファイル移動、公開、および信頼された外部ジョブのための、単一のポリシー制御された書き込みパスを維持します。
echo "# Research" | publish /backend/findings.md
cat change.diff | patch /backend/api.md
sed -i 's/old/new/g' /backend/runbook.md
書き込みはオブジェクト全体のアトミックスワップです。比較とスワップによる保護は、デフォルトで古い編集を拒否し、ドキュメントセットの権限がターゲットを制約し、プラグインはコミット前に書き込みを検証または延期できます。
ユーザー向けのセットアップについては書き込みと公開を、実装モデルについては書き込みシステムの内部を参照してください。
インストール
Homebrew、Linux、Windowsのリリース、およびどのインストールにダッシュボードが含まれるかについては、クイックスタートを参照してください。OpenLoreを自分でビルドするには、ソースからのビルドを参照してください。
バイナリにドキュメントを埋め込む
ドキュメントをassets/lore/に配置してビルドします。結果のバイナリにはドキュメントが含まれ、ディレクトリ引数なしで実行すると/docsで読み取り専用として提供されます:
make dashboard-build # optional: include the web UI
go build -o my-docs ./cmd/openlore
GitHub Actionでビルドする
ドキュメントを埋め込んだクロスプラットフォームバイナリを生成します:
- uses: aakarim/openlore@v1
with:
docs-dir: ./docs
config: ./openlore.yml
VS Codeでの直接編集、MCP stdio、MCPBデスクトップパッケージング、SSHFS、Goライブラリの使用については、OpenLoreの使用方法を参照してください。
カスタマイズされたデプロイメントを作成する
バンドルされたsetupスキルを使用して、<team>-lore(公式のOpenLoreリリースに固定された薄いContainerfile、openlore.ymlを含む小さな顧客所有リポジトリ)とデプロイメント成果物を作成します。デプロイ前に、動作するローカルサーバーを構築し、HTTP、MCP、認証済みSSH、書き込み、および永続性を検証します:
ssh openlore.sh setup | amp
生成されたリポジトリは、初期のlore.jsonポリシーとSSHで表示可能なファイルを、gitignoreされた.local/の下に保持します。最初のデプロイメントは、その状態から空の永続ボリュームを初期化します。ルートのopenlore.ymlはGit/IaCの権限のままとなり、/var/lib/openlore/config/openlore.ymlに個別にデプロイされます。イメージには焼き込まれません。サーバー上の後続のlore.jsonおよびファイルシステムの編集は権限を持ち、イメージの更新によって上書きされることはありません。
追加の指示コマンドは完全なライフサイクルをサポートします:
onboardingは、初期ID、ロール、ホーム、フォルダーをローカルに追加します。deployは、Fly.io、Railway、AWS、Google Cloud、Azure、DigitalOcean、またはカスタムデプロイメントを選択し、共有の永続性/ネットワーキング契約を検証します。upgradeは、既存のCDがデプロイできるように、固定されたベースイメージのバージョン変更のみを準備します。
プロバイダーのデプロイメントには、HTTPS/MCP、認証済みOpenLore SSH、管理シェルアクセス、および永続的な/var/lib/openloreボリュームが必要です。プロバイダーがサポートする場合、デプロイメントは公開ポート22をOpenLoreポート2222に転送するように構成します。それ以外の場合は、割り当てられたポートを報告し、外部TCP転送システムを推奨します。
公開されたコンテナにはOpenLoreのみが含まれます。オンボーディングポリシーやサーバー構成は意図的に含まれていません。サービスが開始する前に、デプロイメントはopenlore.ymlとlore.jsonを永続構成ディレクトリに配置し、以下を実行する必要があります:
./out --config /var/lib/openlore/config/openlore.yml
これにより、構成を独立してデプロイ可能に保ちます。単純なデプロイメントはopenlore.ymlをボリュームにコピーでき、KubernetesはConfigMapから同じファイルを投影できます。Fly.io、Railway、AWS、Google Cloud、Azure、DigitalOcean、またはカスタムインフラストラクチャには、deployスキルを使用します。リポジトリのRailpackおよびFlyファイルは、イメージ、永続ボリューム、ポート配線を提供します。プロセス起動時に構成をシードまたは変更することはありません。
カスタマイズされたリポジトリなしで迅速なホスト型サーバーを使用するには、Deploy to Renderボタンを使用します。RailpackおよびFlyファイルとは異なり、その起動スクリプトは、初回起動時に空のディスクにスターターのopenlore.ymlとlore.jsonを書き込みます。RenderはHTTPS、MCP、Webビューのみを提供します。OpenLore SSH用のパブリックTCPイングレスはありません。
RailwayはSSH TCPプロキシにパブリックホスト名とポートを割り当てます。標準のSSHポート22には、外部のraw TCPロードバランサーが必要です。Fly.ioは、専用アドレスでパブリックポート22をOpenLoreの内部ポート2222にマッピングできます。raw SSHにはホスト名またはSNIルーティングがないため、1つのリスナーがポート22で複数のドメインをルーティングすることはできません。
コンテナワークフローはmainからlatestを公開します。リリースはVERSION、vVERSION、メジャー、マイナーイメージタグも公開します。
ドキュメント
同じページが同じグループで、openlore.sh/docsに公開されています。
はじめに
| ページ | 内容 |
|---|---|
| OpenLoreとは | 1ページで提供、接続、スコープ、管理、監視 |
| 変更ログ | 現在のバージョン、リリースノート、互換性ノート、バージョン管理されたドキュメント |
スタート
| ページ | 内容 |
|---|---|
| クイックスタート | OpenLoreをインストールし、フォルダを提供し、エージェントを接続する |
| Claude Code | MCP経由でClaude Codeを接続し、参照範囲を制限する |
| Codex | MCP経由でCodexを接続する |
| Cursor | MCP経由でCursorを接続する |
| OpenCode | MCP経由でOpenCodeを接続する |
| SSH経由の任意のエージェント | SSH経由でコーディングエージェントやCIジョブを接続し、IDを付与する |
コンセプト
OpenLoreの仕組み:ドキュメントセット、トランスポート、ID、書き込み、ルール、および観測。
| ページ | 内容 |
|---|---|
| ドキュメントセット | ドキュメントセットとは何か、アクセスがその周りで整理される理由、ネスト、許可、エイリアス、フェイルクローズ検証の仕組み |
| トランスポート | SSH、SFTP、MCP、JSON API、Webが1つのファイルシステム、MCPツール、コマンド結果、セッション、命令コマンドを共有する方法 |
| 認証 | 認証の姿勢、SSHキー、証明書、パスキー、OAuthトークン、インボックスの資格情報がID、ロール、ドキュメントセット、エイリアス、ホーム、ワークロードIDフェデレーションに解決される方法 |
| 書き込みと公開 | 書き込みモード、インボックス、競合処理、成功した書き込みがチェックするものとしないもの、ジョブ |
| フォルダルール | .lore/config.yaml および lore.json ルール、レイヤリング、権限、拒否メッセージ、成長制限 |
| プラグインとフォーマット | プロバイダーインターフェース、Open Knowledge Format検証、lore validate、lore meta、Agent Skillsプラグイン |
| ダッシュボードとメトリクス | ダッシュボード認証、ファクトとアクティビティ、ファイルビューア |
ハウツー
タスクのウォークスルー。
| ページ | 内容 |
|---|---|
| OpenLoreの使用方法 | SSH、HTTPおよびstdio上のMCP、Webビュー、SSHFS、埋め込みバイナリ、GitHub Action、MCPB、ライブラリ使用法のセットアップ |
| サーバーの設定 | openlore.yml の作成、埋め込み設定とフラグに対する優先順位、分析、デバッグログ |
| エージェントにインボックスへの公開を許可する | エージェントが他のものを編集せずに貢献を受け入れる |
| エディタから閲覧・編集する | ローカルプロジェクトミラーなしでのVS CodeおよびSFTPエディタの直接設定 |
| headlong / shellmで実行する | headlongのshellmエンジンからSSH経由でOpenLoreを使用する(ハウスキーピングスキルを含む) |
| ソースからビルドする | Web UIとバイナリを自分でビルドするか、Web UIなしでビルドする |
| OpenLoreをRenderにデプロイする | ワンクリックRenderデプロイ、初回パスキーサインイン、アップグレード、カスタムドメイン |
リファレンス
参照資料:コマンド、キー、エンドポイント、インターフェース、内部構造。
| ページ | 内容 |
|---|---|
| コマンドリファレンス | 完全なシェル、イントロスペクション、公開、構文、CLIコマンド、フラグのリファレンス |
| openlore.ymlリファレンス | openlore.yml が受け入れるすべてのキーの生成リファレンス |
| ルール標準ライブラリ | 組み込みルールメンバーとそのパラメータの生成リファレンス |
| HTTPインボックスAPI | BearerまたはHMAC資格情報を使用したPOST /inbox/{docset}、およびトークンエンドポイント |
| OAuthクライアント | CIMDクライアントID、private_key_jwt、mTLS裏付け、署名キーのローテーション |
| 書き込みシステム内部 | ファイルシステムレイヤリング、書き込みシーム、アドミッションミドルウェア、非同期ジョブ |
| ダッシュボードのビルド | フロントエンドビルドとバックエンドのみのGoビルド |
| セキュリティ評価 | 脅威モデルとセキュリティ特性 |
セキュリティ
- コマンドは
os/execではなく、純粋なGoインタープリタで実行されます。 - 仮想ファイルシステムはパスをクリーンアップし、ドキュメントセットの境界を強制します。
- 許可されたファイルパターンと無視されるディレクトリにより、シークレットがビューから除外されます。
- RBACは読み取り、公開、書き込み、承認、信頼できる機能を制御します。
- Webエンドポイントは、初回使用時のブラインドトラストを回避するために、TLS経由でSSHホストキーを公開できます。SSHユーザー証明書とホスト証明書もサポートされています。
完全なセキュリティ評価については、SECURITY.md を参照してください。
ライセンス
Apache License 2.0 — Copyright © 2026 Adil Karim
OpenLoreにはサードパーティのオープンソースコンポーネントがバンドルされています。それらのライセンスと必要な通知は
assets/legal/THIRD_PARTY_NOTICES.md に記載されており、
完全なライセンステキストは assets/legal/licenses/ にあります。これらは
バイナリに埋め込まれ、実行中のサービスによって /legal で提供されます。