38(5y5x6n_2HmS_YHTY=_Gt8VKcXqBC znuDJ?WZ8L%F#8So(#YQ+OUy;gz{&jpR)u!^6AsoE*<)*M%0-{FEgo=HCEe4A43X+)ncvdYJxzDIL;8u4NUrMRnE*`uyPSqxXhAk}_ z9=iA5kFQJ83b^LXl9{tKkQ^oxV>LeK4ADGm?Jc_!e91#LA}~%= !@e&& zI89j3vXFPRIyT3riz{0+ly=O?6^(%(%s npE&?QJQHBID-<9_6iahQ68k6k0bjvwZT>%`#RDz0dg} zpWS$!GEg He;agK?Llrb4^IK-HNX_eY%TpR`W*3>A}pEA0xe@rs?b zmoxg6(0#c}!%p{}N?~w8n6}tnUJupGw2@XY0y6qNl1}epLU1CzTj7TV&CxT*^V~~9 zW$i*=PqAmJfi=e7p76|9Kfu^LZDWjB#VaV)HId1;;)l^m!Ovf&mJI9sG ##lC>i4~ymy8>0=rWLtOM zvKN19K%xj=@@R^<91$nRT D_L*sDH7iz9f$61u ZO>TLsfW8CPs30(SY^)KIlp?#_oJb3U%hT5vxDTj)9uD zZd#_!lnZO_Kn{iA3+^;YP0YAl3)oEvEMrZ6#`I)ErJeA!O^co6!QW40)jCB)Un%+5 zw9Y5#icTNfDL^nV b~dRLyBP>6%5* z+*jmzP!kp{dJnV%7YwIJ|H~+>)dz Yg=D1c^dc J0d_$XfN2~`gX`CmQ%N%Oe zorIjWRNiczsN$7hui_b4tJm?81!@A1>ucdspz1`@g`JhjLQ3Xe*5px$1DgbPAmvVg zJ$3%|L7d0bt&kurL%Yq|1BWmwXh6^n&4vKbH#j=K-Z7$^5kq{^?M>IJ--CoC;-*{H zgo)468X)vebZO=@A*HHcYJw8CbcwQNRAc#Dz 2}}j=pNdmly}+j18FNXH$E7v wge<`j-4@s3|oPXPRH_9y555$K2k7?sne!ytc{&XC4UDV%4g z&U48f9f~sFwt#sP#NLm$fDvHf%HKcF#`Ev>6Ly6qWy_|b@CXnmW;L}k`MV!fCd~^} zc#iPV3}jxFxA~0IBl!PE^)}NI$<&nugkLwJiU?2?)I=w6Pg!^jnt|N%Kq1%&Bh{lf zF%6$`aV(7lnOIYqFXY|1I;HT%T>7WQPRsI9a2TGiMW*CIR`Y6
8pv{(fW79DH#*IGG7jaeO@6og8elvd+ zYx#kkJ;A$=(Rij$)#Ke|XvRG>GwLhz3-w#D8t?t#_}8>GAtp1P(IJkm4wQ4;mM`0o zVg-;%zRGQ7a&X9KU}7sHXJ5dk$BCESBij##zo PUJtd;itnNU6lXTLm#UtDkNFdOr{NV>Ui-{ugv|p z<1_PrP{t}6yJHbMhj>j^q(F9BJ0*wsZ XV_dJ0wP(S!!B_6?1$?~)HiuP z1PIbxIVMK2n+tN5AZe?iW*CjvlNvrvo(bu> =w{3 z)Ra_8qi=G1d?wJ^K{k0WPTATZ2d&1lQj7g&XGi(IT1p*%U6>@57y*H-DY!i?mEqQc zGNrh_u`ECOj9@6C)_tOsc;O-tf5BDBo{jt `5Z&bRc~XF!h-Xrp0EK{DZ5yTF~nep7c36zwatObY}I8Qb4FX*}|~l%=XGmS3hu| zEEJ+eVpYbffS%jgGbYZoeTa*|)+P_{`Ph539rXm_-Hk?zK2IMXMO0?k61Xeasfa}k zwvw5dLF}uRm5<)^44C@FkHb2ytZJBn2Q$89L`xp{zPaUZ2!UTOPL?%Aj+aFc!VZ|s zugaPp+Wap%g(98?C&W%jaaeHLdwbR0Kf%!3iHNOO{eJhX$2{sj-HT?1(OKOF`Icc3 z!4CF&I#PDOyFDIvK4HSKeR^}ub>%H+RM0&w>FtJd%-5?otFm>T9(&Uld*gy`=`~3i z1E-`PhhJh{J6*jNZGHu0y-3S-E|u5#k8l*9>-=5FeOQ?_9eqfNQo8|1WHH!xB80 zT{GkISt%iv^Ws~__FpL7_al*COGh 9o3TQ`@g=a%{Js9&dKEd^T(!cO4|wp zfotB$iXfY{a33NLY5RRis%Z^M;42#DhvPZWy&v9*!Yc9WSFTEfEKHF7@qE`hgot>3 z4#LwLhSoitqEeI_xOeGS`Ir)uOj+99d6r?3z-;IrT3Pi;oqjjo@g#xyhXvHq8}1l$ zI*#%X&4vW4uPUd66VW@5lq HQda!X0w`S+Xk`?Ujmpm z{d#5{BL-D1PP7uYmX$HL?^wPvG!0}YHoZvs4_fd0S(B74kRhh+>Ox$fmGMxF&6ETF ziE?|fAa@RFshrgqU6q>AwZ%7*CDv~8Mth4)Oo%L_YTneeU#kp(wNceNgf>DjMV?7m zVE7xE0bZ(M39qm#A5*n+jxzCJUnJk|UBtQXg}9!k%|EGZy#^M%vNDCz&c$@5SZdvx z@G1wDF6pU6s+V5qs&Cm 9nZ&U1 z0b6+9kYHhgMv3cuXetAKN^Ml;DTBUQa(|LvwQ}$K40O_QdhFok-5C`yc7@1}IZ_^# zf#X$nPh7-gQ$k-gQvY-~mqUv_q9Tgb{5nob{IPtEg*Nczbn>7OiBnI+4?dqlFla+k z s8!BG)eE9k~LY{zHdYplxZ5*qvU_+AgOw_3v4#3a6 zzYIvaHhil_^NdBu>*2qwBc$)-{khgQvSM7e&ZG%+!Ke#AY@U2&!3=P`IM-^QfuY0i zvBDhNdA}+ ?_-{TY6}x5XxaWoGQm zCYSj? wX;%(ZRjyYcE@yB>4d0eD5`^uD)grc_#r#ncZYZHb&{z%QBzLC6Z>)xt&0Rh_0k zB`ihO@6SbyIW j07}nMv;oUP>ii`@VkFCz(mjGgO=KPLLAs#WhzP6aD*>Bg)J$O@6)4{Q^l}O z1=_3 rQTB*F>tKo`sqfc1{h4?L$ sb$ROYBv8 zwaQPoUR&sy;Fanc*}g9#9WJ|#%UWc~Tf5hGPDy`3q5wSOlN7C#@ZdkH6g)lV>if6l zCG766*7SobLC?>fEO~tw8;|6#tyufh;b?B&xT{)!&$k$`nzJ`W2%&S{-1RYzDgWgQ z((}D`*PTvI;F}oM@1lA4?s5Ey-Z1%Z=@^-nv*=6TEJx$B&8f$=&Dxe&ym@Q-CyS%_ z0ORq6JKZ%TDb=7l!H)D(X$$1RR7K;Kj}z~W>{P^_Fr$Qpe)}oY8mOyo2KnmBM>A8B zHx`|1OQ~d9WUhZ_G#(}vm}Jhg8R;Q^{{amLy`>+jFo6 F {ql)SHflm063)8iPuJe?7-Xaaka+H6`WUP7lzoDWScauof1>v64 z$Im6&N4;p(TMGWx7~+L8bPHz(Ls4{->c4#b^Yh}k0z-JBKVjU}ZNs C* zoq5xox!&Z<`gyubdV@{&cZP~@(xHWU$q+(JK8^onUMzO{M|tVnWQYGbN%y6`)T{t0 z{w#CTyWGa{Nv1Aw? xk0jjyN&}L-&`o0MEoRf% zuB|%SCOH%P6vxazQQ|PJ2TmrEKpk;k@%w=L`}Vf4 6H1!#$sHfHIK79OkFRC41a^Q}Z7>3B5e(ffy<7Q#% zW+`ayVu^SFoa~&uEbP229Q+y_yn>wUg52CJ?0kak?6Mfda{p6<_l_2}R^I>X2K*Xd o{~#LR{2M{t(aO!!)Ws5zvbBD1npKlzj-UXtl1dVlFq6;!0|bV8VE_OC literal 0 HcmV?d00001 diff --git a/apps/docs/integrations/claude-code.mdx b/apps/docs/integrations/claude-code.mdx index 8d2909301..1a41f75c1 100644 --- a/apps/docs/integrations/claude-code.mdx +++ b/apps/docs/integrations/claude-code.mdx @@ -145,7 +145,7 @@ Per-repo overrides in `.claude/.supermemory-claude/config.json`. Run `/supermemo Source code, issues, and detailed README. - - Multi-platform memory for Telegram, WhatsApp, Discord, and more. + -+ Memory for your Cursor chats. diff --git a/apps/docs/integrations/codex.mdx b/apps/docs/integrations/codex.mdx index 008960158..179784602 100644 --- a/apps/docs/integrations/codex.mdx +++ b/apps/docs/integrations/codex.mdx @@ -170,7 +170,7 @@ tail -f ~/.codex-supermemory.log Source code, issues, and detailed README.- Memory plugin for Claude Code. + + Memory for your Cursor chats. diff --git a/apps/docs/integrations/cursor.mdx b/apps/docs/integrations/cursor.mdx new file mode 100644 index 000000000..67cbf681a --- /dev/null +++ b/apps/docs/integrations/cursor.mdx @@ -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 + ++Requires [Node.js](https://nodejs.org) on your `PATH`. Installing Cursor does not put one there. + + +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): + ++ + +Restart Cursor after installing the plugin or changing credentials. + +Check the connection any time with `/supermemory-status`. + ++ ```bash + echo 'export SUPERMEMORY_API_KEY="sm_..."' >> ~/.zshrc + source ~/.zshrc + ``` + ++ ```bash + echo 'export SUPERMEMORY_API_KEY="sm_..."' >> ~/.bashrc + source ~/.bashrc + ``` + ++ ```powershell + [System.Environment]::SetEnvironmentVariable("SUPERMEMORY_API_KEY", "sm_...", "User") + ``` + Restart your terminal after running this. + ++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 + +## 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_` from the installed plugin directory. + +Credentials are stored in `~/.supermemory-cursor/credentials.json`. + __ +``` + +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 + + +**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. + + +### 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 + ++ Source code, issues, and detailed README. + diff --git a/apps/docs/integrations/grok-bot.mdx b/apps/docs/integrations/grok-bot.mdx new file mode 100644 index 000000000..878a64cc5 --- /dev/null +++ b/apps/docs/integrations/grok-bot.mdx @@ -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 + ++ diff --git a/apps/web/lib/plugin-catalog.ts b/apps/web/lib/plugin-catalog.ts index 93a3d0e8c..480cc91ec 100644 --- a/apps/web/lib/plugin-catalog.ts +++ b/apps/web/lib/plugin-catalog.ts @@ -86,7 +86,7 @@ export const PLUGIN_CATALOG: Record+ Source code, issues, and detailed README. + + ++ The same plugin, installed through Cursor. + += { 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: [ {