Memex
Memex
로컬 우선, 프라이버시 우선의 LLM용 개인 컨텍스트 엔진.
TypeScript · Swift · MCP · OpenAPI 3.1.0 · Cloudflare Tunnel
대부분의 AI 어시스턴트는 사용자에 대해 아무것도 모릅니다. 새 대화는 매번 빈 상태에서 시작됩니다 — 무엇을 읽고 있었는지, 어떤 링크를 저장했는지, 어떤 메모를 작성했는지, 어떤 파일을 다운로드했는지 알지 못합니다.
Memex는 이 문제를 해결합니다. Mac에서 백그라운드 데몬으로 실행되며 사용자의 디지털 활동을 자동으로 로컬 데이터베이스에 인덱싱합니다. 그 데이터베이스는 표준 인터페이스를 통해 모든 LLM — 데스크톱의 Claude, 휴대폰의 ChatGPT — 에 제공됩니다. 클라우드 저장소 없음. 제3자 서버 없음. 모든 것이 사용자 머신에 남습니다.
캡처하는 것들
스크린샷 — Apple의 Vision 프레임워크(Swift)를 사용해 로컬에서 OCR 처리
클립보드 — 지속적으로 모니터링; YouTube URL은 트랜스크립트를 자동으로 가져오고, Twitter 링크는 게시물 콘텐츠를 스크레이핑
다운로드 — PDF, 마크다운 파일, CSV가 도착 즉시 파싱되어 인덱싱
Apple Notes — AppleScript를 통해 주기적으로 동기화
브라우저 기록 — Safari, Chrome, Arc, Brave, Edge 방문 기록(모든 프로필), 30분마다 동기화, 검색/인증/로컬호스트 노이즈는 필터링
휴대폰의 링크 — HTTP Shortcuts를 통해 Android에서 직접 공유 → 로컬 API로 POST
비밀 정보는 절대 볼트에 들어가지 않습니다. 비밀번호 관리자(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 내장 node:sqlite 사용 — 네이티브 의존성 없음)이며 FTS5 전문 검색 인덱스를 갖추고 있습니다. 검색은 콘텐츠, 제목, 요약, 소스 URL에 대한 BM25 랭킹이며, 최신성과 문서 유형에 곱셈 부스트가 적용됩니다 — 임베딩 없음, API 호출 없음, 완전 오프라인. WAL 모드는 데몬과 MCP 프로세스의 동시 접근을 안전하게 만듭니다. 이전 버전의 기존 db.json은 첫 시작 시 자동으로 마이그레이션됩니다.
두 인터페이스가 데이터베이스를 동시에 제공합니다:
로컬 MCP 서버(stdio 전송) — Claude Desktop 및 Cursor 같은 MCP 호환 편집기용
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권한(시스템 설정 → 개인정보 보호 및 보안): Safari 기록을 위해 node 바이너리에 전체 디스크 접근 권한을, 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"]
}
}
}
index.js가 아닌mcp-standalone.js를 사용하세요 — Claude Desktop에는 쿼리 인터페이스만 필요합니다.index.js는 전체 캡처 데몬이며, 두 번 실행하면 클립보드를 이중 캡처하고 포트 4322를 두고 경합합니다. 동일한 구성이 Cursor 및 모든 MCP 클라이언트에서도 작동합니다.
ChatGPT Custom Actions — 저장소의 openapi.json을 GPT의 액션 스키마로 가져오고, 서버 URL을 Cloudflare 터널로 지정하며, Authorization: Bearer <your OMNICONTEXT_API_KEY>를 사용하세요.
Android 공유 시트 — HTTP Shortcuts에서 https://<your-tunnel>/ingest로 동일한 bearer 헤더와 공유 텍스트를 본문으로 하는 POST를 만들고 공유 메뉴에 추가하세요. 휴대폰에서 공유하는 모든 것이 볼트에 저장됩니다.
사용하기
익힐 명령어가 없습니다. 데몬이 실행되는 동안 그냥 디지털 생활을 하세요 — 링크 복사, 스크린샷 촬영, PDF 다운로드 — 그런 다음 나중에 AI에게 일상적인 언어로 물어보세요:
"지난주에 읽었던 주의력에 관한 그 기사가 뭐였지?"
"Python 인터뷰에 관한 다운로드한 PDF를 찾아줘"
"오늘 아침에 복사한 게 뭐지?"
"그 Karpathy 동영상이 파인튜닝을 다뤘나?" (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로 캡처가 발생하는 모습을 볼 수 있으며, 무언가를 복사한 직후 Claude에게 *"방금 복사한 게 뭐지?"*라고 묻는 것이 종단 간(end-to-end) 확인 방법입니다.
해결하기 까다로웠던 문제들
ChatGPT의 1MB 도구 결과 제한. 전체 PDF 텍스트를 반환하면 ResponseTooLargeError로 액션이 중단되었습니다. 모든 반환 콘텐츠를 서버 측에서 2,000자로 잘라 해결했습니다.
Claude Desktop의 MCP 연결이 시작 시 끊기는 문제. HTTP 서버가 MCP 전송 준비보다 먼저 초기화되어 발생했습니다. 부팅 순서를 조정하고 재시도 로깅을 추가하여 해결했습니다.
스크레이핑을 차단하는 동적 페이지. cosmos.so, Instagram, 로그인 장벽 포털 — @mozilla/readability는 이들에서 아무것도 추출하지 못합니다. 조용히 실패하는 대신, 시스템은 이제 타임스탬프와 소스 URL이 포함된 URL 스텁을 기록하여 LLM이 링크가 저장되었음을 여전히 확인할 수 있게 합니다.
Android에는 Universal Clipboard가 없습니다. iCloud 클립보드 동기화는 Apple 기기에서만 작동합니다. 휴대폰 공유를 HTTP Shortcuts → Cloudflare 터널 → 로컬 수집 API로 라우팅하여 해결했습니다.
특정 방식으로 만든 이유
플랫 JSON 대신 SQLite — v1은 원자적으로 교체되는 db.json을 사용했으며, 두 프로세스(데몬 + MCP 서버)가 읽기-수정-쓰기에서 경합하고 모든 검색이 전체 파일을 다시 파싱할 때까지는 문제없었습니다. Node 내장 node:sqlite가 FTS5와 WAL을 제공하므로 수정에 의존성이 전혀 추가되지 않았습니다. 기존 db.json 파일은 자동으로 마이그레이션됩니다.
임베딩 대신 BM25 — 임베딩은 로컬 GPU 또는 API 왕복이 필요합니다. 둘 다 오프라인 우선 제약을 깨뜨립니다. FTS5의 BM25는 밀리초 단위로 실행되며, 쿼리가 구체적인 경향이 있는 개인 컨텍스트 검색에 잘 맞습니다.
ngrok 대신 Cloudflare Tunnel — 가입 없음, 계정 없음, 대역폭 제한 없음, 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