Create an API key
Open the dashboard → API Keys, create a key, and copy the secret — it starts with fm_ and is shown once.
FishMem is the hosted memory platform built on the open-source FishMem engine. A versioned memory API with familiar scopes, first-party SDKs, hybrid graph + vector recall, bi-temporal facts, and scoped API keys — running on the edge, with API keys in minutes.
import { FishMem } from "@fishmem/sdk";
// Get your key at https://fishmem.com
const fishmem = new FishMem({
apiKey: process.env.FISHMEM_API_KEY,
});
// Remember a conversation
await fishmem.memories.add(
{
messages: [
{ role: "user", content: "I'm vegetarian and allergic to nuts." },
{ role: "assistant", content: "Got it — I'll remember that." },
],
user_id: "user123",
},
{ idempotencyKey: "user123-diet-v1" },
);
// Recall what's relevant
const { results } = await fishmem.memories.search({
query: "What are my dietary restrictions?",
user_id: "user123",
});
console.log(results);Quickstart
Two REST calls give your agent long-term memory: add what the user says, then search it back whenever you need it.
Open the dashboard → API Keys, create a key, and copy the secret — it starts with fm_ and is shown once.
Use the first-party TypeScript or Python SDK, or call the versioned REST API directly. Inferred adds store refined records; search recalls them before the next model call.
import { FishMem } from "@fishmem/sdk";
const fishmem = new FishMem({
apiKey: process.env.FISHMEM_API_KEY
});
// 1. Add what the user tells you
await fishmem.memories.add(
{
messages: [
{ role: "user", content: "I'm vegetarian and allergic to peanuts." }
],
user_id: "alex"
},
{ idempotencyKey: "alex-diet-v1" }
);
// 2. Recall it before the next model call
const { results } = await fishmem.memories.search({
query: "What can Alex eat?",
user_id: "alex"
});
The goal is not to hoard transcripts. The goal is to extract the facts that matter, keep them current, and return the right ones in well under a second — every turn of the loop.
Hybrid retrieval
Four signals, one ranked recall
Facts are bi-temporal — they know when they were true and what superseded them — and graph recall connects related facts across conversations, so the right memory surfaces even when the words don't match.
Endpoint
/v1/memories
Auth
API key
Mode
Inferred
Status
201
POST /v1/memories to add and POST /v1/memories/search to recall. FishMem keeps familiar mem0-style scopes while defining its own versioned responses, errors, idempotency, and operation resources.
Sign up, create a key, ship — nothing to provision or patch
Scales automatically and stays fast from every region
Isolated by workspace, exportable via the API — your data stays yours.
FishMem is memory out of the box. No servers to size, no indexes to babysit, no pipelines to deploy. It scales with you automatically and stays fast from every region.
Use cases
The same two endpoints power very different agents. Scope memories per user, agent, or session, and FishMem keeps each domain's facts current as the world changes.
Agents that remember every prior ticket, the customer's preferences, and the promises your team made — so nobody has to repeat themselves.
Relationships that deepen over time. Companions recall months of conversation and know what changed and when — not just what was said.
Project conventions, past decisions, and hard-won gotchas persist across sessions, so your agent stops re-learning the codebase every morning.
Every conversation, objection, and follow-up stays in context. The next call starts where the last one ended, not from a blank page.
History, allergies, and what helped before — with full change history per fact, so the compliant workflows you build on top stay grounded in accurate, current records.
Tracks what each learner has mastered and where they struggle, so tutoring agents pick up exactly where the student left off.
No black boxes around your users' memories. Isolation is enforced in the data layer, every change is logged, and your data is exportable on demand.
Every workspace's memories are hard-isolated in the data layer — no cross-tenant reads, no shared indexes. API keys are hashed at rest, shown once at creation, and revocable instantly from the dashboard.
Every add, update, invalidate, and delete is logged per memory, and the full change history is one API call away. Usage is metered per operation, so you always know what ran and what it cost.
Export or delete everything via the API at any time. The engine is open source, so there is no lock-in — and self-hosting is always an option.
Prototype on Hobby, then move to monthly Stripe plans with higher included memory operations. Reads are always free.
| Plan | Hobby Freeno card required | StarterMost popular $19per month | Growth $79per month | Pro $249per month | Enterprise Customannual commitment |
|---|---|---|---|---|---|
| Credits | 10,000 add requests and 1,000 retrieval requests per month | 50,000 add requests and 5,000 retrieval requests per month | 200,000 add requests and 20,000 retrieval requests per month | 500,000 add requests and 50,000 retrieval requests per month | Committed-use credit pricing with volume discounts |
| Best for | Prototyping memory for a single agent or side project | Small apps moving from prototype to live traffic | Teams scaling memory across production users | Higher-volume apps that need advanced usage visibility | Teams with compliance, scale, or data-residency requirements |
| Metering | Full API access from day one: adds, search, and free reads | Operation-level usage and credit balance in the dashboard | Usage analytics, API keys, webhooks, and billing controls | Advanced analytics and higher included monthly capacity | Dedicated capacity, SLAs, and priority on the roadmap |
| Support | Community support on GitHub issues and discussions | Community support | Email support from the engineers who built the engine | Private Slack support | Private channel, onboarding help, and migration assistance |
| Platform access | Versioned REST API, first-party SDKs, dashboard, and one workspace | Hosted FishMem API, dashboard, and one workspace | Multiple projects, hybrid retrieval, graph and temporal recall | Unlimited projects with production-ready controls | Everything in Pro, plus SSO and audit controls |
| Data ownership | Memories stay workspace-scoped; export or delete them at any time. | Memories stay workspace-scoped; export or delete them at any time. | Memories stay workspace-scoped; export or delete them at any time. | Memories stay workspace-scoped; export or delete them at any time. | Memories stay workspace-scoped; export or delete them at any time. |
Credits are consumed per API operation: 2 for an inferred add, 1 for an infer=false verbatim add or search, and reads are free. Self-hosting the open-source engine costs nothing.
“Memory infrastructure should be inspectable: request logs, API keys, usage, and billing belong next to the API itself.”
Operational clarity
Platform principle
“A memory store that forgets when facts were true will confidently answer with stale ones. Bi-temporal tracking is not optional.”
Time-aware truth
Data model principle
“Memory sits inside the agent loop, so retrieval latency is a product feature, not an implementation detail.”
Speed as a feature
Performance principle
Quick answers about FishMem, the FishMem engine, and migrating from mem0.
FishMem is a hosted memory layer for AI agents. It runs on the open-source FishMem engine, extracts durable facts from conversations, stores them in a bi-temporal knowledge graph, and recalls them with hybrid vector, keyword, temporal, and graph-diffusion retrieval.
FishMem uses familiar user_id, agent_id, and run_id scopes, but it has its own explicit contract. Default infer=true performs one extraction call and stores only refined records; infer=false stores submitted records verbatim. Recall can add temporal state, provenance, and graph signals, while hosted operations, usage, and billing remain outside MemoryCore.
The core add, search, and scope concepts overlap, but FishMem is not a compatibility shim. Response envelopes, update fields, error codes, idempotency, and operation handling differ. Use the migration guide and first-party SDK, then run the documented add-search-update-delete acceptance flow.
Every memory is scoped to a workspace, and isolation is enforced in the data layer — no cross-tenant reads or shared indexes. API keys are shown once at creation and stored as salted hashes, and you can rotate or revoke them from the dashboard. You can export or delete a workspace's memories at any time.
The FishMem engine and self-hosted API/dashboard are open source under Apache-2.0. Cloud runs the same MemoryCore and adds managed storage, tenant and plan enforcement, usage charging, billing, organizations, and operated infrastructure. Memory semantics do not fork between editions.
Usage is metered in transparent credits: an inferred add is 2 credits, an infer=false verbatim add is 1, a search is 1, and reads and lists are free. Current plan prices and included capacity are shown on the pricing page and in the dashboard.