Skip to main content
Glama

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 back

exo 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があります。構造を支えるもの:

0001

階層ネイティブファイル上のDuckDBカタログ、そして壁

0005

ETLの分割:ラップトップが取り込み、クラウドが再構築

0006

リモート読み取りサーフェスは恒久的に読み取り専用

0007

注入された読み取りの爆発半径を制限する

0014

コードは公開、インスタンスは非公開

0016

プロシージャはリソースであり、ツールではない

貢献

最初にCONTRIBUTING.mdを読んでください — 特に、このリポジトリに個人データ(自分自身のものも含む)を決して入れないこと、そして実行中のインスタンスのすべてのIDを再発行する、小さく見える変更のリストについての部分。

MIT。

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Model Context Protocol (MCP) server that gives AI assistants a safe, correct data-analyst capability over business metrics - without raw SQL improvisation.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Read-only MCP server for querying PostgreSQL, MySQL, and SQLite from AI agents — multi-database, safe by default.
    4
    9 npm
    1
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server that exposes SQL database access to LLMs, supporting multiple database types, compact columnar results, pagination, and file export.
    7
    28 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-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