FishMem

Stop making your AI start over

Turn conversations into lasting memory. Keep the sources. Give every response the context to pick up where you left off

Memory that stays useful

Store durable knowledge as memory. Keep long-form source material as source material. Retrieve what the next response actually needs

Conversation

I'm vegetarian, and peanuts trigger my allergy

I'll keep that in mind for future recommendations

Find somewhere for dinner tomorrow

Ready for recall

Alex follows a vegetarian diet

Alex is allergic to peanuts

Concise records instead of replaying the full conversation

Remember the user, not the transcript

FishMem distills conversations into concise records your product can reuse. The next response gets the durable preference or decision—not another wall of chat history

How memory works

Alex · profile history

May 12

Alex works from Lisbon

Superseded

Aug 1

Alex works from Berlin

Current

Recall the current state or inspect what was true before

Keep up when the truth changes

A new fact can supersede an old one without erasing history. Recall what is current, inspect what changed, and stop letting stale preferences steer the next answer

Explore temporal memory

launch-brief.pdf

Original stored

What is the launch rollback plan?

launch-brief.pdf

0.91

Roll back within ten minutes if checkout errors exceed the agreed threshold…

launch-brief.pdf

0.84

The on-call owner confirms recovery before traffic is restored…

Keep the source when the source matters

Long text and files follow a separate document path. FishMem preserves the original, indexes it for retrieval, and keeps source material out of the user-memory stream

Build document recall

Writes you can wait for, retry, and inspect

Async Memory Inference returns a durable event immediately. Follow it through processing, handle bounded retries, and read the final records without holding your agent request open

Explore the Event API

Memory inference

event_••••••••

2 records stored · 1.1s

PENDING

RUNNING

SUCCEEDED

Durable receipt

Bounded retries

Terminal result

Two wins. One loss. All disclosed

A frozen, full-suite comparison against mem0 OSS 3.1.2. Every row uses paired items and the same disclosed configuration within the pair

Frozen 24 Aug 2026Paired item-level evaluation

LongMemEval

oracle

500 paired items

FishMem

88.2%

mem0

83.8%

Paired delta

+4.4 pt

95% CI +1.0 to +7.8

FishMem leads

BEAM

100k

400 paired items

FishMem

46.7%

mem0

41.0%

Paired delta

+5.7 pt

95% CI +1.8 to +9.5

FishMem leads

LoCoMo

categories 1–5

1,986 paired items

FishMem

67.5%

mem0

71.1%

Paired delta

−3.7 pt

95% CI −5.8 to −1.5

mem0 leads

One SDK. Add and recall

Turn a conversation into durable records, then recall only what the next response needs. The same client works with FishMem Cloud and your own deployment

Read the SDK quickstart
import { FishMem } from "@fishmem/sdk";

const memory = new FishMem({
  apiKey: process.env.FISHMEM_API_KEY!,
});

await memory.memories.addAndWait({
  content: "Alex is vegetarian and allergic to peanuts.",
  user_id: "alex",
});

const { results } = await memory.memories.search({
  query: "What can Alex eat?",
  user_id: "alex",
});

Choose where FishMem runs

Use the same SDK with managed Cloud or your own infrastructure. Choose where your data, models, and operations live

Self-hosted

Run the open-source engine with Docker, your database, and your model provider

Your infrastructure is the trust boundary

View on GitHub

FishMem Cloud

Use the managed API with workspaces, keys, usage, events, webhooks, and the dashboard ready

No memory infrastructure to operate

Get Started

Custom (VPC)

For private networks and custom data boundaries, plan a deployment around your cloud and operating model

A tailored path for enterprise requirements

Talk to us

Built for teams. Designed for control

No black boxes around your users' memories. Project scope is enforced at authorization and data-access boundaries, changes retain history, and memory namespaces are exportable on demand

Get your API key

Scoped

Every public read and write is authorized against a project. Project IDs are carried through database rows and vector metadata, while API keys are hashed at rest, shown once, and revocable from the dashboard

Auditable

Memory changes retain history, while hosted requests, operations, and credit usage remain visible in the dashboard and API

Yours

Export a memory namespace and explicitly delete memories, documents, and source assets through the API. The Apache-2.0 engine remains self-hostable