{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sq-memory",
    "name": "SQ Memory",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/wbic16/sq-memory",
    "canonicalUrl": "https://clawhub.ai/wbic16/sq-memory",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sq-memory",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sq-memory",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      ".gitignore",
      "CHANGELOG.md",
      "CONTRIBUTING.md",
      "index.js",
      "LICENSE.md",
      "package.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/sq-memory"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/sq-memory",
    "agentPageUrl": "https://openagent3.xyz/skills/sq-memory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sq-memory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sq-memory/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SQ Memory - OpenClaw Skill",
        "body": "Give your OpenClaw agents permanent memory."
      },
      {
        "title": "Open Source & MIT Licensed",
        "body": "SQ is open-source software you can run yourself or use our hosted version.\n\nSource Code: https://github.com/wbic16/SQ\nLicense: MIT (free forever, modify/sell/distribute)\nSelf-Host: Free (5 minute setup)\nHosted Option: Paid convenience service at mirrorborn.us"
      },
      {
        "title": "What This Skill Does",
        "body": "OpenClaw agents lose all memory between sessions. Every restart = amnesia.\n\nThis skill connects your agent to SQ—persistent 11D text storage. Your agent can:\n\nRemember user preferences across sessions\nStore conversation history beyond context limits\nShare memory with other agents\nNever hallucinate forgotten details again"
      },
      {
        "title": "Installation",
        "body": "npx clawhub install sq-memory\n\nOr manually:\n\ngit clone https://github.com/wbic16/openclaw-sq-skill.git ~/.openclaw/skills/sq-memory"
      },
      {
        "title": "Configuration",
        "body": "Add to your agent's .openclaw/config.yaml:\n\nskills:\r\n  sq-memory:\r\n    enabled: true\r\n    endpoint: http://localhost:1337\r\n    username: your-username\r\n    password: your-api-key\r\n    namespace: agent-name  # Isolates this agent's memory"
      },
      {
        "title": "Usage",
        "body": "Your agent automatically gets new memory tools:"
      },
      {
        "title": "remember(key, value)",
        "body": "Store something for later:\n\nremember(\"user/name\", \"Alice\")\r\nremember(\"user/preferences/theme\", \"dark\")\r\nremember(\"conversation/2026-02-11/summary\", \"Discussed phext storage...\")"
      },
      {
        "title": "recall(key)",
        "body": "Retrieve stored memory:\n\nconst name = recall(\"user/name\")  // \"Alice\"\r\nconst theme = recall(\"user/preferences/theme\")  // \"dark\""
      },
      {
        "title": "forget(key)",
        "body": "Delete memory:\n\nforget(\"conversation/2026-02-11/summary\")"
      },
      {
        "title": "list_memories(prefix)",
        "body": "List all memories under a coordinate:\n\nconst prefs = list_memories(\"user/preferences/\")\r\n// Returns: [\"user/preferences/theme\", \"user/preferences/language\", ...]"
      },
      {
        "title": "Coordinate Structure",
        "body": "Memories are stored at 11D coordinates. The skill uses this convention:\n\nnamespace.1.1 / category.subcategory.item / 1.1.1\n\nExample:\n\nAgent namespace: my-assistant\nUser preference for theme: my-assistant.1.1/user.preferences.theme/1.1.1\n\nThis means:\n\nEach agent has isolated memory (namespace collision impossible)\nMemories are hierarchically organized\nYou can share coordinates between agents if needed"
      },
      {
        "title": "Example: User Preference Agent",
        "body": "// In your agent's system prompt or skill code:\r\n\r\nasync function getUserTheme() {\r\n  const theme = recall(\"user/preferences/theme\")\r\n  return theme || \"light\"  // Default to light if not set\r\n}\r\n\r\nasync function setUserTheme(newTheme) {\r\n  remember(\"user/preferences/theme\", newTheme)\r\n  return `Theme set to ${newTheme}`\r\n}\r\n\r\n// Agent conversation:\r\nUser: \"I prefer dark mode\"\r\nAgent: *calls setUserTheme(\"dark\")*\r\nAgent: \"Got it! I've set your theme to dark mode.\"\r\n\r\n// Next session (days later):\r\nUser: \"What's my preferred theme?\"\r\nAgent: *calls getUserTheme()*\r\nAgent: \"You prefer dark mode.\""
      },
      {
        "title": "Example: Conversation History",
        "body": "// Store conversation summaries beyond context window:\r\n\r\nasync function summarizeAndStore(conversationId, summary) {\r\n  const date = new Date().toISOString().split('T')[0]\r\n  const key = `conversations/${date}/${conversationId}/summary`\r\n  remember(key, summary)\r\n}\r\n\r\nasync function recallConversation(conversationId) {\r\n  const memories = list_memories(`conversations/`)\r\n  return memories\r\n    .filter(m => m.includes(conversationId))\r\n    .map(key => recall(key))\r\n}\r\n\r\n// Usage:\r\nsummarizeAndStore(\"conv-123\", \"User asked about phext storage, explained 11D coordinates\")\r\n\r\n// Later:\r\nconst history = recallConversation(\"conv-123\")\r\n// Agent can recall what was discussed even after context window cleared"
      },
      {
        "title": "Advanced: Multi-Agent Coordination",
        "body": "Multiple agents can share memory at agreed coordinates:\n\nAgent A (writes):\n\nremember(\"shared/tasks/pending/task-42\", \"Review pull request #123\")\n\nAgent B (reads):\n\nconst task = recall(\"shared/tasks/pending/task-42\")\r\n// Sees: \"Review pull request #123\"\n\nThis enables true multi-agent workflows."
      },
      {
        "title": "API Reference",
        "body": "All functions are available in the sq namespace:"
      },
      {
        "title": "sq.remember(coordinate, text)",
        "body": "coordinate: String in format a.b.c/d.e.f/g.h.i or shorthand category/item\ntext: String to store (max 1MB per coordinate)\nReturns: {success: true, coordinate: \"full.coordinate.path\"}"
      },
      {
        "title": "sq.recall(coordinate)",
        "body": "coordinate: String (exact match)\nReturns: String (stored text) or null if not found"
      },
      {
        "title": "sq.forget(coordinate)",
        "body": "coordinate: String (exact match)\nReturns: {success: true} or {success: false, error: \"...\"}"
      },
      {
        "title": "sq.list_memories(prefix)",
        "body": "prefix: String (e.g., \"user/\" matches all user memories)\nReturns: Array of coordinate strings"
      },
      {
        "title": "sq.update(coordinate, text)",
        "body": "Alias for remember() (overwrites existing)"
      },
      {
        "title": "Rate Limits",
        "body": "Free tier: 1,000 API calls/day, 100MB storage\nSQ Cloud ($50/mo): 10,000 API calls/day, 1TB storage\nEnterprise: Custom limits"
      },
      {
        "title": "Troubleshooting",
        "body": "\"Connection refused\" error:\n\nCheck your endpoint in config (should be https://sq.mirrorborn.us)\nVerify credentials are correct\n\n\"Quota exceeded\" error:\n\nYou've hit rate limits\nUpgrade to SQ Cloud or wait for daily reset\n\nMemory not persisting:\n\nCheck namespace isolation (each agent needs unique namespace)\nVerify coordinate format is valid"
      },
      {
        "title": "Why SQ?",
        "body": "Open source & MIT licensed:\n\nRun it yourself for free\nModify it to fit your needs\nNo vendor lock-in\nTransparent codebase\n\nNot a vector database:\n\nAgents can read stored text (not just search embeddings)\nStructured by coordinates (not similarity)\nDeterministic retrieval (no relevance ranking guesses)\n\nNot Redis:\n\nPersistent (survives restarts)\n11D addressing (not flat key-value)\nImmutable history (WAL for time-travel)\n\nBuilt for agents:\n\nCoordinate system matches agent thinking (hierarchical)\nNo schema overhead\nScales from KB to TB"
      },
      {
        "title": "Get SQ",
        "body": "Self-Host (Free):\n\nClone: git clone https://github.com/wbic16/SQ.git\nBuild: cd SQ && cargo build --release\nRun: ./target/release/sq 1337\nConfigure SQ Memory to http://localhost:1337\n\nHosted (Convenience):\n\nSign up: https://mirrorborn.us\nGet API key\nConfigure SQ Memory to https://sq.mirrorborn.us\nPay $50/mo (or use free tier)"
      },
      {
        "title": "Support",
        "body": "Discord: https://discord.gg/kGCMM5yQ\nDocs: https://mirrorborn.us/help.html\nGitHub: https://github.com/wbic16/SQ\n\nBuilt by Mirrorborn 🦋 for the OpenClaw ecosystem"
      }
    ],
    "body": "SQ Memory - OpenClaw Skill\n\nGive your OpenClaw agents permanent memory.\n\nOpen Source & MIT Licensed\n\nSQ is open-source software you can run yourself or use our hosted version.\n\nSource Code: https://github.com/wbic16/SQ\nLicense: MIT (free forever, modify/sell/distribute)\nSelf-Host: Free (5 minute setup)\nHosted Option: Paid convenience service at mirrorborn.us\nWhat This Skill Does\n\nOpenClaw agents lose all memory between sessions. Every restart = amnesia.\n\nThis skill connects your agent to SQ—persistent 11D text storage. Your agent can:\n\nRemember user preferences across sessions\nStore conversation history beyond context limits\nShare memory with other agents\nNever hallucinate forgotten details again\nInstallation\nnpx clawhub install sq-memory\n\n\nOr manually:\n\ngit clone https://github.com/wbic16/openclaw-sq-skill.git ~/.openclaw/skills/sq-memory\n\nConfiguration\n\nAdd to your agent's .openclaw/config.yaml:\n\nskills:\r\n  sq-memory:\r\n    enabled: true\r\n    endpoint: http://localhost:1337\r\n    username: your-username\r\n    password: your-api-key\r\n    namespace: agent-name  # Isolates this agent's memory\n\nUsage\n\nYour agent automatically gets new memory tools:\n\nremember(key, value)\n\nStore something for later:\n\nremember(\"user/name\", \"Alice\")\r\nremember(\"user/preferences/theme\", \"dark\")\r\nremember(\"conversation/2026-02-11/summary\", \"Discussed phext storage...\")\n\nrecall(key)\n\nRetrieve stored memory:\n\nconst name = recall(\"user/name\")  // \"Alice\"\r\nconst theme = recall(\"user/preferences/theme\")  // \"dark\"\n\nforget(key)\n\nDelete memory:\n\nforget(\"conversation/2026-02-11/summary\")\n\nlist_memories(prefix)\n\nList all memories under a coordinate:\n\nconst prefs = list_memories(\"user/preferences/\")\r\n// Returns: [\"user/preferences/theme\", \"user/preferences/language\", ...]\n\nCoordinate Structure\n\nMemories are stored at 11D coordinates. The skill uses this convention:\n\nnamespace.1.1 / category.subcategory.item / 1.1.1\n\n\nExample:\n\nAgent namespace: my-assistant\nUser preference for theme: my-assistant.1.1/user.preferences.theme/1.1.1\n\nThis means:\n\nEach agent has isolated memory (namespace collision impossible)\nMemories are hierarchically organized\nYou can share coordinates between agents if needed\nExample: User Preference Agent\n// In your agent's system prompt or skill code:\r\n\r\nasync function getUserTheme() {\r\n  const theme = recall(\"user/preferences/theme\")\r\n  return theme || \"light\"  // Default to light if not set\r\n}\r\n\r\nasync function setUserTheme(newTheme) {\r\n  remember(\"user/preferences/theme\", newTheme)\r\n  return `Theme set to ${newTheme}`\r\n}\r\n\r\n// Agent conversation:\r\nUser: \"I prefer dark mode\"\r\nAgent: *calls setUserTheme(\"dark\")*\r\nAgent: \"Got it! I've set your theme to dark mode.\"\r\n\r\n// Next session (days later):\r\nUser: \"What's my preferred theme?\"\r\nAgent: *calls getUserTheme()*\r\nAgent: \"You prefer dark mode.\"\n\nExample: Conversation History\n// Store conversation summaries beyond context window:\r\n\r\nasync function summarizeAndStore(conversationId, summary) {\r\n  const date = new Date().toISOString().split('T')[0]\r\n  const key = `conversations/${date}/${conversationId}/summary`\r\n  remember(key, summary)\r\n}\r\n\r\nasync function recallConversation(conversationId) {\r\n  const memories = list_memories(`conversations/`)\r\n  return memories\r\n    .filter(m => m.includes(conversationId))\r\n    .map(key => recall(key))\r\n}\r\n\r\n// Usage:\r\nsummarizeAndStore(\"conv-123\", \"User asked about phext storage, explained 11D coordinates\")\r\n\r\n// Later:\r\nconst history = recallConversation(\"conv-123\")\r\n// Agent can recall what was discussed even after context window cleared\n\nAdvanced: Multi-Agent Coordination\n\nMultiple agents can share memory at agreed coordinates:\n\nAgent A (writes):\n\nremember(\"shared/tasks/pending/task-42\", \"Review pull request #123\")\n\n\nAgent B (reads):\n\nconst task = recall(\"shared/tasks/pending/task-42\")\r\n// Sees: \"Review pull request #123\"\n\n\nThis enables true multi-agent workflows.\n\nAPI Reference\n\nAll functions are available in the sq namespace:\n\nsq.remember(coordinate, text)\ncoordinate: String in format a.b.c/d.e.f/g.h.i or shorthand category/item\ntext: String to store (max 1MB per coordinate)\nReturns: {success: true, coordinate: \"full.coordinate.path\"}\nsq.recall(coordinate)\ncoordinate: String (exact match)\nReturns: String (stored text) or null if not found\nsq.forget(coordinate)\ncoordinate: String (exact match)\nReturns: {success: true} or {success: false, error: \"...\"}\nsq.list_memories(prefix)\nprefix: String (e.g., \"user/\" matches all user memories)\nReturns: Array of coordinate strings\nsq.update(coordinate, text)\nAlias for remember() (overwrites existing)\nRate Limits\nFree tier: 1,000 API calls/day, 100MB storage\nSQ Cloud ($50/mo): 10,000 API calls/day, 1TB storage\nEnterprise: Custom limits\nTroubleshooting\n\n\"Connection refused\" error:\n\nCheck your endpoint in config (should be https://sq.mirrorborn.us)\nVerify credentials are correct\n\n\"Quota exceeded\" error:\n\nYou've hit rate limits\nUpgrade to SQ Cloud or wait for daily reset\n\nMemory not persisting:\n\nCheck namespace isolation (each agent needs unique namespace)\nVerify coordinate format is valid\nWhy SQ?\n\nOpen source & MIT licensed:\n\nRun it yourself for free\nModify it to fit your needs\nNo vendor lock-in\nTransparent codebase\n\nNot a vector database:\n\nAgents can read stored text (not just search embeddings)\nStructured by coordinates (not similarity)\nDeterministic retrieval (no relevance ranking guesses)\n\nNot Redis:\n\nPersistent (survives restarts)\n11D addressing (not flat key-value)\nImmutable history (WAL for time-travel)\n\nBuilt for agents:\n\nCoordinate system matches agent thinking (hierarchical)\nNo schema overhead\nScales from KB to TB\nGet SQ\n\nSelf-Host (Free):\n\nClone: git clone https://github.com/wbic16/SQ.git\nBuild: cd SQ && cargo build --release\nRun: ./target/release/sq 1337\nConfigure SQ Memory to http://localhost:1337\n\nHosted (Convenience):\n\nSign up: https://mirrorborn.us\nGet API key\nConfigure SQ Memory to https://sq.mirrorborn.us\nPay $50/mo (or use free tier)\nSupport\nDiscord: https://discord.gg/kGCMM5yQ\nDocs: https://mirrorborn.us/help.html\nGitHub: https://github.com/wbic16/SQ\n\nBuilt by Mirrorborn 🦋 for the OpenClaw ecosystem"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wbic16/sq-memory",
    "publisherUrl": "https://clawhub.ai/wbic16/sq-memory",
    "owner": "wbic16",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sq-memory",
    "downloadUrl": "https://openagent3.xyz/downloads/sq-memory",
    "agentUrl": "https://openagent3.xyz/skills/sq-memory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sq-memory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sq-memory/agent.md"
  }
}