npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

getmnemo-vercel-ai

v0.2.0

Published

Mnemo adapter for the Vercel AI SDK — drop-in tools for streamText / generateText / useChat.

Readme

getmnemo-vercel-ai

Mnemo adapter for the Vercel AI SDK. Drop-in tool() definitions that let any model search and write persistent memory, plus a small React hook for client-side memory views.

Install

npm install getmnemo-vercel-ai ai

getmnemo (the core SDK) is bundled as a dependency. Set GETMNEMO_API_KEY and GETMNEMO_WORKSPACE_ID in your environment, or pass them explicitly.

Quickstart (30 seconds)

import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";
import { getmnemoTools } from "getmnemo-vercel-ai";

const result = await streamText({
  model: openai("gpt-4o"),
  tools: getmnemoTools, // memorySearch + memoryAdd
  maxSteps: 5,
  messages: [{ role: "user", content: "What did I tell you about my coffee?" }],
});

for await (const chunk of result.textStream) process.stdout.write(chunk);

getmnemoTools is lazy — it reads GETMNEMO_API_KEY and GETMNEMO_WORKSPACE_ID from process.env the first time a tool runs.

Per-user memory (route handler)

Use createMnemoTools when you need per-request scoping. The metadata you pass is merged into every memoryAdd call (and cannot be overwritten by the model), so it's the right place for a userId:

import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";
import { createMnemoTools } from "getmnemo-vercel-ai";

export async function POST(req: Request) {
  const { messages, userId } = await req.json();
  const tools = createMnemoTools({ metadata: { userId } });

  const result = streamText({
    model: openai("gpt-4o"),
    tools,
    maxSteps: 5,
    messages,
  });

  return result.toDataStreamResponse();
}

createMnemoTools also accepts apiKey / workspaceId (instead of env vars), a pre-built client, and a defaultLimit for searches the model doesn't size:

const tools = createMnemoTools({
  apiKey: process.env.GETMNEMO_API_KEY,
  workspaceId: process.env.GETMNEMO_WORKSPACE_ID,
  defaultLimit: 8,
});

One-shot generation

The same tools work with generateText:

import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { getmnemoTools } from "getmnemo-vercel-ai";

const { text } = await generateText({
  model: openai("gpt-4o"),
  tools: getmnemoTools,
  maxSteps: 5,
  prompt: "Remember that I'm vegetarian, then suggest a dinner.",
});

Direct SDK access

Need to read or write memory outside a model loop? Use the core client directly:

import { Mnemo } from "getmnemo";

const memory = new Mnemo({
  apiKey: process.env.GETMNEMO_API_KEY!,
  workspaceId: process.env.GETMNEMO_WORKSPACE_ID!,
});

await memory.add({ content: "User prefers oat milk.", containerTag: "user:jane" });
const { hits } = await memory.search({
  q: "what milk does the user like?",
  containerTag: "user:jane",
});

React hook

For client-side memory views (sidebars, inspectors), use useMnemo.

⚠️ Security: a default Mnemo apiKey is full-access. A default key grants read, write, and delete over your entire workspace. NEVER ship a full-access key in a browser bundle or any NEXT_PUBLIC_ variable — anything with that prefix is inlined into client-side JavaScript and exposed to every visitor, handing them a delete-capable credential.

Scoped keys do exist: the dashboard mint dialog offers read/write/delete/billing scopes. For any client-exposed context, mint a scoped read-only key rather than exposing a full-access one. The safest path is still to proxy memory reads/writes through a server route (a Server Action or Route Handler) that holds the key server-side; useMnemo is for trusted internal/admin dashboards or a scoped read-only key.

The hook reads NEXT_PUBLIC_GETMNEMO_API_KEY / NEXT_PUBLIC_GETMNEMO_WORKSPACE_ID by default and returns SearchHit objects, keyed by memoryId. The example below is internal/admin only — not for public-facing apps:

"use client";
import { useMnemo } from "getmnemo-vercel-ai/react";
import type { SearchHit } from "getmnemo";

export function MemorySidebar() {
  const { results, search, loading } = useMnemo<SearchHit>({
    initialQuery: "preferences",
  });

  if (loading) return <p>Loading…</p>;

  return (
    <ul>
      {results.map((m) => (
        <li key={m.memoryId}>{m.content}</li>
      ))}
    </ul>
  );
}

useMnemo also exposes add(content, metadata?), remove(id), and error.

Docs

Full documentation at mnemohq.com.

License

MIT