
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@zensation/ai-sdk
Advanced tools
Vercel AI SDK memory middleware: agent memory that recalls before a model call and stores the turn after it. Zero runtime dependencies.
Status: early release. The option shape may still change before 1.0. The memory layers underneath are the ones the ZenBrain paper describes and the benchmarks measure.
ZenBrain as Vercel AI SDK middleware. Recall what is relevant before the model call, store the turn after it. Works with any provider the AI SDK supports, because it never touches the provider.
npm install @zensation/ai-sdk @zensation/core @zensation/adapter-sqlite
import { generateText, wrapLanguageModel } from 'ai';
import { openai } from '@ai-sdk/openai';
import { MemoryCoordinator } from '@zensation/core';
import { SqliteAdapter } from '@zensation/adapter-sqlite';
import { zenbrainMemory } from '@zensation/ai-sdk';
const coordinator = new MemoryCoordinator({
storage: new SqliteAdapter({ filename: './memory.db' }),
});
const model = wrapLanguageModel({
model: openai('gpt-5'),
middleware: zenbrainMemory({ coordinator }),
});
await generateText({ model, prompt: 'Anna moved to Hamburg in March.' });
// A later call, possibly days later, in a different process:
const { text } = await generateText({ model, prompt: 'Where does Anna live?' });
Between the two calls nothing was passed by hand. The second prompt arrives at the model with a system message in front of it:
Relevant memories from earlier sessions:
- Anna moved to Hamburg in March.
The middleware is a plain object; wrapLanguageModel is called by you. Nothing here is
imported from ai at runtime — only its types are. So this package installs nothing:
| Package | Runtime dependencies |
|---|---|
@zensation/ai-sdk | 0 |
@zensation/core | 1 (@zensation/algorithms) |
@zensation/algorithms | 0 |
That claim is checked in CI on every push against the packed tarballs rather than the source tree.
zenbrainMemory({
coordinator, // required — you own its lifecycle
recall: { // or false to switch searching off
limit: 5, // how many memories to inject
layers: ['semantic', 'core'], // which layers to search
minConfidence: 0.6, // drop anything below this
taskType: 'coding', // context-dependent retrieval hint
},
store: { // or false to switch writing off
user: true, // store the user's message (default)
assistant: false, // store the reply too (default off)
context: 'work', // context domain for what gets stored
},
header: 'Relevant memories from earlier sessions:',
onError: (err, phase) => console.warn(`[zenbrain] ${phase} failed`, err),
});
Replies are not stored by default. A model's answer is derived from the question and
cheap to regenerate; storing both sides doubles the volume and fills semantic memory with
your own model's phrasing. Turn it on with store: { assistant: true } when the answer
carries information the question does not.
Failures are swallowed. If recall or store throws, the call goes through anyway,
unmodified. A memory layer that breaks a chat is worse than one that forgets. Pass
onError to see what is being hidden — without it, failures are silent by design.
Routing on store is automatic: a general statement becomes a semantic fact, a narrated event an episode, a sequence of instructions a procedure. Which layer a memory lands in decides how it decays and whether it survives consolidation. The seven layers, their retention rules and the algorithms behind them are documented in the main README.
Consolidation does not run on its own. Call coordinator.consolidate() on a schedule that
suits your application.
streamText works the same way and passes the stream through untouched:
const result = streamText({
model: wrapLanguageModel({
model: openai('gpt-5'),
middleware: zenbrainMemory({ coordinator, store: { assistant: true } }),
}),
prompt: 'Which theme should I use?',
});
for await (const chunk of result.textStream) process.stdout.write(chunk);
ZenBrain is a seven-layer, neuroscience-derived memory architecture for LLM agents, built as zero-dependency TypeScript and published under Apache-2.0. On LongMemEval-500 three of nine head-to-head answer-quality comparisons hold against Letta, Mem0 and A-Mem — all three against A-Mem, the remaining six are ties, none lost (three competitors x three LLM judges, Bonferroni-corrected, version-matched) — reaching 91.3% of a full-context oracle's binary-judge accuracy at 1/109.6 of the per-query token cost.
@zensation/algorithms · @zensation/core · @zensation/adapter-postgres · @zensation/adapter-sqlite · @zensation/mcp · @zensation/ai-sdk · @zensation/cliLicense: Apache-2.0
FAQs
Vercel AI SDK memory middleware: agent memory that recalls before a model call and stores the turn after it. Zero runtime dependencies.
The npm package @zensation/ai-sdk receives a total of 138 weekly downloads. As such, @zensation/ai-sdk popularity was classified as not popular.
We found that @zensation/ai-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.