Skip to main content
Glama
storage-backends.md5.26 kB
# Storage Backends - Complete Reference ## Backend Comparison | Backend | Performance | Use Case | Installation | |---------|-------------|----------|--------------| | **Hybrid** ⚡ | **Fast (5ms read)** | **🌟 Production (Recommended)** | `install.py --storage-backend hybrid` | | **Cloudflare** ☁️ | Network dependent | Cloud-only deployment | `install.py --storage-backend cloudflare` | | **SQLite-Vec** 🪶 | Fast (5ms read) | Development, single-user local | `install.py --storage-backend sqlite_vec` | ## Hybrid Backend (v6.21.0+) - RECOMMENDED The **Hybrid backend** provides the best of both worlds - **SQLite-vec speed with Cloudflare persistence**. ### Configuration ```bash # Enable hybrid backend export MCP_MEMORY_STORAGE_BACKEND=hybrid # Hybrid-specific configuration export MCP_HYBRID_SYNC_INTERVAL=300 # Background sync every 5 minutes export MCP_HYBRID_BATCH_SIZE=50 # Sync 50 operations at a time export MCP_HYBRID_SYNC_ON_STARTUP=true # Initial sync on startup # Drift detection configuration (v8.25.0+) export MCP_HYBRID_SYNC_UPDATES=true # Enable metadata sync (default: true) export MCP_HYBRID_DRIFT_CHECK_INTERVAL=3600 # Seconds between drift checks (default: 1 hour) export MCP_HYBRID_DRIFT_BATCH_SIZE=100 # Memories to check per scan (default: 100) # Requires Cloudflare credentials (same as cloudflare backend) export CLOUDFLARE_API_TOKEN="your-token" export CLOUDFLARE_ACCOUNT_ID="your-account" export CLOUDFLARE_D1_DATABASE_ID="your-d1-id" export CLOUDFLARE_VECTORIZE_INDEX="mcp-memory-index" ``` ### Key Benefits - ✅ **5ms read/write performance** (SQLite-vec speed) - ✅ **Zero user-facing latency** - Cloud sync happens in background - ✅ **Multi-device synchronization** - Access memories everywhere - ✅ **Graceful offline operation** - Works without internet, syncs when available - ✅ **Automatic failover** - Falls back to SQLite-only if Cloudflare unavailable - ✅ **Drift detection (v8.25.0+)** - Automatic metadata sync prevents data loss ### Architecture - **Primary Storage**: SQLite-vec (all user operations) - **Secondary Storage**: Cloudflare (background sync) - **Background Service**: Async queue with retry logic and health monitoring ## Database Lock Prevention (v8.9.0+) **CRITICAL**: After adding `MCP_MEMORY_SQLITE_PRAGMAS` to `.env`, you **MUST restart all servers**: ```bash # Add to .env MCP_MEMORY_SQLITE_PRAGMAS=busy_timeout=15000,cache_size=20000 # Restart HTTP server kill <PID> uv run python scripts/server/run_http_server.py # Restart MCP servers # Use /mcp in Claude Code to reconnect, or restart Claude Desktop # Verify # Check logs for: "Custom pragma from env: busy_timeout=15000" ``` **Why restart is required**: SQLite pragmas are **per-connection**, not global. Long-running servers (days/weeks old) won't pick up new `.env` settings automatically. **Symptoms of missing pragmas:** - "database is locked" errors despite v8.9.0+ installation - `PRAGMA busy_timeout` returns `0` instead of `15000` - Concurrent HTTP + MCP access fails ## Graph Table Architecture (v8.51.0+) ### Graph Table: Local-Only (NOT Synced to Cloudflare) **Rationale:** - **Derived data**: Graph associations can be reconstructed from memory metadata - **Performance**: Local graph queries are 30x faster (5ms vs 150ms) - **Complexity**: Cloudflare doesn't have native graph capabilities (no recursive CTEs in D1) - **Restoration**: Can rebuild graph table locally from association metadata in memories **Implementation:** - Graph table exists only in SQLite-vec backend - Associations stored as regular memories with `tags=['association', 'discovered']` - Memory metadata contains: `{similarity, connection_types, source_hash, target_hash}` - Cloudflare syncs the **memory objects**, NOT the graph table ### Cluster Summaries: Sync to Cloudflare **Rationale:** - **User-facing content**: Summaries contain valuable semantic information - **Multi-device access**: Users should see cluster summaries on all devices - **Restoration strategy**: Graph table can be rebuilt from synced association memories **Recovery Process** (new device or SQLite database deleted): 1. Pull all memories from Cloudflare (including associations and cluster summaries) 2. Extract association memories (tag='association') 3. Rebuild graph table locally from association metadata (~2-3 seconds for 1,435 associations) 4. Graph queries immediately functional (5ms performance restored) ## Installer Enhancements (v6.16.0+) - **Interactive backend selection** with usage-based recommendations - **Automatic Cloudflare credential setup** and `.env` file generation - **Connection testing** during installation to validate configuration - **Graceful fallbacks** from cloud to local backends if setup fails ## Multi-PC Configuration See [`.claude/directives/README.md`](README.md) for multi-PC sync guidelines. Key points: **Must match across all PCs:** - Cloudflare credentials (API token, account ID, database ID, vectorize index) - Content length limits (5000 for both Cloudflare and Hybrid) - Graph storage mode (graph_only) **Can differ per PC:** - SQLite pragmas (adjust per machine specs) - Archive paths (OS-specific) - Cache directories (local storage)

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/doobidoo/mcp-memory-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server