Storage Backends
SQLite, LibSQL, and custom storage backends
the-brain supports pluggable storage backends via the StorageBackend interface.
Built-in Backends
SQLite (Default)
Local bun:sqlite database at ~/.the-brain/global/brain.db.
{
"backends": { "storage": "sqlite" }
}LibSQL (Turso)
Remote database for multi-machine setups.
{
"backends": { "storage": "libsql" }
}the-brain backend set --slot storage --backend libsqlRequires @the-brain/storage-libsql package. Set LIBSQL_URL and LIBSQL_AUTH_TOKEN env vars.
StorageBackend Interface
interface StorageBackend {
insertMemory(memory: MemoryFragment): Promise<void>;
getMemoriesByLayer(layer: MemoryLayer, limit?: number): Promise<MemoryFragment[]>;
getSurprisingMemories(threshold: number): Promise<MemoryFragment[]>;
getStats(): Promise<BrainStats>;
close(): void;
}Writing a Custom Backend
import { definePlugin } from "@the-brain/core";
import type { StorageBackend, MemoryFragment, MemoryLayer } from "@the-brain/core";
export class PostgresStorage implements StorageBackend {
async insertMemory(memory: MemoryFragment) { /* ... */ }
async getMemoriesByLayer(layer: MemoryLayer, limit = 100) { /* ... */ }
async getSurprisingMemories(threshold: number) { /* ... */ }
async getStats() { /* ... */ }
close() { /* ... */ }
}
export default definePlugin({
name: "storage-postgres",
setup(hooks) {
const backend = new PostgresStorage();
hooks.hook("storage:register", () => backend);
},
});