Skip to main content
Glama

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이 바뀌고 연결을 제한합니다.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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