Skip to main content

OpenAI SDK + Memanto

OpenAI Add persistent memory to any OpenAI Node SDK agent with three ready-made tools, shipped as part of the @moorcheh-ai/memanto TypeScript SDK.

Prerequisites

  • Node.js 20+
  • uv (ships uvx) — the Memanto client spawns a local Memanto server via uvx on first use unless you pass baseUrl
  • Memanto / Moorcheh credentialsMoorcheh API key (cloud) or an on-prem backend (no Moorcheh API key). Set MOORCHEH_API_KEY or pass apiKey to new Memanto({ ... })
  • OpenAI API key — the quick start uses gpt-4o via runTools(), which reads OPENAI_API_KEY from the environment (or pass apiKey to new OpenAI({ ... })).
  • openai and zod installed in your app (optional peer dependencies of @moorcheh-ai/memanto)

Install

openai and zod are optional peer dependencies of @moorcheh-ai/memanto — install them yourself in the host app. Importing @moorcheh-ai/memanto/openai without them installed will fail at module load with a standard Node resolution error.

Quick Start

createMemantoOpenAITools returns an array of tools built with zodFunction, ready to hand to the OpenAI Node SDK’s runTools() helper — each tool auto-parses its JSON arguments against a Zod schema before invoking Memanto. Each tool’s description is written for the model to decide when to call it (e.g. recallMemory: “Call this before answering whenever the user refers to information from earlier or from a previous session”).

Available Tools

answerMemory calls Memanto’s Generate AI Answer API (memanto.answer() → Moorcheh answer.generate). Memanto retrieves relevant memories and synthesizes a grounded response using Memanto’s configured LLM — not the model you pass to runTools(). Your agent model only decides when to call the tool and how to use the result. recallMemory and rememberMemory do not invoke an LLM.
Unlike the Vercel AI SDK and Mastra variants, this integration’s schemas use nullable fields (.nullable()) instead of optional ones, matching the OpenAI function-calling convention where the model must explicitly pass null rather than omit a field.

Options

Memory Types

type fields are constrained to Memanto’s 13 supported types via a shared MEMORY_TYPES export:
See the Memory Types Reference for what each type means.

On-Prem

The integration talks to Memanto through the Memanto client, so it works identically against an on-prem backend — no code changes, just configure the backend once with the CLI. See On-Prem Overview and the TypeScript SDK Reference.

Next Steps