Skip to main content
Glama

Memex

Eine lokale, datenschutzorientierte persönliche Kontext-Engine für LLMs.

TypeScript · Swift · MCP · OpenAPI 3.1.0 · Cloudflare Tunnel


Die meisten KI-Assistenten wissen nichts über dich. Jedes neue Gespräch beginnt bei null – sie wissen nicht, was du gelesen hast, welche Links du gespeichert hast, welche Notizen du geschrieben hast oder welche Dateien du heruntergeladen hast.

Memex behebt das. Es ist ein Hintergrund-Daemon, der auf deinem Mac läuft und deine digitale Aktivität passiv in einer lokalen Datenbank indexiert. Diese Datenbank wird dann über standardisierte Schnittstellen jedem LLM zur Verfügung gestellt – Claude auf deinem Desktop, ChatGPT auf deinem Telefon. Kein Cloud-Speicher. Keine Drittanbieter-Server. Alles bleibt auf deinem Rechner.


Was es erfasst

  • Screenshots – lokal mit Apples Vision-Framework (Swift) per OCR erfasst

  • Zwischenablage – kontinuierlich überwacht; YouTube-URLs rufen automatisch Transkripte ab, Twitter-Links scrapen den Inhalt von Beiträgen

  • Downloads – PDFs, Markdown-Dateien, CSVs werden beim Eintreffen geparst und indexiert

  • Apple Notizen – regelmäßig per AppleScript synchronisiert

  • Browserverlauf – Besuche in Safari, Chrome, Arc, Brave und Edge (alle Profile), synchronisiert alle 30 Minuten, mit gefiltertem Such-/Auth-/Localhost-Rauschen

  • Links von deinem Telefon – direkt von Android über HTTP Shortcuts → POST an die lokale API geteilt

Geheimnisse gelangen nie in den Tresor. Kopien von Passwortmanagern (1Password, Bitwarden, KeePass, …) werden per App-Erkennung und dem org.nspasteboard.ConcealedType-Marker übersprungen, und geheimnisartige Inhalte – AWS-Keys, GitHub-/Slack-/Stripe-Tokens, JWTs, private Schlüsselblöcke, PASSWORD=-Zuweisungen, generierte passwortartige Zeichenfolgen – werden vor der Speicherung gefiltert.

Zwischenablage-Rauschen ist selbstreinigend: exakte Duplikate werden zusammengeführt und rohe Zwischenablage-Einträge verfallen nach 30 Tagen (konfigurierbar über OMNICONTEXT_CLIPBOARD_MAX_AGE_DAYS / OMNICONTEXT_CLIPBOARD_MAX_COUNT). Reichhaltige Assets – Notizen, Downloads, Screenshots, Verlauf – werden nie entfernt.


Related MCP server: memory-mcp

So funktioniert es

