Skip to main content

Installation

npm install mengram-ai

Quick start

const { MengramClient } = require('mengram-ai');
const m = new MengramClient('om-your-api-key');

// Add memories
await m.add([
    { role: 'user', content: 'Fixed the auth bug using rate limiting.' },
]);

// Semantic search
const results = await m.search('auth issues');

// Unified search — all 3 types
const all = await m.searchAll('deployment issues');
// { semantic: [...], episodic: [...], procedural: [...] }

// Cognitive Profile
const profile = await m.getProfile('alice');
// { system_prompt: "You are talking to Alice..." }

TypeScript

import { MengramClient, SearchResult, Episode, Procedure } from 'mengram-ai';

const m = new MengramClient('om-...');

const results: SearchResult[] = await m.search('preferences');
const events: Episode[] = await m.episodes({ query: 'deployment' });
const procs: Procedure[] = await m.procedures({ query: 'release' });

All methods

MethodDescription
add(messages, options?)Add memories (extracts all 3 types)
addText(text, options?)Add from plain text
search(query, options?)Semantic search
searchAll(query, options?)Unified search (all 3 types)
episodes(options?)Search/list episodic memories
procedures(options?)Search/list procedural memories
procedureFeedback(id, opts)Record success/failure
procedureHistory(id)Version history
getProfile(userId?, opts?)Cognitive Profile
getAll(options?)List all memories
get(name)Get specific entity
delete(name)Delete entity
runAgents(options?)Run memory agents

Multi-user isolation

// Each userId gets its own memory space
await m.add([{ role: 'user', content: 'I prefer dark mode' }], { userId: 'alice' });
await m.add([{ role: 'user', content: 'I prefer light mode' }], { userId: 'bob' });

const alice = await m.searchAll('preferences', { userId: 'alice' });
// Only Alice's memories

Import data

// ChatGPT export (requires jszip)
await m.importChatgpt('~/Downloads/chatgpt-export.zip');

// Obsidian vault
await m.importObsidian('~/Documents/MyVault');

// Text/markdown files
await m.importFiles(['notes.md', 'journal.txt']);