Memex
Memex
Локальный, приватный по своей сути персональный движок контекста для LLM.
TypeScript · Swift · MCP · OpenAPI 3.1.0 · Cloudflare Tunnel
Большинство ИИ-ассистентов ничего о вас не знают. Каждый новый разговор начинается с нуля — они не знают, что вы читали, какие ссылки сохранили, какие заметки написали или какие файлы скачали.
Memex это исправляет. Это фоновый демон, который работает на вашем Mac и пассивно индексирует вашу цифровую активность в локальную базу данных. Затем эта база становится доступна любой LLM — Claude на вашем рабочем столе, ChatGPT на вашем телефоне — через стандартные интерфейсы. Никакого облачного хранилища. Никаких сторонних серверов. Всё остаётся на вашей машине.
Что он собирает
Скриншоты — распознаются локально с помощью Apple Vision framework (Swift)
Буфер обмена — отслеживается непрерывно; для YouTube-ссылок автоматически подтягиваются транскрипты, Twitter-ссылки извлекают содержимое постов
Загрузки — PDF, markdown-файлы, CSV парсятся и индексируются при появлении
Apple Notes — синхронизируются периодически через AppleScript
История браузера — посещения в Safari, Chrome, Arc, Brave и Edge (все профили), синхронизируется каждые 30 минут с отфильтрованным шумом поиска, авторизации и localhost
Ссылки с телефона — отправляются напрямую с Android через HTTP Shortcuts → POST на локальный API
Секреты никогда не попадают в хранилище. Копии из менеджеров паролей (1Password, Bitwarden, KeePass, …) пропускаются через определение приложения и маркер org.nspasteboard.ConcealedType, а содержимое, похожее на секреты — AWS-ключи, токены GitHub/Slack/Stripe, JWT, блоки приватных ключей, присваивания PASSWORD=, строки в форме сгенерированных паролей — отфильтровывается до сохранения.
Шум буфера обмена самоочищается: точные дубликаты схлопываются, а сырые записи буфера обмена истекают через 30 дней (настраивается через OMNICONTEXT_CLIPBOARD_MAX_AGE_DAYS / OMNICONTEXT_CLIPBOARD_MAX_COUNT). Богатые ресурсы — заметки, загрузки, скриншоты, история — никогда не удаляются.
Related MCP server: memory-mcp
Как это работает
[Screenshots / Clipboard / Notes / Downloads]
↓
Memex Daemon (Node.js)
↓
SQLite + FTS5 (db.sqlite)
↙ ↘
MCP Server HTTP Server :4322
(stdio) (Bearer auth)
↓ ↓
Claude Desktop Cloudflare Tunnel
↓
ChatGPT Mobile /
Android Share SheetБаза данных — SQLite (через встроенный node:sqlite в Node — без нативных зависимостей) с полнотекстовым индексом FTS5. Поиск — ранжирование BM25 по содержимому, заголовку, сводке и URL источника, с мультипликативными повышениями за свежесть и тип документа — никаких эмбеддингов, никаких API-вызовов, полностью офлайн. Режим WAL обеспечивает безопасный параллельный доступ из демона и MCP-процессов. Существующий db.json из старых версий мигрируется автоматически при первом запуске.
Два интерфейса обслуживают базу данных одновременно:
Локальный MCP-сервер (транспорт stdio) для Claude Desktop и MCP-совместимых редакторов вроде Cursor
HTTP-сервер, доступный через бесплатный Cloudflare-туннель для ChatGPT Custom Actions и мобильного приёма данных
Установка
Требования: macOS (сбор данных нативно для macOS: Vision OCR, AppleScript, launchd) и Node.js ≥ 22.5 (Memex использует встроенный node:sqlite; на старых версиях Node он завершается с понятным сообщением).
git clone https://github.com/arnavbee/memex
cd memex
npm install && npm run build
# Configure your API key
cp .env.example .env
# Edit .env and set OMNICONTEXT_API_KEY (only needed for the HTTP API/tunnel)
# Start the daemon once (foreground)
npm start
# ...or install it as a launchd agent: starts at login, restarts on crash
npm run install-daemon # logs land in ~/.omnicontext/daemon.log
npm run uninstall-daemon # stop + remove (database untouched)
# Expose to mobile (optional)
cloudflared tunnel --url localhost:4322Разрешения (Системные настройки → Конфиденциальность и безопасность): предоставьте бинарнику node полный доступ к диску для истории Safari и Автоматизация → Заметки для синхронизации Apple Notes. Браузеры на Chromium (Chrome, Brave, Arc, Edge) работают без всего этого.
Claude Desktop — добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json, затем перезапустите Claude Desktop:
{
"mcpServers": {
"memex": {
"command": "node",
"args": ["/path/to/memex/dist/mcp-standalone.js"]
}
}
}Используйте
mcp-standalone.js, а неindex.js— Claude Desktop нужен только интерфейс запросов.index.js— это полный демон сбора данных; запуск его дважды приведёт к двойному захвату буфера обмена и конфликту за порт 4322. Та же конфигурация работает для Cursor и любого MCP-клиента.
ChatGPT Custom Actions — импортируйте openapi.json из репозитория в схему действий вашего GPT, указав URL сервера на ваш Cloudflare-туннель, с заголовком Authorization: Bearer <ваш OMNICONTEXT_API_KEY>.
Меню «Поделиться» на Android — в HTTP Shortcuts создайте POST на https://<ваш-туннель>/ingest с тем же bearer-заголовком и переданным текстом в теле запроса, и добавьте его в меню «Поделиться». Всё, чем вы поделитесь с телефона, попадёт в хранилище.
Использование
Никаких команд учить не нужно. Как только демон запущен, просто живите своей цифровой жизнью — копируйте ссылки, делайте скриншоты, скачивайте PDF — а потом спрашивайте своего ИИ об этом позже, обычным языком:
«Что это была за статья про внимание, которую я читал на прошлой неделе?»
«Найди PDF, который я скачал про собеседования по Python»
«Что я копировал сегодня утром?»
«То видео Карпати про тонкую настройку было?» (YouTube-ссылки автоматически индексируют свои транскрипты)
«Удали ту запись из буфера обмена с моим адресом»
Claude обнаруживает эти инструменты через MCP и вызывает их сам: search_vault, get_recent_assets, get_asset_by_id, delete_asset, sync_browser_history, sync_notes_now, sync_recent_files. Единственная привычка, которая делает хранилище ценным: когда видите что-то, что понадобится позже, скопируйте это — это и есть вся система архивирования.
Проверьте, что всё работает: npm test запускает тесты; tail -f ~/.omnicontext/daemon.log показывает захваты в реальном времени; а вопрос Клоду «что я только что скопировал?» сразу после копирования — это сквозная проверка.
Что было сложно выяснить
Лимит результата инструмента в ChatGPT — 1 МБ. Возврат полного текста PDF приводил к сбою действия с ошибкой ResponseTooLargeError. Исправлено усечением всего возвращаемого содержимого до 2 000 символов на стороне сервера.
Разрыв MCP-соединения Claude Desktop при запуске. Происходило потому, что HTTP-сервер инициализировался до готовности MCP-транспорта. Исправлено упорядочиванием порядка загрузки и добавлением журналирования повторных попыток.
Динамические страницы, блокирующие скрапинг. cosmos.so, Instagram, порталы за логином — @mozilla/readability извлекает из них ничего. Вместо тихого сбоя система теперь записывает заглушку URL с меткой времени и исходным URL, чтобы LLM всё равно могла подтвердить, что ссылка сохранена.
На Android нет Universal Clipboard. Синхронизация буфера обмена через iCloud работает только на устройствах Apple. Решено маршрутизацией отправок с телефона через HTTP Shortcuts → Cloudflare-туннель → локальный ingest API.
Почему некоторые вещи сделаны именно так
SQLite вместо плоского JSON — в v1 использовался атомарно заменяемый db.json, что работало нормально, пока два процесса (демон + MCP-сервер) не начали гонку на чтение-изменение-запись, и каждый поиск заново парсил весь файл. Встроенный node:sqlite в Node поставляется с FTS5 и WAL, так что исправление добавило ноль зависимостей. Старые файлы db.json мигрируются автоматически.
BM25 вместо эмбеддингов — эмбеддингам нужен либо локальный GPU, либо круговая поездка к API. И то, и другое нарушает ограничение «сначала офлайн». BM25 из FTS5 работает за миллисекунды и хорошо подходит для поиска по личному контексту, где запросы, как правило, конкретны.
Cloudflare Tunnel вместо ngrok — без регистрации, без аккаунта, без лимитов пропускной способности, и URL сохраняется на время сессии. Бесплатный ngrok меняет URL при перезапуске и ограничивает соединения.
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
- AlicenseAqualityDmaintenanceA universal, local-first MCP hub that indexes personal files (documents, code, etc.) and provides private semantic search via hybrid dense+BM25 retrieval, enabling agents like Claude Desktop to query your data without sending it to the cloud.176MIT
- AlicenseAqualityDmaintenanceA local-first MCP server that exposes personal notes and files as unified semantic context for AI agents via vector search and file monitoring.6MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first MCP server that extracts structured knowledge from markdown notes into SQLite with full-text search, enabling AI coding tools to retrieve relevant context offline at zero cost.3MIT
- AlicenseAqualityAmaintenanceA local-first MCP server for shared memory across AI tools, enabling context capture and resume across sessions.26624Apache 2.0
Related MCP Connectors
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Person-owned AI memory that learns, not just stores — portable context for any MCP client.
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
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/arnavbee/memex'
If you have feedback or need assistance with the MCP directory API, please join our Discord server