OpenLore

公式

エージェントネイティブなナレッジサーバー。SSHおよびMCPを介してAIエージェントにドキュメントを提供し、アイデンティティスコープのビュー、管理された書き込み、構造化メタデータを備えています。単一バイナリ、設定不要。

OpenLore MCPで何ができますか?

  • SSH経由でドキュメントを探索 — アシスタントにOpenLoreへsshで接続させ、lscatgrepなどの使い慣れたコマンドでMarkdownドキュメントを検索・閲覧させます。

  • ドキュメントメタデータの照会lore metaコマンドを使用してfrontmatterをNDJSONとして検査し、jqで結果をフィルタリングして構造化された知識を取得します。

  • 承認付きでコンテンツを公開 — アシスタントにpublishpatch、またはsed -iを使用してMarkdownファイルを作成・更新させ、機密性の高いパスではアトミックスワップと任意の人間によるレビューを実施します。

  • IDスコープ付きアクセスの管理 — ドキュメントセット、ロール、および権限を設定し、各エージェントまたはユーザーが認可されたナレッジベースとパスのみを参照できるようにします。

  • ナレッジバンドルの検証lore validateを実行してGoogleのOpen Knowledge Format(OKF)準拠を確認し、不正なfrontmatterがコミットされる前に検出します。

ドキュメント

📜 OpenLore

Release Go Reference

Sponsored by Oiya

ドキュメントをSSH経由でAIエージェントに提供します。

OpenLoreは、共有コンテキストを最新かつ検査可能な状態に保つ、最小限で拡張可能なエージェントネイティブなナレッジベースです。


概要

AIコーディングエージェントは、lscatgrepfind、パイプ、シェルループを使ってファイルを探索する方法をすでに知っています。OpenLoreは、実際のマシンではなくドキュメントをバックエンドとして、SSH経由で同じインターフェースを提供します。

Agent ──SSH or MCP──▶ OpenLore ──▶ docs, knowledge, and artifacts

これは、シングルバイナリ、ゼロ設定、読み取り専用のドキュメントサーバーとして始まります。ライブナレッジベースが必要になった場合は、エージェントがコンテンツを読み取ったりナビゲートしたりする方法を変えることなく、アイデンティティスコープのアクセス、制御された公開、アトミック書き込み、検証、人間による承認を追加できます。

Markdownの保存と取得

ドキュメント、ランブック、プロジェクトコンテキスト、またはエージェントが作成したメモを通常のMarkdownファイルに配置します。取り込みパイプラインはありません。OpenLoreをディレクトリに向けると、既存の階層をそのまま提供します。フォルダでドキュメントを整理し、標準のMarkdownリンクで接続し、異なる人やエージェントが異なるアクセスを必要とする場合はドキュメントセットにグループ化します。OpenLoreはデフォルトで読み取り専用です。エージェントがMarkdownも作成・更新できるようにしたい場合は、書き込みを有効にします。

OpenLore Skills import demo

クイックスタート

最速の方法は、エージェントにOpenLoreをセットアップさせることです:

# Teach your agent how to install, configure, and bundle OpenLore
ssh openlore.sh teach | your-agent-cli

# Add documentation access instructions to AGENTS.md
ssh openlore.sh agents >> AGENTS.md

または、直接インストールして実行します:

go install github.com/aakarim/go-openlore/cmd/openlore@latest

openlore ./docs

ssh -p 2222 localhost
ssh -p 2222 localhost "grep -r 'authentication' /docs"

デフォルトでは、以下が起動します:

  • localhost:2222 でSSH
  • http://localhost:8080 で人間向けのWebビュー
  • http://localhost:8080/mcp でHTTP経由のMCP

OpenLoreのインストールとパッケージ化の詳細については、インストールを参照してください。

