Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Supports 5+ embedding providers: OpenAI, NVIDIA NIM, Ollama, Azure, Together, or any OpenAI-compatible endpoint.
Key Features
Hybrid Search (Vector + Keyword Fallback)
Uses semantic similarity when embeddings are configured; falls back to tokenized keyword matching when they're not:
// With embeddings → vector cosine similarity search// Without embeddings → normalized keyword matching (stop word removal, lowercase, dedup)const results = await mem.search('agent', 'security vulnerabilities');
Keyword search uses an inverted token index for O(1) lookups. When >500 memories exist, vector search pre-filters candidates using token overlap before cosine similarity (candidate narrowing).
Biological Decay
Memories fade over time unless reinforced. Old, unaccessed memories naturally lose relevance:
await mem.decay(); // Run maintenance — archive/delete stale memoriesawait mem.reinforce(id); // Boost a memory to resist decay
Memory Graph (Zettelkasten Linking)
Every memory is automatically linked to related memories by semantic similarity:
const conflicts = await mem.detectConflicts('agent', 'Server uses port 443');
// Returns: { conflicts: [...], updates: [...], novel: true/false }await mem.evolve('agent', 'Server now uses port 8080');
// Archives old fact, stores new one with link to predecessor
Multi-Agent Support
await mem.store('kuro', 'Vuln found in API gateway');
await mem.store('maki', 'API gateway deployed to prod');
const all = await mem.searchAll('API gateway'); // Cross-agent search
Supabase key guidance: Prefer the anon key with Row Level Security (RLS) policies over the service role key. The service key bypasses RLS and grants full access to all stored memories. Only use it for admin/migration tasks.
Local-only mode (default): Memories are stored as JSON at ./neolata-mem-data/graph.json (relative to CWD). No data leaves your machine. Keyword search works without any API keys.
With embeddings/extraction/LLM: When you configure an external provider (OpenAI, NIM, Ollama, etc.), your memory text is sent to that provider's API for embedding or extraction. This is opt-in — you must explicitly provide an API key and base URL.
Mode
Data sent externally?
Storage location
Default (no config)
❌ No
./neolata-mem-data/graph.json
Ollama embeddings
❌ No (local)
./neolata-mem-data/graph.json
OpenAI/NIM embeddings
⚠️ Memory text → provider
./neolata-mem-data/graph.json
Supabase storage
⚠️ All data → Supabase
Supabase PostgreSQL
LLM conflict resolution
⚠️ Memory text → provider
Storage unchanged
To keep all data local: Use Ollama for embeddings and JSON storage. No API keys needed for keyword-only search.