Skip to main content

tanstack-ai-memory-in-memory

Use when wiring inMemory() from @tanstack/ai-memory/in-memory — explains setup, options (embedder, extract, topK/minScore), when to pick it (dev/tests/single-process demos), and what NOT to use it for (multi-process or persistent).

Source facts

Repository
TanStack/ai
Last source activity
September 9, 2026 at 06:08
Detected SKILL.md language
English
Stars
3,199
Forks
366

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
tanstack-ai-memory-in-memory
description
Use when wiring inMemory() from @tanstack/ai-memory/in-memory — explains setup, options (embedder, extract, topK/minScore), when to pick it (dev/tests/single-process demos), and what NOT to use it for (multi-process or persistent).
# In-Memory Memory Adapter Zero-dependency `recall`/`save` adapter backed by a `Map`. Records vanish on process restart. ## When to use it - Local development. - Vitest / Playwright tests. - Single-process demos where users don't need persistence. ## When NOT to use it - Production multi-process deployments — every worker has its own `Map`; users get inconsistent memory. - Anything that needs survival across restarts. For production, use `redis()` (see the `tanstack-ai-memory-redis` skill). ## Setup ```ts import { memoryMiddleware } from '@tanstack/ai-memory' import { inMemory } from '@tanstack/ai-memory/in-memory' const memory = inMemory() // A static scope is fine for dev/tests; derive it from the session in real apps. memoryMiddleware({ adapter: memory, scope: { threadId: 'demo-thread', userId: 'alice' }, }) ``` ## Options `inMemory(options?)` accepts: - `topK` (default 6), `minScore` (default 0.15), `kinds` — recall tuning. - `embedder: { embed(text): Promise<number[]> }` — enable semantic scoring (both `recall` and `save` embed through it). - `extract(turn, scope)` — return derived facts to persist alongside the raw turn (e.g. call an LLM to pull out preferences). Without it, `save` stores the raw user/assistant messages and `recall` scores them lexically + by recency. - `render(hits)` — replace the built-in prompt renderer. ## Capacity The adapter scans every record in a scope per `recall`. Fine up to ~100k records; beyond that, switch to Redis.
View on GitHub