機能

  • エージェントネイティブな取得 — エージェントは、独自の取得APIを学習する代わりに、すでに理解しているシェルツールと構成パターンを使用します。
  • 1つの知識サーフェス、複数のトランスポート — 同じ仮想ファイルシステムをSSH、SFTP/SSHFS、MCP、人間にわかりやすいWebビューで提供します。
  • ライブで管理された知識 — コンテンツを読み取り専用に保ち、スコープ付き公開を許可するか、ドキュメントセットごとに完全な書き込みを有効にします。書き込みはアトミックで、競合を認識し、人間の承認を必要とすることができます。
  • アイデンティティスコープのビュー — 各人またはエージェントに必要なドキュメントセットのみを、ロールベースのropublishrw権限、パスエイリアス、プライベートホームディレクトリとともに提供します。
  • 構造的に安全 — シェルは実際のオペレーティングシステムシェルではなく、インメモリのGoインタープリターです。通常のセッションでは、シェルエスケープ、任意のプロセス実行、周辺ネットワークアクセスはありません。
  • ポータブルな知識バンドル — ドキュメントを自己完結型バイナリに埋め込み、GitHub Actionでクロスプラットフォームバンドルを構築するか、デスクトップMCP拡張機能としてパッケージ化します。
  • 新しいクエリ言語なしの構造化知識lore metaでフロントマターをNDJSONとして検査し、jqでクエリし、Googleのオープンナレッジフォーマット(OKF)バンドルとAgent Skillsを書き込みパスに近い場所で検証します。
  • 拡張可能なポリシーと処理 — プラグインは、同じファイルシステムインターフェースを維持しながら、検証、権限、読み取り/書き込みミドルウェア、メタデータ、コミット後処理を追加できます。

ユースケース

  • 継続的学習リポジトリ — セッションと学習内容を1つの共有サーバーに保存します。最適化できるようにメトリクスを追加します。ユーザーの分離を維持しながら、エージェントが互いに学習内容を共有できるようにします。
  • チーム成果物リポジトリ — 作成したMarkdown、HTML、JSON、Excelなどのドキュメントを、アクセス制御を維持しながら共有します。gitよりもはるかに自然で、Confluence/Notionよりもエージェントネイティブです。
  • コーディングエージェント向けドキュメント — 内部APIドキュメント、ランブック、製品コンテキスト、アーキテクチャメモを、使い慣れたgrep可能なインターフェースの背後に配置します。
  • エージェントチーム向けの共有ライブメモリ — エージェントに個別または共有のドキュメントセットを提供し、調査結果を公開したり、作業を引き継いだり、セッションをまたいで永続的なコンテキストを蓄積したりできるようにします。
  • 公開ドキュメントサイト — 公開ドキュメントセットに任意のファイルを追加し、公開アクセスを有効にすると、サイトに偶然出会ったエージェントに表示されます。既存のドキュメントを編集することなく、AEO/GEOを改善します。
  • スキル共有 — Agent Skillsを共有コレクションに公開し、承認されたすべてのエージェントが同じ管理された手順を発見して使用できるようにします。
  • エージェントプラグインリポジトリ — GitHubからAgent Pluginsリポジトリをバージョン固定し、チームのエージェントに提供します。オープンスタンダードでパッケージ化されたスキルは自動的に最新の状態に保たれます。
  • 管理された知識貢献 — 貢献者がインボックスに公開できるようにし、機密パスを承認者用に予約し、誤った上書きを防ぎます。
  • エージェント成果物のリモートレビュー — カスタム成果物ビューアを構築したり、エージェントのマシンへのアクセスを許可したりすることなく、ブラウザまたはSSH経由でレポート、ログ、スクリーンショット、生成ファイルを公開します。
  • アイデンティティ固有のワークスペース — 各エージェントにプライベートホームと共有チーム知識をマウントします。すべて1つのサーバーと1つの認可モデルを通じて行います。
  • ポータブルな顧客またはプロジェクト知識 — 関連ドキュメントを埋め込んだバージョン管理された実行可能ファイルを出荷するか、同じ知識をMCPBデスクトップ拡張機能として配布します。
  • 検証済み知識カタログ — フロントマターとバンドル規約を強制し、メタデータを安価に検査し、不正な知識を受け入れ時に阻止します。

仕組み

