exo
Exo
エージェント的生活システムのためのパーソナルコンテキストレイヤー。
Exo — exocortex(頭の外に存在する思考の一部)の略 — は、あなたが所有する形で記録された、ある人生の記録です。あなたが消費するすべて、あなたが書くすべて、そして機械がその両方から導き出したすべてが、一つの場所に、一つのSQLサーフェスで横断できる形で収められています。
その記録のフィルタリングされたコピーは読み取り専用のMCPサーバーに公開され、目の前にあるどのアシスタントでもコンテキストとして利用できます — そのアシスタントのベンダーが記録を所有することはありません。
loaders ─────────▶ the record ─────────▶ the surface
what reaches it what it holds what it exposes
(one per source, (tier zones, one (a fixed set of named
each writes one SQL surface, one questions, read-only
zone) wall) by construction)なぜ
あなたは自分のパーソナルコンテキスト、運用知識、そして記憶を、可能な限り自分で所有すべきです。それがそれらをポータブルにするものであり、きめ細かいプライバシーを可能にする唯一の方法です。
スケジューラーを所有せずにルーティンを所有する。 すべてをセルフホストすることは立派ですが、苦痛がないわけではありません。時には他人のインフラが正解です。動かすべきでないのは記録です。
プラットフォームロックインもモデルロックインもない。 記録はあなたのディスク上のparquetとmarkdownです。サーフェスはMCPであり、すべてのアシスタントが話せます。
あなたの作業場所に合わせる。 MCP経由で到達できる集中型ストアは、同じコンテキストをターミナルエージェント、エディタ、スマートフォンに届けます。
これが存在する理由は、代替案が、それぞれがあなたの10分の1を知っていて、どれも返してくれない、十数のサイロだからです。
Related MCP server: mcp-multi-db
実際にやること
ローダーは、閉じ込められているサイロからデータを引き出します:Last.fm、Letterboxd、Goodreads、Untappd、Trakt、Raindrop、ClaudeとChatGPTのエクスポート、markdownノート、公開済みの文章、gitリポジトリ。各ローダーは正確に1つのゾーンに書き込み、それ以外には何も書き込みません。
記録は、データが何であるかではなく、誰が書き込めるかによってそれらを分離します:
階層 | それが何か | 書き込む主体 |
T0 消費 | 世界があなたについて記録したもの — スクロブル、評価、保存 | ローダーのみ |
T1 執筆 | あなたの言葉:ノート、投稿、判定、レシピ、タスク | あなた、手動 |
T2 導出 | 機械が結論したもの:アトム、ベクトル、親和性 | 導出のみ |
導出はT0とT1を読み、物理的にT2を見ることができません — 導出が通るプロファイルにはT2のビューがまったくありません。したがってT2は常にグラウンドトゥルースから再生成され、exo verifyは2回導出してダイジェストを比較することでそれを証明します。機械の出力が機械の入力になることはありません。
サーフェスは、公開可能と宣言した行のみを含む物理的に分離されたコピーを公開します。保留された資料は公開ファイルに存在せず、読み取り時にフィルタリングされるわけではないため、下流のバグも注入された命令もそれに到達できません。ポリシーはフェイルクローズドです:宣言されていないゾーンはどちらかにデフォルトするのではなく、ビルドを失敗させます。
エンジンとあなたのインスタンス
このリポジトリはエンジンです。データは保持せず、今後も保持しません。
あなたのデータ、設定、独自のローダーはインスタンス — エンジンが$EXO_HOMEを通じて見つける、別のプライベートディレクトリ(通常は独自のプライベートリポジトリ)— にあります:
your-instance/
exo.toml who you are, where your inputs live
serve-manifest.json what may leave this machine
raw/ your exports and mirrors
zones/ the record itself
plugins/ loaders only you could have
items/ your tasks, habits, slots
procedures/ how you do a recurring thing, by handローダーがエンジンに同梱されるのは、その入力がフォーマットである場合です — Last.fmのエクスポート、markdownのフォルダ、gitリポジトリのディレクトリ。誰でもそれらを保持できます。ローダーがインスタンスに属するのは、その入力が場所である場合です:あなたの街の会場カレンダー、あなたの関連リポジトリ、あなたのブログ。テストはコードがどれほど特化しているかではなく、見知らぬ人がその入力をそもそも保持できるかどうかです。
始める
uv sync
uv run exo init ~/my-exo # scaffold an instance
export EXO_HOME=~/my-exo
# drop your exports into $EXO_HOME/raw/exports/, then:
uv run exo rebuild # ingest -> index -> derive -> catalog
uv run exo query "SELECT artist, count(*) FROM t0_music GROUP BY 1 ORDER BY 2 DESC LIMIT 10"
uv run exo publish --dry-run # what would leave, and what is held backexo initがコピーするテンプレートはexo/templates/です — コピーを編集する前に読んでください。
スマートフォンからアクセスする
読み取りサーフェスの要点は、記録を保持しているマシンの近くにいないときに、記録が応答することです。worker/はHTTP上でMCPを話すCloudflare Workerです — 恒久的に読み取り専用で、公開バンドルのみを提供します — そしてworker/README.mdは、そのセットアップとiMessageアシスタントのPokeへの接続を順を追って説明しています:
cd worker
cp wrangler.example.toml wrangler.toml # your database id, your buckets, your name
npx wrangler d1 create exo # + r2 bucket create exo-vectors
npx wrangler deploy
npx wrangler secret put AUTH_TOKEN # openssl rand -hex 32次にバンドルを公開します(exo publish --cf、その後import.sh)、そしてWorkerのURLとそのトークンをpoke.com/integrations/newに追加します。どのMCPクライアントも同じように動作します — Pokeはテキストメッセージで届くものにすぎません。
その後CONTEXT.mdを読んでください — それが語彙であり、リポジトリの残りはそれを前提としています。
正直な限界
初期コストは現実的です。 これは、すでにノートを取り、すでにデータをエクスポートし、すでにこれを望んでいた人のためのツールです。習慣をゼロから作ってはくれません。
ローダーは壊れます。 他人のエクスポート形式を読み、他人のページをスクレイピングします。各ローダーは失敗で上書きするのではなく最後の正常なファイルを保持しますが、ローダーの腐敗は時間の問題です。
それは下にあるセカンドブレインです。 パーソナルwiki、消費データとアーカイブ用のローダー、その上にある蒸留。新しい部分はそれらのどれか一つではなく、それらが一つの公開境界を持つ一つの記録を共有していることです。
チャットエクスポートローダーはポケットナイフです。 ClaudeとChatGPTのエクスポートを一つの形に正規化します。これは、この他の部分が欲しいかどうかに関係なく有用です。
決定事項
明白でない選択にはすべてdocs/adrにADRがあります。構造を支えるもの:
階層ネイティブファイル上のDuckDBカタログ、そして壁 | |
ETLの分割:ラップトップが取り込み、クラウドが再構築 | |
リモート読み取りサーフェスは恒久的に読み取り専用 | |
注入された読み取りの爆発半径を制限する | |
コードは公開、インスタンスは非公開 | |
プロシージャはリソースであり、ツールではない |
貢献
最初にCONTRIBUTING.mdを読んでください — 特に、このリポジトリに個人データ(自分自身のものも含む)を決して入れないこと、そして実行中のインスタンスのすべてのIDを再発行する、小さく見える変更のリストについての部分。
MIT。
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Person-owned AI memory that learns, not just stores — portable context for any MCP client.
Agent-native MCP server over 49M+ US public and government records, privacy-first, always current.
Read-only MCP server: let AI agents read your ORANO saved-video library, tasks, and memory.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceModel Context Protocol (MCP) server that gives AI assistants a safe, correct data-analyst capability over business metrics - without raw SQL improvisation.-
- AlicenseAqualityBmaintenanceRead-only MCP server for querying PostgreSQL, MySQL, and SQLite from AI agents — multi-database, safe by default.49 npm1ISC
- AlicenseAqualityAmaintenanceA read-only MCP server that exposes SQL database access to LLMs, supporting multiple database types, compact columnar results, pagination, and file export.728 npmMIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server that exposes Garmin Connect health data from a local SQLite database to AI assistants, enabling queries for recent days, sleep, weekly trends, and a guarded SQL query surface.MIT