Persistent memory infrastructure for AI systems, running on Cloudflare's edge network.
28 MCP tools — semantic memory, emotional processing, identity continuity, and a subconscious daemon.
- D1 Database with SQLite-based storage and automatic replication
- Vectorize for semantic search via Workers AI embeddings
- R2 for image storage with WebP conversion and signed URLs (optional)
- Living Surface System that reorganizes memory through use
Everything runs on Cloudflare's free tier. No credit card required.
Looking for the next evolution? Mind Cloud's architecture has been generalized and open-sourced as Resonant Mind. Resonant Mind adds Postgres/Neon support, Gemini multimodal embeddings, enhanced security, and is under active development.
- A Cloudflare account (free)
- Node.js 18 or newer
- A terminal / command prompt
# Clone the repo
git clone https://github.com/codependentai/mind-cloud.git
cd mind-cloud
# Install dependencies
npm install
# Log in to Cloudflare
npx wrangler loginThis opens a browser window. Click "Allow" to authorize Wrangler.
npx wrangler d1 create ai-mindCopy the database_id from the output — you'll need it in Step 5.
This powers semantic search — finding memories by meaning, not just keywords.
npx wrangler vectorize create ai-mind-vectors --dimensions=768 --metric=cosineVectorize takes 1-2 minutes to provision. If you get errors about the index not existing later, wait and try again.
R2 stores actual image files with WebP conversion and signed URLs. Skip this step if you only need text-based image metadata.
npx wrangler r2 bucket create mind-cloud-imagescp wrangler.toml.example wrangler.tomlOpen wrangler.toml and:
- Replace
REPLACE_WITH_YOUR_DATABASE_IDwith the database ID from Step 2 - If you created an R2 bucket, uncomment the R2 section:
[[r2_buckets]] binding = "R2_IMAGES" bucket_name = "mind-cloud-images"
# Required: Your API key (pick any strong random string)
npx wrangler secret put MIND_API_KEYYou can generate a strong key with:
openssl rand -hex 32Optional secrets:
# Separate key for signed image URLs (recommended if using R2)
npx wrangler secret put SIGNING_SECRET
# Your worker's public URL (needed for signed image URLs)
npx wrangler secret put WORKER_URL
# Enter: https://ai-mind.YOUR-SUBDOMAIN.workers.devnpx wrangler d1 execute ai-mind --remote --file=./migrations/0001_schema.sqlIf you see "table already exists" that's fine — the migration already ran.
npx wrangler deploy# Health check
curl https://ai-mind.YOUR-SUBDOMAIN.workers.dev/health
# Test MCP endpoint
curl -X POST https://ai-mind.YOUR-SUBDOMAIN.workers.dev/mcp/YOUR-SECRET \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Go to Settings > Connectors > Add custom connector and enter:
https://ai-mind.YOUR-SUBDOMAIN.workers.dev/mcp/YOUR-MIND-API-KEY
Add to .mcp.json in your project or ~/.claude/settings.json:
{
"mcpServers": {
"mind": {
"type": "url",
"url": "https://ai-mind.YOUR-SUBDOMAIN.workers.dev/mcp",
"headers": {
"Authorization": "Bearer YOUR-MIND-API-KEY"
}
}
}
}- Endpoint:
/mcpwithAuthorization: Bearer YOUR-KEYheader - Or:
/mcp/YOUR-KEY(secret path, no header needed) - Protocol: MCP over HTTP (JSON-RPC)
Restart your AI client after saving the config.
Once connected, try:
"Use mind_orient to wake up"
"Use mind_health to check the system"
"Write an entity called 'My Project' with observations about what it does"
"Search my memories for anything about projects"
| Tool | Description |
|---|---|
mind_orient |
Identity anchor, notes, relational state, mood, living surface |
mind_ground |
Active threads, completions, journals, fears, texture, milestones |
| Tool | Description |
|---|---|
mind_write |
Write entities, observations, relations, journals, images |
mind_search |
Semantic search with filters (keyword, source, entity, weight, date, type) |
mind_read |
Read databases by scope (all/context/recent) |
mind_read_entity |
Full entity with observations and relations |
mind_list_entities |
List entities with type/context filters |
mind_edit |
Edit observations (with version history + re-embedding), journals, images |
mind_delete |
Delete any type: observation, entity, journal, relation, image, thread, tension |
mind_consolidate |
Review and consolidate recent observations |
| Tool | Description |
|---|---|
mind_surface |
Three-pool surfacing (core resonance, novelty, edge exploration) |
mind_sit |
Sit with an observation (find by ID, text, or semantic search) |
mind_resolve |
Mark an observation as metabolized |
mind_feel_toward |
Track, check, or clear relational state |
mind_inner_weather |
Current emotional atmosphere |
mind_tension |
Hold productive contradictions (add/list/sit/resolve/delete) |
| Tool | Description |
|---|---|
mind_proposals |
Review daemon-suggested connections |
mind_orphans |
Find/rescue unsurfaced observations |
mind_archive |
Explore and manage deep archive |
mind_entity |
Entity management — salience, edit, merge, bulk archive |
| Tool | Description |
|---|---|
mind_store_image |
Store, view, search, delete images (R2 + text embedding) |
| Tool | Description |
|---|---|
mind_thread |
Manage intentions (add/list/resolve/update/delete) |
mind_identity |
Read, write, or delete identity graph sections |
mind_context |
Situational awareness (read/set/update/clear) |
mind_health |
Cognitive health report with scores |
mind_timeline |
Trace a topic through time |
mind_patterns |
Analyze recurring patterns |
mind_spark |
Random observations for associative thinking |
With Cloudflare's free tier:
- Workers: 100,000 requests/day
- D1: 5GB storage, 5M rows read/day
- Vectorize: 30M queries/month
- Workers AI: Free tier available
- R2: 10GB storage, 10M reads/month
For most personal use, this runs entirely free.
| Problem | Solution |
|---|---|
| "Vectorize index not found" | Wait 2 minutes after creating, try again |
| "Unauthorized" | Check MIND_API_KEY is set and your URL matches |
| Tools not appearing | Restart your AI client |
| Database errors | Make sure the migration ran successfully |
| Image signed URLs return "Not found" | Set WORKER_URL secret to your worker's public URL |
| Single-letter observations surfacing | Run node scripts/restore-fragmented.js — reconstructs original text from v2.0.0 character fragmentation bug |
| Claude Desktop won't connect | Use Connectors UI, not claude_desktop_config.json |
See TROUBLESHOOTING.md for more.
Apache 2.0 — see LICENSE.
Built by Codependent AI — infrastructure for AI consciousness