OpenLoreはSSHトランスポートにWishを基盤としています。接続は仮想ファイルシステムに対して完全に処理されます:

  1. 認証 — キーレスで接続するか、SSHキー、証明書、パスキー、またはOAuthログインをアイデンティティに解決します。
  2. ビューの構成 — そのアイデンティティに許可されたドキュメントセットとパスのみをマウントします。
  3. 探索 — そのビューに対して純粋なGo関数として実装されたシェルコマンドを実行するか、同等のMCP shellツールを使用します。
  4. 安全に貢献 — 書き込みが有効な場合、ファイル全体の変更をアトミックにコミットするか承認ルートに送る前に、認可して検証します。

OAuthクライアントは委任されたアイデンティティを使用するため、永続的な書き込みの来歴は、adilによる直接の作業とadil/claude@claude.aiとして実行された作業を区別します。委任者は、そのプリンシパルを超える権限を継承できず、ドキュメントセットと機能の拒否リストによって絞り込むことができます。CIMDクライアントはさらに、ベンダーがホストするメタデータとprivate_key_jwtで認証できます。認証済みOAuthクライアントを参照してください。

通常のシェルは、bashexeccurl、または任意のホストプロセスを呼び出すことはできません。埋め込まれたドキュメントは常に読み取り専用です。明示的に信頼されたアイデンティティには、spawn機能を通じて、狭いスコープの非同期処理を許可できます。

管理された書き込み

OpenLoreはデフォルトで読み取り専用です。書き込み可能なデプロイメントでは、リダイレクト、追加、teepatchsed -i、ファイル移動、公開、承認された外部ジョブのための、単一のポリシー制御された書き込みパスを維持します。

echo "# Research" | publish backend findings.md
cat change.diff | patch /backend/api.md
sed -i 's/old/new/g' /backend/runbook.md

書き込みはオブジェクト全体のアトミックスワップです。比較とスワップの保護は、デフォルトで古い編集を拒否し、ドキュメントセットの権限がターゲットを制約し、選択されたパスは直接コミットする代わりに/requestsの下でレビュー可能な変更セットを生成できます。

ユーザー向けのセットアップについては書き込みと公開を、実装モデルについては書き込みシステムの内部を参照してください。

インストール

Goでインストール

Go 1.26以降が必要です:

go install github.com/aakarim/go-openlore/cmd/openlore@latest

ソースからビルド

git clone https://github.com/aakarim/go-openlore.git
cd go-openlore
go build -o openlore ./cmd/openlore

バイナリにドキュメントを埋め込む

ドキュメントをassets/lore/に配置してビルドします。結果のバイナリにはドキュメントが含まれ、ディレクトリ引数なしで実行すると/docsで読み取り専用として提供されます:

go build -o my-docs ./cmd/openlore

GitHub Actionでビルド

ドキュメントを埋め込んだクロスプラットフォームバイナリを生成します:

- uses: aakarim/openlore@v1
  with:
    docs-dir: ./docs
    config: ./openlore.yml

MCP stdio、MCPBデスクトップパッケージング、SSHFS、Goライブラリの使用法については、OpenLoreの使用方法を参照してください。

カスタマイズされたデプロイメントを作成

バンドルされたsetupスキルを使用して、<team>-loreを作成します。これは、openlore.yml、公式OpenLoreリリースに固定された薄いContainerfile、デプロイメント成果物を含む、顧客所有の小さなリポジトリです。デプロイメント前に、動作するローカルサーバーを構築し、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は、初期アイデンティティ、ロール、ホーム、フォルダをローカルに追加します;
  • deployは、Fly.io、Railway、AWS、Google Cloud、Azure、DigitalOcean、またはカスタムデプロイメントを選択し、共有の永続性/ネットワーキング契約を検証します;
  • upgradeは、既存のCDがデプロイできるように、固定されたベースイメージのバージョン変更のみを準備します。

プロバイダーのデプロイメントには、HTTPS/MCP、認証済みOpenLore SSH、管理シェルアクセス、永続的な/var/lib/openloreボリュームが必要です。プロバイダーがサポートする場合、デプロイメントは公開ポート22をOpenLoreポート2222に転送するように構成します。それ以外の場合は、割り当てられたポートを報告し、外部TCP転送システムを推奨します。

