exo
Exo
Персональный контекстный слой для агентных жизненных систем.
Exo — сокращение от экзокортекс, той части вашего мышления, которая живёт вне вашей головы, — это единая запись жизни в форме, которой владеете вы. Всё, что вы потребляете, всё, что вы пишете, и всё, что машина заключила из первых двух, — в одном месте с единым 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, означает, что один и тот же контекст достигает вашего терминального агента, вашего редактора и вашего телефона.
Это существует потому, что альтернатива — дюжина силосов, каждый из которых знает десятую часть вас, и ни один из них не отдаст её обратно.
Related MCP server: mcp-multi-db
Что это на самом деле делает
Загрузчики вытаскивают ваши данные из силосов, в которых они заперты: Last.fm, Letterboxd, Goodreads, Untappd, Trakt, Raindrop, ваши экспорты из Claude и ChatGPT, ваши заметки в markdown, ваши опубликованные тексты, ваши git-репозитории. Каждый загрузчик пишет ровно в одну зону и больше никуда.
Запись хранит их разделёнными по тому, кто может писать, а не по тому, что это за данные:
уровень | что это | кем пишется |
T0 потребление | что мир записал о вас — скробблы, оценки, сохранения | только загрузчики |
T1 авторское | ваши слова: заметки, посты, вердикты, рецепты, задачи | вы, вручную |
T2 производное | что машина заключила: атомы, векторы, аффинности | только деривация |
Деривация читает T0 и T1 и физически не может видеть T2 — профиль, через который она читает, вообще не имеет представлений T2. Поэтому T2 всегда регенерируется из эталонных данных, и exo verify доказывает это, выполняя деривацию дважды и сравнивая дайджесты. Машинный вывод никогда не становится машинным входом.
Поверхность публикует физически отдельную копию, содержащую только строки, которые вы объявили публикуемыми. Удерживаемый материал отсутствует в опубликованных файлах, а не отфильтровывается во время чтения, поэтому ни ошибка ниже по потоку, ни внедрённая инструкция не могут до него добраться. Политика fail-closed: незадекларированная зона приводит к сбою сборки, а не выбирает значение по умолчанию в ту или иную сторону.
Движок и ваш инстанс
Этот репозиторий — движок. Он не хранит данных и никогда не будет.
Ваши данные, ваша конфигурация и ваши собственные загрузчики живут в инстансе — отдельном приватном каталоге (обычно в собственном приватном репозитории), который движок находит через $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/ — это Cloudflare Worker, говорящий на MCP через HTTP — постоянно только для чтения, обслуживающий только публикационный пакет, — а worker/README.md пошагово описывает его развёртывание и подключение к Poke, ассистенту iMessage:
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) и добавьте URL Worker'а и этот токен на poke.com/integrations/new. Любой MCP-клиент работает так же — Poke просто тот, кто достучится до вас по текстовому сообщению.
Затем прочитайте CONTEXT.md — это словарь, и остальная часть репозитория предполагает его.
Честные ограничения
Стоимость старта реальна. Это инструмент для того, кто уже ведёт заметки, уже экспортирует свои данные и уже хотел этого. Он не создаст эту привычку за вас.
Загрузчики ломаются. Они читают чужие форматы экспорта и скрейпят чужие страницы. Каждый из них сохраняет свой последний удачный файл, а не перезаписывает его при сбое, но прогнивший загрузчик — лишь вопрос времени.
Под капотом это второй мозг. Личная вики, загрузчики для данных потребления и архивов, некоторая дистилляция сверху. Новизна не в какой-то одной из этих частей; а в том, что они разделяют одну запись с одной границей публикации.
Загрузчик экспорта чатов — это складной нож. Он нормализует экспорты Claude и ChatGPT в единую форму, что полезно независимо от того, хотите ли вы остальное из этого.
Решения
Каждое неочевидное решение имеет ADR в docs/adr. Несущие из них:
каталог DuckDB поверх файлов, родных для уровней, и стена | |
разделите ETL: ноутбук загружает, облако пересобирает | |
удалённая поверхность чтения постоянно только для чтения | |
ограничьте радиус поражения внедрённого чтения | |
код публичен, инстанс приватный | |
процедура — это ресурс, а не инструмент |
Участие
Сначала прочитайте CONTRIBUTING.md — особенно часть о том, чтобы никогда не помещать личные данные в этот репозиторий, включая ваши собственные, и список изменений, которые выглядят мелкими, но пересоздают каждый id в работающем инстансе.
MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceModel Context Protocol (MCP) server that gives AI assistants a safe, correct data-analyst capability over business metrics - without raw SQL improvisation.
- AlicenseAqualityAmaintenanceRead-only MCP server for querying PostgreSQL, MySQL, and SQLite from AI agents — multi-database, safe by default.4181ISC
- AlicenseNot gradedqualityBmaintenanceMCP server providing read-only access to SQL Server databases for AI assistants, enabling schema exploration, query execution, and foreign key inference with token-efficient TOON responses.1MIT
- AlicenseAqualityAmaintenanceA read-only MCP server that exposes SQL database access to LLMs, supporting multiple database types, compact columnar results, pagination, and file export.622MIT
Related MCP Connectors
The personal context layer for AI: your profile and files, read by any MCP client over OAuth.
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/reeswrites/exo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server