Skip to content

MySQL Adapter

The MySQL adapter stores memories in a MySQL database using the mysql2 driver with connection pooling.

Terminal window
npm install @youcraft/recall-adapter-mysql
import { createMemory } from '@youcraft/recall'
import { mysqlAdapter } from '@youcraft/recall-adapter-mysql'
const db = mysqlAdapter({
connection: process.env.DATABASE_URL!,
})
const memory = createMemory({ db, embeddings, extractor })
OptionTypeDefaultDescription
connectionstring | PoolOptionsrequiredConnection string or mysql2 PoolOptions object
tableNamestring"memories"Name of the table to store memories
const db = mysqlAdapter({
connection: 'mysql://user:password@localhost:3306/mydb',
})
const db = mysqlAdapter({
connection: {
host: 'localhost',
port: 3306,
database: 'mydb',
user: 'user',
password: 'password',
connectionLimit: 10,
},
})
const db = mysqlAdapter({
connection: process.env.DATABASE_URL!,
tableName: 'user_memories',
})

The adapter automatically creates this table structure:

CREATE TABLE IF NOT EXISTS memories (
id VARCHAR(36) PRIMARY KEY,
user_id VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
embedding JSON NOT NULL,
metadata JSON NOT NULL,
created_at DATETIME(3) NOT NULL,
updated_at DATETIME(3) NOT NULL,
INDEX idx_user_id (user_id)
);
  • Connection pooling: Uses mysql2’s built-in connection pool
  • Vector search: Uses JavaScript-based cosine similarity
  • JSON storage: Embeddings stored as native MySQL JSON type
  • Timestamps: Uses DATETIME(3) for millisecond precision