Об этом проекте
Context (supa-media/context) представляет собой MCP-шлюз, который предоставляет AI-клиентам — ChatGPT, Claude, Codex, Notion AI и другим — единую конечную точку для чтения и записи персональной базы знаний. База знаний состоит из обычных Markdown-файлов, хранящихся в аккаунте, который контролирует пользователь: Dropbox, Cloudflare R2, AWS S3, Backblaze B2 или любом другом S3-совместимом хранилище.
В README описываются три взаимосвязанных единицы: **brain** (персональный контекст, привязанный к вашему имени), **workspace** (контекст, общий с другими пользователями) и **context** как объединение вашего brain, общих с вами brain и ваших workspace. Подключение одной конечной точки призвано избавить каждого нового ассистента от необходимости заново изучать ваши проекты, решения и историю.
## Два уровня (planes)
Архитектура разделяет уровень управления (control plane) и уровень данных (data plane), и в README это разделение рассматривается как основа проекта.
- **Control plane** (`apps/convex`) — аккаунты, рабочие пространства, OAuth-разрешения и привязки к хранилищам. Заявлено, что здесь хранятся только метаданные: никаких заметок, никаких вторых копий.
- **Data plane** — папка Dropbox пользователя или корзина объектного хранилища. Удаление аккаунта Context очищает control plane, в то время как data plane остается нетронутым.
MCP-шлюз (`apps/mcp`) описывается как автономный Cloudflare Worker, который пользователь может развернуть самостоятельно, если хостинг-сервис перестанет работать, при этом корзина с данными продолжит функционировать.
## Хранение и переносимость
- Обычные файлы являются каноническими: Markdown читаем в Obsidian, доступен для поиска через `grep` или может быть перенесен с помощью `rclone`; проприетарная база данных не является единственной копией.
- Хранилище сохраняет свою нативную структуру — обычная папка в Dropbox или tenancy на уровне корзины в объектном хранилище, без перезаписи ключей или создания пространств имен в путях. Заявляется, что существующий brain подключается без миграции.
- Индексы (кэши поиска, эмбеддинги) описываются как одноразовые производные, которые можно восстановить из файлов.
## Инструменты и соглашения
**`orient`** — это первый инструмент, который должны вызвать подключенные клиенты. Он возвращает главную страницу, недавно измененные заметки и карту папок с количеством заметок. Большая часть его вывода извлекается из корзины и пересобирается при каждом вызове. В README отмечается, что эта инструкция находится в соединении, а не в клиенте, поэтому для обеспечения постоянства рекомендуется использовать пользовательскую инструкцию на стороне клиента, системный промпт или файл правил.
**`index.md`** — обычный Markdown-файл в корне корзины, принадлежащий пользователю. При настройке создается начальная версия; агентам рекомендуется дополнять его, а не заменять, и сначала сообщать об изменениях. Рядом может находиться необязательный файл `index-private.md` для контента, предназначенного только для персонального подключения. Подключение корзины, в которой уже есть заметки, ничего не перезаписывает, поэтому импортированный brain может не иметь `index.md`, о чем сообщит `orient`.
**`save_context`** — инструмент, вызываемый агентом в конце сессии. Его поведение определяется пользователем через раздел `## Save context` в `index.md` со строкой `destination:` и любой процедурой, которой пользователь хочет следовать.
**Session-end hook** — команда `npx -y @supa-media/context-hook install` один раз выполняет вход в систему и добавляет хук `SessionEnd` в Claude Code, чтобы видимые пользователю сообщения сессии автоматически попадали в `0-inbox/`. В README указано, что хук запрашивает только доступ к захвату данных, не может читать заметки, отображается в Connections и может быть отозван отдельно. Исходный код находится в `packages/hook`.
## Организация
При настройке создается структура в стиле PARA — `0-inbox/`, `1-projects/`, `2-areas/`, `3-resources/`, `4-archive/` — которая представлена как предложение, а не как жесткая схема. Инструменты работают с путями, поэтому любая структура, предоставленная пользователем, будет работать так же.
## Конфиденциальность
Каждая заметка имеет статус `private` (приватная) или `team` (командная). Настройки папок по умолчанию объявляются в манифесте `privacy.md` в корне корзины, который виден владельцу и соблюдается на стороне сервера перед возвратом контента; при этом отдельные заметки могут переопределять настройки своей папки в любом направлении. `team` определяется как именованные люди, а не открытый интернет; анонимного уровня не предусмотрено.
## Структура репозитория
| Путь | Назначение |
| --- | --- |
| `apps/convex/` | Control plane — аккаунты, рабочие пространства, привязки к хранилищам, разрешения |
| `apps/mobile/` | Expo-приложение (iOS, Android, web) — онбординг и панель управления |
| `apps/mcp/` | MCP-шлюз Worker — инструменты, движок конфиденциальности, адаптер хранилища |
| `packages/shared/` | Типы и константы, общие для всех приложений |
| `packages/hook/` | Хук завершения сессии, устанавливаемый через `npx` |
## Разработка
```sh
pnpm install
npx convex dev # создает ваше развертывание Convex
pnpm dev # Convex + Expo вместе
cd apps/mcp && pnpm test # в README упоминается 442 проверки, без зависимостей, без сети
```
Заявлено, что проект построен на базе supa-framework.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.