Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions apps/docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,8 @@
"pages": [
"integrations/openclaw",
"integrations/claude-code",
"integrations/cursor",
"integrations/grok-bot",
"integrations/opencode",
"integrations/codex",
"integrations/hermes"
Expand Down
1 change: 1 addition & 0 deletions apps/docs/images/cursor-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/docs/images/grok-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions apps/docs/integrations/claude-code.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ Per-repo overrides in `.claude/.supermemory-claude/config.json`. Run `/supermemo
Source code, issues, and detailed README.
</Card>

<Card title="OpenClaw Plugin" icon="messages-square" href="/integrations/openclaw">
Multi-platform memory for Telegram, WhatsApp, Discord, and more.
<Card title="Cursor Plugin" icon="/images/cursor-logo.svg" href="/integrations/cursor">
Memory for your Cursor chats.
Comment thread
MaheshtheDev marked this conversation as resolved.
</Card>
</CardGroup>
4 changes: 2 additions & 2 deletions apps/docs/integrations/codex.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ tail -f ~/.codex-supermemory.log
Source code, issues, and detailed README.
</Card>

<Card title="Claude Code Plugin" icon="code" href="/integrations/claude-code">
Memory plugin for Claude Code.
<Card title="Cursor Plugin" icon="/images/cursor-logo.svg" href="/integrations/cursor">
Comment thread
MaheshtheDev marked this conversation as resolved.
Memory for your Cursor chats.
</Card>
</CardGroup>
208 changes: 208 additions & 0 deletions apps/docs/integrations/cursor.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
---
title: "Cursor"
sidebarTitle: "Cursor"
description: "cursor-supermemory: persistent memory across your Cursor chats"
icon: "/images/cursor-logo.svg"
---

Your agent remembers the decisions, bugs, and conventions from earlier chats instead of starting cold every time.

## Install

<Note>
Requires [Node.js](https://nodejs.org) on your `PATH`. Installing Cursor does not put one there.
</Note>

Run this in Cursor:

```
/add-plugin cursor-supermemory
```

Or install it from the [Cursor Marketplace](https://cursor.com/marketplace/supermemory): open **Customize**, find **Supermemory**, select **Install**, and choose **project** or **user** scope.

Restart Cursor or run **Developer: Reload Window** afterwards.

## Authenticate

Open a new chat in Cursor and run:

```
/supermemory-setup
```

A browser window opens. Sign in to Supermemory and you are done.

As a fallback, set an API key from [API Keys](https://console.supermemory.ai/keys):

<Tabs>
<Tab title="macOS / Linux (zsh)">
```bash
echo 'export SUPERMEMORY_API_KEY="sm_..."' >> ~/.zshrc
source ~/.zshrc
```
</Tab>
<Tab title="macOS / Linux (bash)">
```bash
echo 'export SUPERMEMORY_API_KEY="sm_..."' >> ~/.bashrc
source ~/.bashrc
```
</Tab>
<Tab title="Windows (PowerShell)">
```powershell
[System.Environment]::SetEnvironmentVariable("SUPERMEMORY_API_KEY", "sm_...", "User")
```
Restart your terminal after running this.
</Tab>
</Tabs>

Restart Cursor after installing the plugin or changing credentials.

Check the connection any time with `/supermemory-status`.

<Accordion title="Prefer the terminal?" icon="terminal">
The slash commands just run the plugin's CLI for you. To drive it yourself:

```bash
node "${CURSOR_PLUGIN_ROOT}/dist/cli.js" login
node "${CURSOR_PLUGIN_ROOT}/dist/cli.js" status
node "${CURSOR_PLUGIN_ROOT}/dist/cli.js" logout
```

`CURSOR_PLUGIN_ROOT` is set for plugin hooks. If it is empty in your shell, run `node dist/cli.js <command>` from the installed plugin directory.

Credentials are stored in `~/.supermemory-cursor/credentials.json`.
</Accordion>

## How It Works

| Layer | What it does |
|-------|--------------|
| Session profile | Loads your persistent profile when a Cursor conversation starts |
| Automatic recall | Searches on substantive prompts, deduplicates results, and injects them after the first supported tool result |
| Incremental capture | Saves each completed turn, and retries unsaved transcript deltas at session end |
| MCP tools | Explicit memory control from any Cursor AI session |
| Context gatherer | Fans out targeted searches before substantial work |
| Always-on rule | Makes the agent recall relevant history proactively |

### Skills and Commands

| Name | Type | Description |
|------|------|-------------|
| `memory-init` | Skill | Explore the codebase and initialize project memory |
| `memory-save` | Skill | Save an insight, decision, or solution worth keeping |
| `memory-search` | Skill | Search memory for past work, bugs, and decisions |
| `supermemory-context-gatherer` | Agent | Gather deep background before substantial work |
| `supermemory-setup` | Command | Connect Supermemory to Cursor |
| `supermemory-status` | Command | Check authentication and live connectivity |
| `supermemory-config` | Command | Create or edit the project config file |
| `supermemory-logout` | Command | Disconnect Supermemory from Cursor |

## MCP Tools

| Tool | Description |
|------|-------------|
| `supermemory_get_config` | Show current config, resolved container tags, and config file paths |
| `supermemory_set_config` | Update config at project or global scope |
| `supermemory_containers` | Show what `user` and `project` container tags resolve to |
| `supermemory_search` | Search memories by query |
| `supermemory_add` | Save new information to memory |
| `supermemory_list` | List stored memories |
| `supermemory_forget` | Delete a memory by id or content |
| `supermemory_profile` | Get your user profile summary |

Every tool that takes a `container` argument accepts:

- `"user"` (default): personal memories for the current repository
- `"project"`: project knowledge for the current repository
- `"both"`: both scopes plus compatible legacy memories
- any custom string: used as a raw container tag

`user` and `project` write to the same repository container. The `sm_scope` metadata field is what keeps personal and session memories separate from explicit project knowledge when an agent asks for one scope.

## Container Tags

Cursor shares one repository tag with the [Claude Code](/integrations/claude-code), [OpenAI Codex](/integrations/codex), and [OpenCode](/integrations/opencode) plugins, so agents working on the same repo read and write the same memory:

```text
repo_<project_name>__<project_id>
```

The project ID is a stable hash of the normalized Git remote. Repositories without a remote fall back to their resolved local path. Two repos with the same directory name never collide, and different agents on the same repository share memory.

The plugin still reads the former `cursor_user_*` and `cursor_project_*` tags, along with legacy tags from the other agents. New writes only use the unified repository tag. Set `repoContainerTag` only when you need an explicit shared override.

## Configuration

<Tip>
**Prefer to keep everything on your machine?** This plugin works with [self-hosted Supermemory](/self-hosting/overview): run `npx supermemory local`, then set `SUPERMEMORY_API_URL="http://localhost:6767"` (or `baseUrl` in your config file) and use the API key printed on first boot.
</Tip>

### Environment variables

| Variable | Description |
|----------|-------------|
| `SUPERMEMORY_API_KEY` | API key (overrides all other sources) |
| `SUPERMEMORY_API_URL` | Override the Supermemory API base URL |
| `SUPERMEMORY_REPO_TAG` | Override the unified repository container tag |
| `SUPERMEMORY_USER_TAG` | Legacy Cursor personal container to continue reading |
| `SUPERMEMORY_PROJECT_TAG` | Legacy Cursor project container to continue reading |
| `CURSOR_USER_EMAIL` | Used only to find legacy Cursor personal memories |

### Global config

`~/.config/cursor/supermemory.json` holds user-wide defaults and applies to all projects.

```json
{
"repoContainerTag": "repo_my_project__0123456789abcdef",
"similarityThreshold": 0.55,
"maxMemories": 10,
"injectProfile": true,
"signalExtraction": false,
"signalKeywords": ["remember", "architecture", "decision", "bug", "fix"],
"signalTurnsBefore": 3
}
```

### Project config

`.cursor/.supermemory/config.json` holds per-workspace overrides and wins over global config. Add it to `.gitignore` if it contains an API key.

```json
{
"apiKey": "sm_...",
"repoContainerTag": "repo_my_project__0123456789abcdef",
"similarityThreshold": 0.55,
"maxMemories": 10,
"injectProfile": true
}
```

| Option | Default | Description |
|--------|---------|-------------|
| `apiKey` | — | Project-specific API key |
| `baseUrl` | Supermemory API | Override the Supermemory API base URL |
| `repoContainerTag` | derived from normalized Git remote or project path | Override the unified repository container |
| `userContainerTag` | — | Legacy Cursor personal container to continue reading |
| `projectContainerTag` | — | Legacy Cursor project container to continue reading |
| `similarityThreshold` | `0.55` | Minimum similarity for prompt recall. Values below `0.55` are floored. |
| `maxMemories` | `10` | Max profile facts injected at session start |
| `injectProfile` | `true` | Whether to inject the user profile at session start |
| `signalExtraction` | `false` | Capture only turns containing durable-signal keywords |
| `signalKeywords` | `remember`, `architecture`, `decision`, `bug`, `fix` | Keywords that trigger signal-based capture |
| `signalTurnsBefore` | `3` | Number of nearby turns retained around a signal |

You can also set these from the agent with `supermemory_set_config`, or edit the file by hand.

## Log Out

Run `/supermemory-logout` in Cursor.

This removes the stored credentials. Your memories in Supermemory are preserved.

## Next Steps

<Card title="GitHub Repository" icon="/images/github-icon.svg" href="https://github.com/supermemoryai/cursor-supermemory">
Source code, issues, and detailed README.
</Card>
64 changes: 64 additions & 0 deletions apps/docs/integrations/grok-bot.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: "Grok Bot"
sidebarTitle: "Grok Bot"
description: "Supermemory for Grok Bot: persistent memory for your Grok Bots"
icon: "/images/grok-logo.png"
---

Grok Bots are cloud agents. A new task can mean a new machine and a blank context. Supermemory is the memory they keep between those tasks — findings, decisions, and preferences — so the next Bot does not start cold.

## How it helps

Without memory, a Bot redoes investigation you already paid for. With Supermemory:

- Later Bots know what earlier ones already figured out
- You can save a decision or finding once and have it stick
- You can ask what it already remembers instead of starting over

Install once, sign in, and it is available to your Grok Bots.

## Install

Open the [Supermemory for Grok Bot plugin page](https://x.ai/bot/plugin/58578698) and select **Add to Grok Bot**.

Restart Grok Bot afterwards so the plugin loads.

## Authenticate

Just ask Grok Bot:

```
Sign me in to Supermemory
```

It shows a connect card. Follow it to link your Supermemory account.

To check later, ask `Is Supermemory connected?`

## Skills

Grok Bot picks these up from what you ask. There are no slash commands.

| Skill | Ask for it like this |
|-------|----------------------|
| `memory-init` | "Learn this codebase and remember it" |
| `memory-save` | "Remember that we use Vitest for unit tests" |
| `memory-search` | "What do you remember about our database schema?" |

## Log Out

Ask Grok Bot to `Disconnect Supermemory`.

This removes the stored credentials. Your memories in Supermemory are preserved.

## Next Steps

<CardGroup cols={2}>
<Card title="GitHub Repository" icon="/images/github-icon.svg" href="https://github.com/supermemoryai/cursor-supermemory">
Source code, issues, and detailed README.
</Card>

<Card title="Cursor Plugin" icon="/images/cursor-logo.svg" href="/integrations/cursor">
The same plugin, installed through Cursor.
</Card>
</CardGroup>
2 changes: 1 addition & 1 deletion apps/web/lib/plugin-catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export const PLUGIN_CATALOG: Record<string, PluginInfo> = {
name: "Cursor",
tagline: "Persistent memory, session hooks, and MCP tools inside Cursor",
icon: "/images/plugins/cursor.png",
docsUrl: "https://github.com/supermemoryai/cursor-supermemory#readme",
docsUrl: "https://supermemory.ai/docs/integrations/cursor",
githubUrl: "https://github.com/supermemoryai/cursor-supermemory",
installSteps: [
{
Expand Down
Loading