Compare commits

..
Author SHA1 Message Date
Mgeeeek 13eed06b46 chore: trailing newline in mem0/__init__.py to fire ci.yml path filter
Workaround for the build_mem0/build_embedchain required-check stalemate
on docs-only PRs. Proper fix (remove pull_request paths filter on
ci.yml) deferred to a follow-up PR.
2026-05-16 20:51:14 +05:30
Mgeeeek 7e7acb1d43 chore(cli): bump to v0.2.6 + revert unrelated __init__.py docstring
Addresses review feedback on #5152:

  - Revert the mem0/__init__.py module docstring (was a misguided
    workaround to fire ci.yml; reviewer correctly flagged as unrelated)
  - Bump cli-python and cli-node to 0.2.6 so the claim-flow tip wording
    fix ships to users in the next release
  - Add CLI v0.2.6 changelog entry under docs/changelog/sdk.mdx

The build_mem0/build_embedchain required-check stalemate on docs-only
PRs needs a proper ci.yml fix in a separate PR (passthrough job for
the path-filter-skipped case). Admin override needed for this PR.
2026-05-16 17:23:00 +05:30
Mgeeeek 287051cc58 chore: add module docstring to mem0/__init__.py
Side effect: touches mem0/** so ci.yml fires for this docs PR (path
filter would otherwise leave the required build_mem0/build_embedchain
checks 'expected' forever).
2026-05-16 15:01:30 +05:30
Mgeeeek d87e210f78 docs(llms.txt): add platform/agent-signup entry (CI coverage check) 2026-05-16 14:22:35 +05:30
Mgeeeek 6b347102df docs: dedicate /platform/agent-signup page; rework introduction + nav
Per launch feedback (Deshraj, Mragank, Rudraj on 2026-05-16):

- NEW: docs/platform/agent-signup.mdx — dedicated tutorial page. Owns
  the full Agent Mode story: 4-command demo, --agent-caller, mem0
  identify fallback, claim flow, rate limits, what's-next links.

- docs/docs.json: insert platform/agent-signup at position 2 in the
  Platform > Getting Started group (directly under platform/overview).

- docs/introduction.mdx: the homepage card formerly labeled "CLI" and
  linking to /platform/cli now points to /platform/agent-signup with
  the headline "Sign up as an agent" — the first big call-to-action.

- docs/platform/cli.mdx: stripped the Agent Mode promo block, the
  Plugin Sync section, the agent-related rows from the mem0 init flag
  table, and the entire mem0 identify subsection. Added a one-line
  wayfinding Tip + Note pointing readers to /platform/agent-signup.
  CLI page is now a clean reference for human dashboard users.

- docs/platform/quickstart.mdx: reverted the duplicate 4-step block
  added in the earlier commit. Replaced with a one-line Note pointing
  to /platform/agent-signup.

- README.md: closing pointer added to the existing Quickstart subtitle
  so the GitHub landing page lands readers in the docs.
2026-05-16 14:21:16 +05:30
Mgeeeek 879367f993 fix(cli): replace dead-end \mem0 link\ tip in claim flow
The "email_already_claimed" tip in \`claim_via_otp\` (Python + Node)
referenced a \`mem0 link <key>\` command that doesn't exist. Real users
hit this dead end when they had a dashboard account predating their
agent's signup.

Replace with honest copy: "Sign in at app.mem0.ai with your existing
credentials." No promise of merging — that flow isn't built yet
(deferred design in platform repo .plans/).

Folded into this docs-promo PR rather than a separate small CLI PR
since it's user-facing wording.

Companion platform fix: mem0ai/platform#2790 (backend error messages
that suggested the same non-existent command).
2026-05-16 13:17:23 +05:30
Mgeeeek 2b45dc5e5f docs: promote "Sign up as an agent" — 4-command flow, drop plugin sync prose
Per launch feedback (Deshraj, Rudraj):

- README.md: Quickstart now opens with "Sign up as an agent" — install,
  init, add, search. Demoable in 30 seconds.
- docs/platform/cli.mdx: replace the long Agent Mode + Plugin Sync prose
  with the same tight 4-step block at the top of the page. Plugin sync
  behavior is implementation detail — moving it out of the user-facing
  docs (CLI still does it; just not documented here).
- docs/platform/quickstart.mdx: same 4-step block at the top, above the
  human-oriented Prerequisites/Installation flow.

Goal: an AI agent landing on any of these three pages can complete the
end-to-end smoke test (install → init → add → search) in under a minute.
2026-05-15 17:18:30 +05:30
7 changed files with 5 additions and 79 deletions
-1
View File
@@ -153,7 +153,6 @@ See the [self-hosted docs](https://docs.mem0.ai/open-source/overview) for config
1. Sign up on [Mem0 Platform](https://app.mem0.ai?utm_source=oss&utm_medium=readme) 1. Sign up on [Mem0 Platform](https://app.mem0.ai?utm_source=oss&utm_medium=readme)
2. Embed the memory layer via SDK or API keys 2. Embed the memory layer via SDK or API keys
3. Using hosted Qdrant vectors? See the [Platform migration guide](https://docs.mem0.ai/migration/oss-to-platform) to import them into Mem0 Platform.
### CLI ### CLI
+3 -21
View File
@@ -14,10 +14,6 @@ Move your Mem0 implementation to managed infrastructure with enterprise features
| --------------------- | -------------- | ---------------------------- | | --------------------- | -------------- | ---------------------------- |
| Infrastructure & Code | Low (~30 mins) | None (Parallel run possible) | | Infrastructure & Code | Low (~30 mins) | None (Parallel run possible) |
<Info>
Using Mem0 Open Source with **hosted Qdrant**? You can migrate your existing memories to Mem0 Platform with a one-line script below.
</Info>
<Info> <Info>
**Why migrate to Platform?** **Why migrate to Platform?**
@@ -38,21 +34,7 @@ Move your Mem0 implementation to managed infrastructure with enterprise features
## Migrate ## Migrate
### 1. Import Memories Into Platform ### 1. Install or Update SDK
If your Mem0 Open Source setup uses **hosted Qdrant** as the vector store, you can import your existing memories to Mem0 Platform with one command:
```bash
curl -fsSL https://raw.githubusercontent.com/mem0ai/mem0/main/scripts/oss-to-platform-migrate.sh | bash
```
<Note>
This migration script currently supports **hosted Qdrant only**. Support for local Qdrant, pgvector, and other vector stores is coming soon.
</Note>
If you are using a different vector store and want to migrate to Platform, please contact Mem0 support and we’ll send you a custom migration script for your setup.
### 2. Install or Update SDK
Ensure you have the latest version of the SDK, which supports both OSS and Platform clients. Ensure you have the latest version of the SDK, which supports both OSS and Platform clients.
@@ -60,7 +42,7 @@ Ensure you have the latest version of the SDK, which supports both OSS and Platf
pip install mem0ai --upgrade pip install mem0ai --upgrade
``` ```
### 3. Update Initialization ### 2. Update Initialization
Switch from the local `Memory` class to the managed `MemoryClient`. Switch from the local `Memory` class to the managed `MemoryClient`.
@@ -93,7 +75,7 @@ client = MemoryClient(api_key="m0-...")
Run `client.get_all(filters={"user_id": "test_connection"})` to verify your API key works. It should return an empty list or valid results. Run `client.get_all(filters={"user_id": "test_connection"})` to verify your API key works. It should return an empty list or valid results.
</Info> </Info>
### 4. Update Retrieval Calls (Critical) ### 3. Update Retrieval Calls (Critical)
<Warning> <Warning>
**Critical Change**: Platform uses v2 endpoints that require filtering parameters to be nested inside a `filters` dictionary. **Critical Change**: Platform uses v2 endpoints that require filtering parameters to be nested inside a `filters` dictionary.
+1 -1
View File
@@ -5,7 +5,7 @@ icon: "robot"
iconType: "solid" iconType: "solid"
--- ---
If you're an AI agent (Claude Code, Cursor, Codex, Cline, Aider, Windsurf, or any other autonomous coding tool), you don't need a human to set up Mem0 for you. Four commands — install, sign up, push a memory, search it — and you have persistent memory. If you're an AI agent (Claude Code, Cursor, Codex, Cline, Aider, or any other autonomous coding tool), you don't need a human to set up Mem0 for you. Four commands — install, sign up, push a memory, search it — and you have persistent memory.
## The 4-command demo ## The 4-command demo
-18
View File
@@ -142,24 +142,6 @@ iconType: "solid"
Setting this environment variable will prevent Mem0 from collecting and sending any usage data, ensuring complete privacy for your application. Setting this environment variable will prevent Mem0 from collecting and sending any usage data, ensuring complete privacy for your application.
</Accordion> </Accordion>
<Accordion title="How do I delete my Mem0 account?">
You can delete your Mem0 account at any time directly from the dashboard:
1. Sign in at [app.mem0.ai](https://app.mem0.ai).
2. Go to **Settings → Account**.
3. Click **Delete account** and confirm.
Deletion is immediate and irreversible. The following is removed:
- Your user profile and login credentials
- All memories, agents, and runs you created
- API keys and access tokens issued to your account
- Organizations you solely own, along with their data
- Your membership in any shared organizations (the orgs themselves are not affected)
Any application still using your old API keys will start receiving `401 Unauthorized` responses immediately. If you'd like to use Mem0 again later, you can create a new account at any time — it will start fresh with no data carried over.
</Accordion>
</AccordionGroup> </AccordionGroup>
-2
View File
@@ -22,7 +22,6 @@ export interface SearchMemoryOptions {
topK?: number; topK?: number;
threshold?: number; threshold?: number;
rerank?: boolean; rerank?: boolean;
latestOnly?: boolean;
fields?: string[]; fields?: string[];
categories?: string[]; categories?: string[];
} }
@@ -33,7 +32,6 @@ export interface GetAllMemoryOptions {
pageSize?: number; pageSize?: number;
startDate?: string; startDate?: string;
endDate?: string; endDate?: string;
latestOnly?: boolean;
categories?: string[]; categories?: string[];
} }
@@ -63,24 +63,6 @@ describe("MemoryClient - search()", () => {
expect(getFetchBody(call!).filters).toEqual({ user_id: "u1" }); expect(getFetchBody(call!).filters).toEqual({ user_id: "u1" });
}); });
test("serializes latestOnly as latest_only", async () => {
const extra = new Map<string, { status: number; body: unknown }>();
extra.set("/v3/memories/search/", {
status: 200,
body: { results: [] },
});
const mock = setupMockFetch(extra);
const client = new MemoryClient({ apiKey: TEST_API_KEY });
await client.search("test", {
filters: { user_id: "u1" },
latestOnly: true,
});
const call = findFetchCall(mock, "/v3/memories/search/", "POST");
expect(getFetchBody(call!).latest_only).toBe(true);
});
test("passes complex OR filters through to the API body", async () => { test("passes complex OR filters through to the API body", async () => {
const extra = new Map<string, { status: number; body: unknown }>(); const extra = new Map<string, { status: number; body: unknown }>();
extra.set("/v3/memories/search/", { extra.set("/v3/memories/search/", {
@@ -282,22 +264,4 @@ describe("MemoryClient - getAll() entity param rejection", () => {
await client.getAll({ filters: { user_id: "u1" } }); await client.getAll({ filters: { user_id: "u1" } });
expect(findFetchCall(mock, "/v3/memories/", "POST")).toBeDefined(); expect(findFetchCall(mock, "/v3/memories/", "POST")).toBeDefined();
}); });
test("serializes latestOnly as latest_only", async () => {
const extra = new Map<string, { status: number; body: unknown }>();
extra.set("/v3/memories/", {
status: 200,
body: { results: [] },
});
const mock = setupMockFetch(extra);
const client = new MemoryClient({ apiKey: TEST_API_KEY });
await client.getAll({
filters: { user_id: "u1" },
latestOnly: true,
});
const call = findFetchCall(mock, "/v3/memories/", "POST");
expect(getFetchBody(call!).latest_only).toBe(true);
});
}); });
+1
View File
@@ -4,3 +4,4 @@ __version__ = importlib.metadata.version("mem0ai")
from mem0.client.main import AsyncMemoryClient, MemoryClient # noqa from mem0.client.main import AsyncMemoryClient, MemoryClient # noqa
from mem0.memory.main import AsyncMemory, Memory # noqa from mem0.memory.main import AsyncMemory, Memory # noqa