Skip to main content

Overview

The pipecat-memorysync integration connects MemorySync, a managed long-term memory layer, to Pipecat voice pipelines. It ships one FrameProcessor: MemorySyncMemoryService sits between the user context aggregator and the LLM service, enriches every LLMContextFrame with relevant memories under a hard time budget (default 1.2 s), and mines the same frames for new turns to persist in the background — so the frame is always pushed on time, enriched or not. Capture is delta-only with deterministic idempotency seeds, and the injected memory block is excluded from capture, so recalled context never re-enters storage.

Source Repository

Source code, foundational example, and issues for the Pipecat integration

Documentation

Full MemorySync guide for Pipecat pipelines

Website

Learn more about MemorySync

Dashboard

Manage your MemorySync account and API keys

Installation

This is a community-maintained package distributed separately from pipecat-ai:
Requires pipecat-ai>=1.0.0 and Python 3.10+.

Prerequisites

MemorySync Account Setup

Before using the MemorySync integration, you need:
  1. MemorySync API Key: Get one at app.memorysync.io
  2. Set it as the MEMORYSYNC_API_KEY environment variable, or pass it as the api_key constructor argument.

Configuration

MemorySyncMemoryService

Inserted after the user context aggregator and before the LLM service. On each LLMContextFrame, fetches user-scoped memories from MemorySync under a hard budget and appends them as a system message to the context, then persists any new turns in the background.
str
required
Required — MemorySync memory is user-scoped. Use a stable end-user id.
str
default:"None"
MemorySync API key. Falls back to the MEMORYSYNC_API_KEY environment variable.
str
default:"None"
Stable id for this call, used to scope the conversation transcript. Auto-generated per service lifetime when absent.
InputParams
default:"InputParams()"
Runtime tuning, see below.

InputParams

int
default:"5"
Memories injected per turn.
float
default:"1.2"
Hard recall budget in seconds. On timeout the frame proceeds unenriched — a slow memory backend can never stall a voice reply.
bool
default:"True"
Inject the memory block as a system message (else it is appended to the latest user message).
str
default:"\"end\""
Where the memory block lands in the message list ("start" or "end").
int
default:"8"
Skip recall for user prompts shorter than this.

Usage

Reads and writes both degrade gracefully — HTTP errors, quota limits, and timeouts all result in “no memories this turn” and nothing propagates into the pipeline. On EndFrame, queued writes get a bounded window to land so the call’s final exchange is never lost.

Compatibility

The integration requires pipecat-ai>=1.0.0 (tested with Pipecat v1.8.1, through pipecat.tests.utils.run_test — the framework’s own harness). Check the source repository for the latest tested version and changelog.