diff --git a/README.md b/README.md
index 0d3b333..f894c0b 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,18 @@
-# Supermemory Plugin for Clawdbot
+# Supermemory Plugin for OpenClaw (previously Clawdbot)
-Long-term memory for Clawdbot. Automatically remembers conversations, recalls relevant context, and builds a persistent user profile — all powered by [Supermemory](https://supermemory.ai) cloud. No local infrastructure required.
+Long-term memory for OpenClaw. Automatically remembers conversations, recalls relevant context, and builds a persistent user profile — all powered by [Supermemory](https://supermemory.ai) cloud. No local infrastructure required.
## Install
```bash
-clawdbot plugins install @supermemoryai/clawdbot-supermemory
+openclaw plugins install @supermemory/openclaw-supermemory
```
-Restart Clawdbot after installing.
+Restart OpenClaw after installing.
## Configuration
@@ -21,19 +21,19 @@ The only required value is your Supermemory API key. Get one at [console.superme
Set it as an environment variable:
```bash
-export SUPERMEMORY_CLAWDBOT_API_KEY="sm_..."
+export SUPERMEMORY_OPENCLAW_API_KEY="sm_..."
```
-Or configure it directly in `clawdbot.json`:
+Or configure it directly in `openclaw.json`:
```json5
{
"plugins": {
"entries": {
- "clawdbot-supermemory": {
+ "openclaw-supermemory": {
"enabled": true,
"config": {
- "apiKey": "${SUPERMEMORY_CLAWDBOT_API_KEY}"
+ "apiKey": "${SUPERMEMORY_OPENCLAW_API_KEY}"
}
}
}
@@ -45,7 +45,7 @@ Or configure it directly in `clawdbot.json`:
| Key | Type | Default | Description |
|-----|------|---------|-------------|
-| `containerTag` | `string` | `clawdbot_{hostname}` | Memory namespace. All channels share this tag. |
+| `containerTag` | `string` | `openclaw_{hostname}` | Memory namespace. All channels share this tag. |
| `autoRecall` | `boolean` | `true` | Inject relevant memories before every AI turn. |
| `autoCapture` | `boolean` | `true` | Automatically store conversation content after every turn. |
| `maxRecallResults` | `number` | `10` | Max memories injected into context per turn. |
@@ -83,7 +83,7 @@ The AI can use these tools autonomously during conversations:
## CLI Commands
```bash
-clawdbot supermemory search # Search memories
-clawdbot supermemory profile # View user profile
-clawdbot supermemory wipe # Delete all memories (destructive, requires confirmation)
+openclaw supermemory search # Search memories
+openclaw supermemory profile # View user profile
+openclaw supermemory wipe # Delete all memories (destructive, requires confirmation)
```
diff --git a/bun.lock b/bun.lock
index adb504f..c01b0c4 100644
--- a/bun.lock
+++ b/bun.lock
@@ -12,7 +12,7 @@
"typescript": "^5.9.3",
},
"peerDependencies": {
- "clawdbot": ">=2026.1.24",
+ "openclaw": ">=2026.1.29",
},
},
},
@@ -617,8 +617,6 @@
"ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="],
- "clawdbot": ["clawdbot@2026.1.24", "", { "dependencies": { "@agentclientprotocol/sdk": "0.13.1", "@aws-sdk/client-bedrock": "^3.975.0", "@buape/carbon": "0.14.0", "@clack/prompts": "^0.11.0", "@grammyjs/runner": "^2.0.3", "@grammyjs/transformer-throttler": "^1.2.1", "@homebridge/ciao": "^1.3.4", "@line/bot-sdk": "^10.6.0", "@lydell/node-pty": "1.2.0-beta.3", "@mariozechner/pi-agent-core": "0.49.3", "@mariozechner/pi-ai": "0.49.3", "@mariozechner/pi-coding-agent": "0.49.3", "@mariozechner/pi-tui": "0.49.3", "@mozilla/readability": "^0.6.0", "@sinclair/typebox": "0.34.47", "@slack/bolt": "^4.6.0", "@slack/web-api": "^7.13.0", "@whiskeysockets/baileys": "7.0.0-rc.9", "ajv": "^8.17.1", "body-parser": "^2.2.2", "chalk": "^5.6.2", "chokidar": "^5.0.0", "chromium-bidi": "13.0.1", "cli-highlight": "^2.1.11", "commander": "^14.0.2", "croner": "^9.1.0", "detect-libc": "^2.1.2", "discord-api-types": "^0.38.37", "dotenv": "^17.2.3", "express": "^5.2.1", "file-type": "^21.3.0", "grammy": "^1.39.3", "hono": "4.11.4", "jiti": "^2.6.1", "json5": "^2.2.3", "jszip": "^3.10.1", "linkedom": "^0.18.12", "long": "5.3.2", "markdown-it": "^14.1.0", "node-edge-tts": "^1.2.9", "osc-progress": "^0.3.0", "pdfjs-dist": "^5.4.530", "playwright-core": "1.58.0", "proper-lockfile": "^4.1.2", "qrcode-terminal": "^0.12.0", "sharp": "^0.34.5", "sqlite-vec": "0.1.7-alpha.2", "tar": "7.5.4", "tslog": "^4.10.2", "undici": "^7.19.0", "ws": "^8.19.0", "yaml": "^2.8.2", "zod": "^4.3.6" }, "optionalDependencies": { "@napi-rs/canvas": "^0.1.88", "node-llama-cpp": "3.15.0" }, "bin": { "clawdbot": "dist/entry.js" } }, "sha512-foszbNXzk743kQBx2Nfc2KNlStZyBAVAYLQJ+KaONh009r8oB1a74kQ8wTnKX+SDNaQ9MvaE9tOisVUi+H3F+Q=="],
-
"cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
"cli-highlight": ["cli-highlight@2.1.11", "", { "dependencies": { "chalk": "^4.0.0", "highlight.js": "^10.7.1", "mz": "^2.4.0", "parse5": "^5.1.1", "parse5-htmlparser2-tree-adapter": "^6.0.0", "yargs": "^16.0.0" }, "bin": { "highlight": "bin/highlight" } }, "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg=="],
@@ -985,6 +983,8 @@
"openai": ["openai@6.10.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-ITxOGo7rO3XRMiKA5l7tQ43iNNu+iXGFAcf2t+aWVzzqRaS0i7m1K2BhxNdaveB+5eENhO0VY1FkiZzhBk4v3A=="],
+ "openclaw": ["openclaw@2026.1.29", "", { "dependencies": { "@agentclientprotocol/sdk": "0.13.1", "@aws-sdk/client-bedrock": "^3.975.0", "@buape/carbon": "0.14.0", "@clack/prompts": "^0.11.0", "@grammyjs/runner": "^2.0.3", "@grammyjs/transformer-throttler": "^1.2.1", "@homebridge/ciao": "^1.3.4", "@line/bot-sdk": "^10.6.0", "@lydell/node-pty": "1.2.0-beta.3", "@mariozechner/pi-agent-core": "0.49.3", "@mariozechner/pi-ai": "0.49.3", "@mariozechner/pi-coding-agent": "0.49.3", "@mariozechner/pi-tui": "0.49.3", "@mozilla/readability": "^0.6.0", "@sinclair/typebox": "0.34.47", "@slack/bolt": "^4.6.0", "@slack/web-api": "^7.13.0", "@whiskeysockets/baileys": "7.0.0-rc.9", "ajv": "^8.17.1", "body-parser": "^2.2.2", "chalk": "^5.6.2", "chokidar": "^5.0.0", "chromium-bidi": "13.0.1", "cli-highlight": "^2.1.11", "commander": "^14.0.2", "croner": "^9.1.0", "detect-libc": "^2.1.2", "discord-api-types": "^0.38.37", "dotenv": "^17.2.3", "express": "^5.2.1", "file-type": "^21.3.0", "grammy": "^1.39.3", "hono": "4.11.4", "jiti": "^2.6.1", "json5": "^2.2.3", "jszip": "^3.10.1", "linkedom": "^0.18.12", "long": "5.3.2", "markdown-it": "^14.1.0", "node-edge-tts": "^1.2.9", "osc-progress": "^0.3.0", "pdfjs-dist": "^5.4.530", "playwright-core": "1.58.0", "proper-lockfile": "^4.1.2", "qrcode-terminal": "^0.12.0", "sharp": "^0.34.5", "sqlite-vec": "0.1.7-alpha.2", "tar": "7.5.4", "tslog": "^4.10.2", "undici": "^7.19.0", "ws": "^8.19.0", "yaml": "^2.8.2", "zod": "^4.3.6" }, "optionalDependencies": { "@napi-rs/canvas": "^0.1.88", "node-llama-cpp": "3.15.0" }, "bin": { "openclaw": "openclaw.mjs" } }, "sha512-CVUOAH83BCrlnD56I1JahGVpg0mjp4fjJPdJg9q6Pijn/YdOopsfdInDqSeIEZwGtu/+0w69/uJccY23C9I+vg=="],
+
"ora": ["ora@8.2.0", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", "stdin-discarder": "^0.2.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="],
"osc-progress": ["osc-progress@0.3.0", "", {}, "sha512-4/8JfsetakdeEa4vAYV45FW20aY+B/+K8NEXp5Eiar3wR8726whgHrbSg5Ar/ZY1FLJ/AGtUqV7W2IVF+Gvp9A=="],
diff --git a/commands/cli.ts b/commands/cli.ts
index 17f22f5..09df7d7 100644
--- a/commands/cli.ts
+++ b/commands/cli.ts
@@ -1,15 +1,15 @@
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
import type { SupermemoryClient } from "../client.ts"
import type { SupermemoryConfig } from "../config.ts"
import { log } from "../logger.ts"
export function registerCli(
- api: ClawdbotPluginApi,
+ api: OpenClawPluginApi,
client: SupermemoryClient,
_cfg: SupermemoryConfig,
): void {
api.registerCli(
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
({ program }: { program: any }) => {
const cmd = program
.command("supermemory")
diff --git a/commands/slash.ts b/commands/slash.ts
index 1a7c416..f9dc795 100644
--- a/commands/slash.ts
+++ b/commands/slash.ts
@@ -1,11 +1,11 @@
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
import type { SupermemoryClient } from "../client.ts"
import type { SupermemoryConfig } from "../config.ts"
import { log } from "../logger.ts"
import { buildDocumentId, detectCategory } from "../memory.ts"
export function registerCommands(
- api: ClawdbotPluginApi,
+ api: OpenClawPluginApi,
client: SupermemoryClient,
_cfg: SupermemoryConfig,
getSessionKey: () => string | undefined,
@@ -28,7 +28,7 @@ export function registerCommands(
const sk = getSessionKey()
await client.addMemory(
text,
- { type: category, source: "clawdbot_command" },
+ { type: category, source: "openclaw_command" },
sk ? buildDocumentId(sk) : undefined,
)
diff --git a/config.ts b/config.ts
index dea6cc1..a687aa4 100644
--- a/config.ts
+++ b/config.ts
@@ -53,7 +53,7 @@ function sanitizeTag(raw: string): string {
}
function defaultContainerTag(): string {
- return sanitizeTag(`clawdbot_${hostname()}`)
+ return sanitizeTag(`openclaw_${hostname()}`)
}
export function parseConfig(raw: unknown): SupermemoryConfig {
@@ -69,11 +69,11 @@ export function parseConfig(raw: unknown): SupermemoryConfig {
const apiKey =
typeof cfg.apiKey === "string" && cfg.apiKey.length > 0
? resolveEnvVars(cfg.apiKey)
- : process.env.SUPERMEMORY_CLAWDBOT_API_KEY
+ : process.env.SUPERMEMORY_OPENCLAW_API_KEY
if (!apiKey) {
throw new Error(
- "supermemory: apiKey is required (set in plugin config or SUPERMEMORY_CLAWDBOT_API_KEY env var)",
+ "supermemory: apiKey is required (set in plugin config or SUPERMEMORY_OPENCLAW_API_KEY env var)",
)
}
diff --git a/hooks/capture.ts b/hooks/capture.ts
index d13df06..befbae2 100644
--- a/hooks/capture.ts
+++ b/hooks/capture.ts
@@ -89,7 +89,7 @@ export function buildCaptureHandler(
try {
await client.addMemory(
content,
- { source: "clawdbot", timestamp: new Date().toISOString() },
+ { source: "openclaw", timestamp: new Date().toISOString() },
customId,
)
} catch (err) {
diff --git a/index.ts b/index.ts
index 68b9852..4b261b3 100644
--- a/index.ts
+++ b/index.ts
@@ -1,4 +1,4 @@
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
import { SupermemoryClient } from "./client.ts"
import { registerCli } from "./commands/cli.ts"
import { registerCommands } from "./commands/slash.ts"
@@ -12,13 +12,13 @@ import { registerSearchTool } from "./tools/search.ts"
import { registerStoreTool } from "./tools/store.ts"
export default {
- id: "clawdbot-supermemory",
+ id: "openclaw-supermemory",
name: "Supermemory",
- description: "Clawdbot powered by Supermemory plugin",
+ description: "OpenClaw powered by Supermemory plugin",
kind: "memory" as const,
configSchema: supermemoryConfigSchema,
- register(api: ClawdbotPluginApi) {
+ register(api: OpenClawPluginApi) {
const cfg = parseConfig(api.pluginConfig)
initLogger(api.logger, cfg.debug)
@@ -52,7 +52,7 @@ export default {
registerCli(api, client, cfg)
api.registerService({
- id: "clawdbot-supermemory",
+ id: "openclaw-supermemory",
start: () => {
api.logger.info("supermemory: connected")
},
diff --git a/clawdbot.plugin.json b/openclaw.plugin.json
similarity index 91%
rename from clawdbot.plugin.json
rename to openclaw.plugin.json
index 344a7d8..1ce5a54 100644
--- a/clawdbot.plugin.json
+++ b/openclaw.plugin.json
@@ -1,17 +1,17 @@
{
- "id": "clawdbot-supermemory",
+ "id": "openclaw-supermemory",
"kind": "memory",
"uiHints": {
"apiKey": {
"label": "Supermemory API Key",
"sensitive": true,
"placeholder": "sm_...",
- "help": "Your API key from console.supermemory.ai (or use ${SUPERMEMORY_CLAWDBOT_API_KEY})"
+ "help": "Your API key from console.supermemory.ai (or use ${SUPERMEMORY_OPENCLAW_API_KEY})"
},
"containerTag": {
"label": "Container Tag",
- "placeholder": "clawdbot_myhostname",
- "help": "Memory namespace. Default: clawdbot_{hostname}. All channels share this.",
+ "placeholder": "openclaw_myhostname",
+ "help": "Memory namespace. Default: openclaw_{hostname}. All channels share this.",
"advanced": true
},
"autoRecall": {
diff --git a/package.json b/package.json
index c995f31..962e7c8 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
- "name": "@supermemory/clawdbot-supermemory",
- "version": "1.0.0",
+ "name": "@supermemory/openclaw-supermemory",
+ "version": "1.0.1",
"type": "module",
- "description": "Clawdbot Supermemory memory plugin",
+ "description": "OpenClaw Supermemory memory plugin",
"license": "MIT",
"dependencies": {
"supermemory": "^4.0.0",
@@ -15,9 +15,9 @@
"build:lib": "esbuild lib/validate.ts --bundle --minify --format=esm --platform=node --target=es2022 --external:node:crypto --outfile=lib/validate.js"
},
"peerDependencies": {
- "clawdbot": ">=2026.1.24"
+ "openclaw": ">=2026.1.29"
},
- "clawdbot": {
+ "openclaw": {
"extensions": [
"./index.ts"
]
diff --git a/tools/forget.ts b/tools/forget.ts
index 7836da6..342838b 100644
--- a/tools/forget.ts
+++ b/tools/forget.ts
@@ -1,11 +1,11 @@
import { Type } from "@sinclair/typebox"
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
import type { SupermemoryClient } from "../client.ts"
import type { SupermemoryConfig } from "../config.ts"
import { log } from "../logger.ts"
export function registerForgetTool(
- api: ClawdbotPluginApi,
+ api: OpenClawPluginApi,
client: SupermemoryClient,
_cfg: SupermemoryConfig,
): void {
diff --git a/tools/profile.ts b/tools/profile.ts
index 90e2de6..d3d626c 100644
--- a/tools/profile.ts
+++ b/tools/profile.ts
@@ -1,11 +1,11 @@
import { Type } from "@sinclair/typebox"
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
import type { SupermemoryClient } from "../client.ts"
import type { SupermemoryConfig } from "../config.ts"
import { log } from "../logger.ts"
export function registerProfileTool(
- api: ClawdbotPluginApi,
+ api: OpenClawPluginApi,
client: SupermemoryClient,
_cfg: SupermemoryConfig,
): void {
diff --git a/tools/search.ts b/tools/search.ts
index 2e06b23..41b326e 100644
--- a/tools/search.ts
+++ b/tools/search.ts
@@ -1,11 +1,11 @@
import { Type } from "@sinclair/typebox"
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
import type { SupermemoryClient } from "../client.ts"
import type { SupermemoryConfig } from "../config.ts"
import { log } from "../logger.ts"
export function registerSearchTool(
- api: ClawdbotPluginApi,
+ api: OpenClawPluginApi,
client: SupermemoryClient,
_cfg: SupermemoryConfig,
): void {
diff --git a/tools/store.ts b/tools/store.ts
index b7b44f3..4ca2aa4 100644
--- a/tools/store.ts
+++ b/tools/store.ts
@@ -1,6 +1,6 @@
import { Type } from "@sinclair/typebox"
-import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"
-import { stringEnum } from "clawdbot/plugin-sdk"
+import type { OpenClawPluginApi } from "openclaw/plugin-sdk"
+import { stringEnum } from "openclaw/plugin-sdk"
import type { SupermemoryClient } from "../client.ts"
import type { SupermemoryConfig } from "../config.ts"
import { log } from "../logger.ts"
@@ -11,7 +11,7 @@ import {
} from "../memory.ts"
export function registerStoreTool(
- api: ClawdbotPluginApi,
+ api: OpenClawPluginApi,
client: SupermemoryClient,
_cfg: SupermemoryConfig,
getSessionKey: () => string | undefined,
@@ -37,7 +37,7 @@ export function registerStoreTool(
await client.addMemory(
params.text,
- { type: category, source: "clawdbot_tool" },
+ { type: category, source: "openclaw_tool" },
customId,
)
diff --git a/types/clawdbot.d.ts b/types/openclaw.d.ts
similarity index 56%
rename from types/clawdbot.d.ts
rename to types/openclaw.d.ts
index 2f6e899..b90713c 100644
--- a/types/clawdbot.d.ts
+++ b/types/openclaw.d.ts
@@ -1,5 +1,5 @@
-declare module "clawdbot/plugin-sdk" {
- export interface ClawdbotPluginApi {
+declare module "openclaw/plugin-sdk" {
+ export interface OpenClawPluginApi {
pluginConfig: unknown
logger: {
info: (msg: string) => void
@@ -7,18 +7,18 @@ declare module "clawdbot/plugin-sdk" {
error: (msg: string, ...args: unknown[]) => void
debug: (msg: string) => void
}
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
registerTool(tool: any, options: any): void
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
registerCommand(command: any): void
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
registerCli(handler: any, options?: any): void
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
registerService(service: any): void
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
on(event: string, handler: (...args: any[]) => any): void
}
- // biome-ignore lint/suspicious/noExplicitAny: clawdbot SDK does not ship types
+ // biome-ignore lint/suspicious/noExplicitAny: openclaw SDK does not ship types
export function stringEnum(values: readonly string[]): any
}