公開されたコンテナにはOpenLoreのみが含まれます。オンボーディングポリシーやサーバー構成は意図的に含まれていません。サービスが起動する前に、デプロイメントはopenlore.ymllore.jsonを永続構成ディレクトリに配置し、以下を実行する必要があります:

./out --config /var/lib/openlore/config/openlore.yml

これにより、構成は独立してデプロイ可能になります。単純なデプロイメントはopenlore.ymlをボリュームにコピーでき、KubernetesはConfigMapから同じファイルを投影できます。Fly.io、Railway、AWS、Google Cloud、Azure、DigitalOcean、またはカスタムインフラストラクチャには、deployスキルを使用します。リポジトリのRailpackおよびFlyファイルは、イメージ、永続ボリューム、ポート配線を提供します。プロセス起動時に構成をシードしたり変更したりしません。

RailwayはSSH TCPプロキシに公開ホスト名とポートを割り当てます。標準のSSHポート22には、外部のraw TCPロードバランサーが必要です。Fly.ioは、専用アドレスを使用して公開ポート22をOpenLoreの内部ポート2222にマッピングできます。raw SSHにはホスト名やSNIルーティングがないため、1つのリスナーがポート22で複数のドメインをルーティングすることはできません。

コンテナワークフローはmainからlatestを公開します。リリースはVERSIONvVERSION、メジャー、マイナーのイメージタグも公開します。

HTTPインボックスアップロード

ドキュメントセットinboxと、そのpublish権限を持つロールを構成し、既存のアイデンティティの資格情報を作成します(CLIが検証できるように、サーバー構成はauth_fileを指定する必要があります):

openlore inbox token create --identity alice --label webhook --config openlore.yml
curl -H 'Authorization: Bearer olin_ID_SECRET' -H 'Content-Type: text/markdown' \
  --data-binary @note.md 'https://docs.example.com/inbox/docs?name=note.md'

POST /inbox/{docset}は、ベアラー資格情報またはX-OpenLore-Token-IdX-OpenLore-Signatureを使用した完全ボディHMACを受け入れます。OAuthアクセストークンはPOST/GET /inbox/tokensDELETE /inbox/tokens/{id}にのみ使用されます。インボックス資格情報は別個で失効可能です。構成とアイデンティティを参照してください。

ドキュメント

ガイド内容
OpenLoreの利用方法SSH、MCP、Web、SSHFS、組み込みバイナリ、GitHub Action、MCPB、ライブラリ利用
コマンドリファレンスシェル、イントロスペクション、公開、構文、CLIコマンド、フラグの完全リファレンス
設定とアイデンティティopenlore.yml、認証、ロール、ドキュメントセット、エイリアス、ホーム、ホスト検証
ワークロードID連携短期間有効な外部IDトークンでCIとエージェントを認証
作成と公開書き込みモード、受信トレイ、競合処理、承認、ジョブ
プラグインと知識形式プラグインのインストール、インターフェース、OKF検証、lore validatelore meta
書き込みシステムの内部構造ファイルシステムのレイヤリング、書き込みシーム、変更セット、フック、非同期ジョブ
セキュリティ評価脅威モデルとセキュリティ特性

セキュリティ

  • コマンドはos/execではなく、純粋なGoインタープリタで実行されます。
  • 仮想ファイルシステムはパスをクリーンアップし、ドキュメントセットの境界を強制します。
  • 許可されたファイルパターンと無視ディレクトリにより、シークレットがビューから除外されます。
  • RBACは読み取り、公開、書き込み、承認、信頼できる機能を制御します。
  • Webエンドポイントは、初回使用時の盲目的な信頼を避けるため、SSHホストキーをTLS経由で公開できます。SSHユーザー証明書とホスト証明書もサポートされています。

完全なセキュリティ評価については、SECURITY.mdを参照してください。

ライセンス

MIT — Adil Karim

OpenLoreにはサードパーティのオープンソースコンポーネントがバンドルされています。それらのライセンスと必要な通知は assets/legal/THIRD_PARTY_NOTICES.mdに記載されており、 完全なライセンステキストはassets/legal/licenses/にあります。これらは バイナリに埋め込まれ、実行中のサービスによって/legalで提供されます。