add(docs): migration guide from zep to supermemory (#612)
Some checks failed
Publish AI SDK / publish (push) Has been cancelled

add docs for Migration Guide from zep to supermemory
This commit is contained in:
MaheshtheDev 2025-12-20 00:47:52 +00:00
parent 81e192e616
commit b8e98c7dba
12 changed files with 387 additions and 15 deletions

View file

@ -245,7 +245,7 @@ curl -X PATCH "https://api.supermemory.ai/v3/documents/doc_id" \
## Next Steps
- [Track Processing Status](/api/track-progress) - Monitor document processing
- [Track Processing Status](/memory-api/track-progress) - Monitor document processing
- [Search Memories](/search/overview) - Search your content
- [List Memories](/list-memories/overview) - Browse stored memories
- [Update & Delete](/update-delete-memories/overview) - Manage memories

View file

@ -174,7 +174,7 @@
},
{
"group": "Migration Guides",
"pages": ["migration/from-mem0"]
"pages": ["migration/from-mem0", "migration/from-zep"]
},
{
"group": "Deployment",

View file

@ -58,7 +58,7 @@ Along with the user context, developers can also choose to do a search on the ra
- Works well with the memory engine
<Info>
You can reference the full API reference for the Memory API [here](/api-reference/manage-documents/add-document).
You can reference the full API reference for the Memory API in the API Reference tab.
</Info>

View file

@ -373,4 +373,4 @@ requests.patch(
## Next Steps
Explore more advanced features in our [API Reference](/api-reference/manage-memories/add-memory)
Explore more advanced features in our API Reference tab.

View file

@ -31,7 +31,7 @@ Check out the following resources to get started:
<Card title="Quickstart" icon="zap" href="/memory-api/overview">
Get started in 5 minutes
</Card>
<Card title="API Reference" icon="unplug" href="/api-reference">
<Card title="API Reference" icon="unplug">
Learn more about the API
</Card>
<Card title="Use Cases" icon="brain" href="/overview/use-cases">

View file

@ -81,7 +81,7 @@ client.memory.add(
This will add a new memory to your supermemory account.
Try it out in the [API Playground](/api-reference/manage-memories/add-memory).
Try it out in the API Reference tab.
## Content Processing
@ -132,7 +132,7 @@ client.search.execute(
</CodeGroup>
Try it out in the [API Playground](/api-reference/search-memories/search-memories).
Try it out in the API Reference tab.
You can do a lot more with supermemory, and we will walk through everything you need to.

View file

@ -178,4 +178,4 @@ Forgotten memories are memories that have been explicitly forgotten using the fo
## Next Steps
Explore more advanced features in our [API Reference](/api-reference/search-memories/search-memories).
Explore more advanced features in our API Reference tab.

View file

@ -154,7 +154,7 @@ curl -X GET "https://api.supermemory.ai/v3/documents/doc_abc123" \
}
```
For more comprehensive information on the get documents by ID endpoint, refer to the [API reference.](/api-reference/manage-documents/get-document)
For more comprehensive information on the get documents by ID endpoint, refer to the API Reference tab.
## Status Values

View file

@ -0,0 +1,372 @@
---
title: "Migrating from Zep to Supermemory"
description: "Quick guide to migrate from Zep to Supermemory"
sidebarTitle: "From Zep"
---
## Key Differences
| Zep AI | Supermemory |
|--------|-------------|
| Sessions & Messages | Documents & Container Tags |
| `session.create()` | Use `containerTags` parameter |
| `memory.add(session_id, ...)` | `add({containerTag: [...]})` |
| `memory.search(session_id, {text: ...})` | `search.execute({q: ..., containerTags: [...]})` |
## Installation
<CodeGroup>
```bash Python
pip install supermemory
```
```bash TypeScript
npm install supermemory
```
</CodeGroup>
<CodeGroup>
```python Python
from supermemory import Supermemory
client = Supermemory(api_key="your-api-key")
```
```typescript TypeScript
import { Supermemory } from "supermemory";
const client = new Supermemory({ apiKey: "your-api-key" });
```
</CodeGroup>
## API Mapping
### Session Management
<CodeGroup>
```python Zep AI
session = client.session.create(
session_id="user_123",
user_id="user_123"
)
```
```python Supermemory
# No explicit session creation - use containerTag
containerTag = ["user_123"]
```
</CodeGroup>
### Adding Memories
<CodeGroup>
```python Zep AI
client.memory.add(
session_id="user_123",
memory={"content": "User prefers dark mode"}
)
```
```python Supermemory
client.add({
"content": "User prefers dark mode",
"containerTag": ["user_123"]
})
```
</CodeGroup>
### Searching
<CodeGroup>
```python Zep AI
results = client.memory.search(
session_id="user_123",
search_payload={"text": "preferences", "limit": 5}
)
```
```python Supermemory
results = client.search.execute({
"q": "preferences",
"containerTag": ["user_123"],
"limit": 5
})
```
</CodeGroup>
### Getting All Memories
<CodeGroup>
```python Zep AI
memories = client.memory.get(session_id="user_123")
```
```python Supermemory
documents = client.memories.list({
"containerTag": ["user_123"],
"limit": 100
})
```
</CodeGroup>
## Migration Steps
1. **Replace client initialization** - Use Supermemory client instead of Zep
2. **Map sessions to container tags** - Replace `session_id="user_123"` with `containerTag: ["user_123"]`
3. **Update method calls** - Use `add()` and `search.execute()` instead of `memory.add()` and `memory.search()`
4. **Change search parameter** - Use `q` instead of `text`
5. **Handle async processing** - Documents process asynchronously (status: `queued` → `done`)
## Complete Example
<CodeGroup>
```python Zep AI
from zep_python import ZepClient
client = ZepClient(api_key="...")
session = client.session.create(session_id="user_123", user_id="user_123")
client.memory.add("user_123", {
"content": "I love Python",
"role": "user"
})
results = client.memory.search("user_123", {
"text": "programming",
"limit": 3
})
```
```python Supermemory
from supermemory import Supermemory
client = Supermemory(api_key="...")
containerTag = ["user_123"]
client.add({
"content": "I love Python",
"containerTag": containerTag,
"metadata": {"role": "user"}
})
results = client.search.execute({
"q": "programming",
"containerTag": containerTag,
"limit": 3
})
```
</CodeGroup>
## Important Notes
- **No session creation needed** - Just use `containerTag` in requests
- **Messages are documents** - Store with `metadata.role` and `metadata.type`
- **Async processing** - Documents may take a moment to be searchable
- **Response structure** - Supermemory returns chunks with scores, not direct memory content
## Migrating Existing Data
### Quick Migration (All-in-One)
Complete migration in one script:
<CodeGroup>
```typescript TypeScript
import { ZepClient } from "@getzep/zep-js";
import { Supermemory } from "supermemory";
// Initialize clients
const zep = new ZepClient({ apiKey: "your_zep_api_key" });
const supermemory = new Supermemory({ apiKey: "your_supermemory_api_key" });
// Export from Zep and import to Supermemory
const sessionIds = ["session_1", "session_2"]; // Add your session IDs
for (const sessionId of sessionIds) {
const memory = await zep.memory.get(sessionId);
const memories = memory?.memories || [];
for (const mem of memories) {
if (mem.content) {
await supermemory.add({
content: mem.content,
containerTag: [`session_${sessionId}`, `user_${memory.user_id || "unknown"}`],
metadata: {
role: mem.role,
type: "message",
original_uuid: mem.uuid,
...mem.metadata
}
});
console.log(`✅ Imported: ${mem.content.substring(0, 50)}...`);
}
}
}
console.log("Migration complete!");
```
```python Python
from zep_python import ZepClient
from supermemory import Supermemory
# Initialize clients
zep = ZepClient(api_key="your_zep_api_key")
supermemory = Supermemory(api_key="your_supermemory_api_key")
# Export from Zep and import to Supermemory
session_ids = ["session_1", "session_2"] # Add your session IDs
for session_id in session_ids:
memory = zep.memory.get(session_id)
memories = memory.memories if memory else []
for mem in memories:
if mem.content:
supermemory.add({
"content": mem.content,
"containerTag": [f"session_{session_id}", f"user_{memory.user_id or 'unknown'}"],
"metadata": {
"role": mem.role,
"type": "message",
"original_uuid": mem.uuid,
**(mem.metadata or {})
}
})
print(f"✅ Imported: {mem.content[:50]}...")
print("Migration complete!")
```
</CodeGroup>
### Full Migration Script
For a complete migration script with error handling, verification, and progress tracking, copy this TypeScript script:
```typescript
import { ZepClient } from "@getzep/zep-js";
import { Supermemory } from "supermemory";
import * as dotenv from "dotenv";
import * as fs from "fs";
dotenv.config();
interface MigrationStats {
imported: number;
failed: number;
skipped: number;
}
async function migrateFromZep(
zepApiKey: string,
supermemoryApiKey: string,
sessionIds: string[]
) {
const zep = new ZepClient({ apiKey: zepApiKey });
const supermemory = new Supermemory({ apiKey: supermemoryApiKey });
const stats: MigrationStats = { imported: 0, failed: 0, skipped: 0 };
const exportedData: any = {};
console.log("🔄 Starting migration...");
// Export from Zep
for (const sessionId of sessionIds) {
try {
const session = await zep.session.get(sessionId);
const memory = await zep.memory.get(sessionId);
const memories = memory?.memories || [];
exportedData[sessionId] = {
session: { session_id: sessionId, user_id: session?.user_id },
memories: memories.map((m: any) => ({
content: m.content,
role: m.role,
metadata: m.metadata,
uuid: m.uuid,
})),
};
console.log(`✅ Exported ${memories.length} memories from ${sessionId}`);
} catch (error: any) {
console.log(`❌ Error exporting ${sessionId}: ${error.message}`);
}
}
// Save backup
const backupFile = `zep_export_${Date.now()}.json`;
fs.writeFileSync(backupFile, JSON.stringify(exportedData, null, 2));
console.log(`💾 Backup saved to: ${backupFile}`);
// Import to Supermemory
let totalMemories = 0;
for (const [sessionId, data] of Object.entries(exportedData) as any) {
const containerTag = ["imported_from_zep", `session_${sessionId}`];
if (data.session.user_id) {
containerTag.push(`user_${data.session.user_id}`);
}
for (const memory of data.memories) {
totalMemories++;
try {
if (!memory.content?.trim()) {
stats.skipped++;
continue;
}
await supermemory.add({
content: memory.content,
containerTag: containerTag,
metadata: {
source: "zep_migration",
role: memory.role,
type: "message",
original_uuid: memory.uuid,
...memory.metadata,
},
});
stats.imported++;
console.log(`✅ [${stats.imported}/${totalMemories}] Imported`);
} catch (error: any) {
stats.failed++;
console.log(`❌ Failed: ${error.message}`);
}
}
}
console.log("\n📊 Migration Summary:");
console.log(`✅ Imported: ${stats.imported}`);
console.log(`⚠️ Skipped: ${stats.skipped}`);
console.log(`❌ Failed: ${stats.failed}`);
}
// Usage
const sessionIds = ["session_1", "session_2"]; // Add your session IDs
migrateFromZep(
process.env.ZEP_API_KEY!,
process.env.SUPERMEMORY_API_KEY!,
sessionIds
).catch(console.error);
```
## Resources
- [Supermemory SDKs](/memory-api/sdks/overview)
- [API Reference](/memory-api/overview)
- [Search Documentation](/search/overview)

View file

@ -50,7 +50,7 @@ Follow these steps to build a workflow that captures and stores your Gmail messa
1. **Add an HTTP Request node** after the Gmail Trigger
2. **Method**: `POST`
3. **URL**: [`https://api.supermemory.ai/v3/documents`](/api-reference/manage-documents/add-document)
3. **URL**: `https://api.supermemory.ai/v3/documents`
4. Select your auth credentials you created with the Supermemory API Key.
#### Step 3: Format Email Data for Supermemory
@ -89,4 +89,4 @@ If you want to process attachments:
3. Check the execution to ensure the email was captured
4. Verify in Supermemory that the email appears in search results
Refer to the [API reference](/api-reference/manage-documents/add-document) to learn more about other supermemory API endpoints.
Refer to the API Reference tab to learn more about other supermemory API endpoints.

View file

@ -369,7 +369,7 @@ curl -X GET "https://api.supermemory.ai/v3/documents/{YOUR-DOCUMENT-ID}" \
</CodeGroup>
<Note>
This endpoint returns the complete document with all fields including content, metadata, containerTags, summary, and processing status. For more details, see the [API reference](/api-reference/manage-documents/get-document).
This endpoint returns the complete document with all fields including content, metadata, containerTags, summary, and processing status. For more details, see the API Reference tab.
</Note>
## Search Flow Architecture

View file

@ -7,7 +7,7 @@ description: "Learn how to use the code block to integrate supermemory with Zap
With Supermemory you can now easily add memory to your Zapier workflow steps. Here's how:
## Prerequisites
- A Supermemory API Key. Get yours [here](console.supermemory.ai)
- A Supermemory API Key. Get yours [here](https://console.supermemory.ai)
## Step-by-step tutorial
@ -30,7 +30,7 @@ For this tutorial, we're building a simple flow that adds incoming emails in Gma
![](/images/map-content-to-gmail.png)
</Step>
<Step title="Integrate Supermemory">
Since we're ingesting data here, we'll use the [add documents endpoint.](/api-reference/manage-documents/add-document)
Since we're ingesting data here, we'll use the add documents endpoint.
Add the following code block:
@ -61,4 +61,4 @@ For this tutorial, we're building a simple flow that adds incoming emails in Gma
</Note>
You can perform other operations like search, filtering, user profiles, etc., by using other Supermemory API endpoints which can be found in our [API Reference.](api-reference/search/search-memory-entries)
You can perform other operations like search, filtering, user profiles, etc., by using other Supermemory API endpoints which can be found in our API Reference tab.