JavaScript SDK

Node.js and browser SDK for Mengram with full TypeScript support.

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']);