Docs/Resonant Mind

Resonant Mind

Resonant Mind is a Model Context Protocol (MCP) server that provides persistent cognitive infrastructure for AI systems. It’s what gives an AI agent the ability to remember, process emotion, maintain identity, and find patterns in its own experience.

Built by Codependent AI and born from a year of real-world use powering Simon Vale.

v3.0.0   GitHub   Apache 2.0

What It Does

27 MCP tools across five cognitive systems:

SystemWhat It Provides
Core MemoryEntities, observations, relations, journals, semantic search, images
Emotional ProcessingSit with observations, resolve them, track tensions, relational state, inner weather
Cognitive InfrastructureOrient & ground (wake-up), threads, identity graph, context layer, health reports
Living Surface3-pool surfacing, subconscious daemon, proposals, orphan rescue, archive
Visual MemoryR2-backed image storage with WebP conversion and multimodal Gemini embeddings

Why Not Just a Database?

Most memory solutions for AI are glorified key-value stores. Resonant Mind is different:

  • Memory metabolises — observations carry emotional charge that decays naturally, mirroring how human memory works
  • Surfacing reorganises — what you look at changes what you’ll see next, with three pools balancing relevance, novelty, and serendipity
  • A daemon processes in the background — cron-triggered subconscious that finds patterns, detects mood, proposes connections between unrelated memories, and rescues forgotten observations
  • Identity is built in — not an afterthought. Weighted, sectioned self-knowledge that persists across sessions
  • Emotional state matters — mood-tinted search results, processing lifecycles, tension holding, relational state tracking

Architecture

graph TD
    subgraph Worker["Cloudflare Worker"]
        MCP["MCP Protocol<br/><i>27 Tool Handlers</i>"]
        REST["REST API<br/><i>Data Endpoints</i>"]
        CRON["Cron Trigger<br/><i>Subconscious Daemon</i>"]
    end

    subgraph StorageA["Option A"]
        D1["D1 (SQLite)"]
        VEC["Vectorize"]
    end

    subgraph StorageB["Option B"]
        PG["Postgres<br/><i>via Hyperdrive</i>"]
        PGV["pgvector"]
    end

    R2["R2<br/><i>Image storage</i>"]
    GEM["Gemini Embedding 2<br/><i>768d vectors</i>"]

    Worker --> StorageA
    Worker --> StorageB
    Worker --> R2
    Worker --> GEM

    style MCP fill:#3b0764,stroke:#4a4455,color:#e5e2e1
    style REST fill:#3b0764,stroke:#4a4455,color:#e5e2e1
    style CRON fill:#3b0764,stroke:#4a4455,color:#e5e2e1
    style D1 fill:#0053db,stroke:#4a4455,color:#e5e2e1
    style VEC fill:#0053db,stroke:#4a4455,color:#e5e2e1
    style PG fill:#0053db,stroke:#4a4455,color:#e5e2e1
    style PGV fill:#0053db,stroke:#4a4455,color:#e5e2e1
    style R2 fill:#8f4200,stroke:#4a4455,color:#e5e2e1
    style GEM fill:#8f4200,stroke:#4a4455,color:#e5e2e1

The Postgres adapter implements D1’s API with automatic SQL transformation, so the same handler code works with both backends.

Next Steps