[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

Die Datenbank ist SQLite (über das eingebaute node:sqlite von Node – keine nativen Abhängigkeiten) mit einem FTS5-Volltextindex. Die Suche ist BM25-Ranking über Inhalt, Titel, Zusammenfassung und Quell-URL, mit multiplikativen Aktualitäts- und Dokumenttyp-Boosts – keine Embeddings, keine API-Aufrufe, vollständig offline. Der WAL-Modus macht den gleichzeitigen Zugriff von Daemon- und MCP-Prozessen sicher. Eine vorhandene db.json aus älteren Versionen wird beim ersten Start automatisch migriert.

Zwei Schnittstellen bedienen die Datenbank gleichzeitig:

  • Ein lokaler MCP-Server (Stdio-Transport) für Claude Desktop und MCP-kompatible Editoren wie Cursor

  • Ein HTTP-Server, der über einen kostenlosen Cloudflare-Tunnel für ChatGPT Custom Actions und mobile Erfassung bereitgestellt wird


Einrichtung

Anforderungen: macOS (Erfassung ist macOS-nativ: Vision-OCR, AppleScript, launchd) und Node.js ≥ 22.5 (Memex verwendet das eingebaute node:sqlite; bei älterem Node wird mit einer klaren Meldung beendet).

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

Berechtigungen (Systemeinstellungen → Datenschutz & Sicherheit): Gewähre der node-Binärdatei Vollen Festplattenzugriff für den Safari-Verlauf und Automation → Notizen für die Apple-Notizen-Synchronisierung. Chromium-Browser (Chrome, Brave, Arc, Edge) funktionieren ohne all das.

Claude Desktop – füge zu ~/Library/Application Support/Claude/claude_desktop_config.json hinzu und starte dann Claude Desktop neu:

{
  "mcpServers": {
    "memex": {
      "command": "node",
      "args": ["/path/to/memex/dist/mcp-standalone.js"]
    }
  }
}

Verwende mcp-standalone.js, nicht index.js – Claude Desktop benötigt nur die Abfrageschnittstelle. index.js ist der vollständige Erfassungs-Daemon; wenn du ihn zweimal ausführst, erfasst er deine Zwischenablage doppelt und streitet um Port 4322. Dieselbe Konfiguration funktioniert für Cursor und jeden MCP-Client.

ChatGPT Custom Actions – importiere openapi.json aus dem Repository in das Aktionsschema deines GPT, wobei die Server-URL auf deinen Cloudflare-Tunnel zeigt, mit Authorization: Bearer <your OMNICONTEXT_API_KEY>.

Android-Share-Sheet – erstelle in HTTP Shortcuts einen POST an https://<your-tunnel>/ingest mit demselben Bearer-Header und dem geteilten Text als Body und füge ihn dem Teilen-Menü hinzu. Alles, was du von deinem Telefon teilst, landet im Tresor.


Verwendung

Es gibt keine Befehle zu lernen. Sobald der Daemon läuft, lebe einfach dein digitales Leben – kopiere Links, mache Screenshots, lade PDFs herunter – und frage später deine KI in einfacher Sprache danach:

  • „Was war das für ein Artikel über Aufmerksamkeit, den ich letzte Woche gelesen habe?"

  • „Finde das PDF, das ich über Python-Interviews heruntergeladen habe"

  • „Was habe ich heute Morgen kopiert?"

  • „Hat dieses Karpathy-Video Fine-Tuning behandelt?" (YouTube-Links indexieren ihre Transkripte automatisch)

  • „Lösche den Zwischenablage-Eintrag mit meiner Adresse"

Claude entdeckt diese Werkzeuge über MCP und ruft sie selbstständig auf: search_vault, get_recent_assets, get_asset_by_id, delete_asset, sync_browser_history, sync_notes_now, sync_recent_files. Die eine Gewohnheit, die den Tresor wertvoll macht: Wenn du etwas siehst, das du später brauchst, kopiere es – das ist das gesamte Ablagesystem.

Überprüfe, ob es funktioniert: npm test führt die Testsuite aus; tail -f ~/.omnicontext/daemon.log zeigt Erfassungen in Echtzeit; und Claude direkt nach dem Kopieren zu fragen „Was habe ich gerade kopiert?" ist der End-to-End-Check.


Dinge, die mühsam herauszufinden waren

ChatGPTs 1-MB-Tool-Ergebnislimit. Die Rückgabe des vollständigen PDF-Texts ließ die Aktion mit einem ResponseTooLargeError abstürzen. Behoben, indem alle zurückgegebenen Inhalte serverseitig auf 2.000 Zeichen gekürzt werden.

Die MCP-Verbindung von Claude Desktop bricht beim Start ab. Das geschah, weil der HTTP-Server initialisiert wurde, bevor der MCP-Transport bereit war. Behoben durch die Reihenfolge der Startsequenz und zusätzliches Retry-Logging.

Dynamische Seiten, die Scraping blockieren. cosmos.so, Instagram, Login-Portale – @mozilla/readability extrahiert nichts aus ihnen. Anstatt still zu scheitern, schreibt das System jetzt einen URL-Stub mit Zeitstempel und Quell-URL, damit das LLM weiterhin bestätigen kann, dass der Link gespeichert wurde.

Android hat keine universelle Zwischenablage. Die iCloud-Zwischenablage-Synchronisierung funktioniert nur auf Apple-Geräten. Gelöst, indem Telefonfreigaben stattdessen über HTTP Shortcuts → Cloudflare-Tunnel → lokale Ingest-API geleitet werden.


Warum bestimmte Dinge so gebaut wurden, wie sie sind

SQLite statt flachem JSON – v1 verwendete eine atomar ausgetauschte db.json, was in Ordnung war, bis zwei Prozesse (Daemon + MCP-Server) beim Read-Modify-Write um die Wette liefen und jede Suche die gesamte Datei neu parste. Das eingebaute node:sqlite von Node enthält FTS5 und WAL, daher fügte die Lösung null Abhängigkeiten hinzu. Alte db.json-Dateien migrieren automatisch.

BM25 statt Embeddings – Embeddings benötigen entweder eine lokale GPU oder einen API-Roundtrip. Beides verletzt die Offline-First-Einschränkung. Das BM25 von FTS5 läuft in Millisekunden und funktioniert gut für die persönliche Kontextabfrage, bei der die Abfragen tendenziell spezifisch sind.

Cloudflare-Tunnel statt ngrok – keine Anmeldung, kein Konto, keine Bandbreitenlimits, und die URL bleibt für die Sitzung bestehen. Kostenloses ngrok rotiert URLs beim Neustart und drosselt Verbindungen.

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