{
  "schemaVersion": "1.0",
  "item": {
    "slug": "hypabase-memory",
    "name": "Hypabase Memory",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/harshidwasekar/hypabase-memory",
    "canonicalUrl": "https://clawhub.ai/harshidwasekar/hypabase-memory",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/hypabase-memory",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hypabase-memory",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "claw.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",
      "slug": "hypabase-memory",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T21:20:27.568Z",
      "expiresAt": "2026-05-08T21:20:27.568Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hypabase-memory",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hypabase-memory",
        "contentDisposition": "attachment; filename=\"hypabase-memory-0.2.4.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "hypabase-memory"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/hypabase-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/hypabase-memory",
    "agentPageUrl": "https://openagent3.xyz/skills/hypabase-memory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hypabase-memory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hypabase-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": "Hypabase Memory",
        "body": "Persistent memory for agents. Stores preferences, decisions, facts, and events as a connected knowledge graph. Recalled by who, what, when, or why."
      },
      {
        "title": "Setup",
        "body": "Add the MCP server to your OpenClaw config (~/.openclaw/openclaw.json):\n\n{\n  \"mcpServers\": {\n    \"hypabase-memory\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"hypabase\", \"hypabase-memory\"],\n      \"env\": { \"HYPABASE_DB_PATH\": \"hypabase.db\" }\n    }\n  }\n}\n\nuvx handles all Python dependencies automatically. Requires uv."
      },
      {
        "title": "Quick start",
        "body": "Store a memory — one verb, roles for the participants:\n\nremember(penman='(prefers :subject Alice :object Python :memory_type semantic)')\n\nRecall it:\n\nrecall(entity=\"Alice\")                              # everything about Alice\nrecall(entity=\"Alice\", action=\"assign\", role=\"subject\")  # what Alice assigned\nrecall(entity=[\"Alice\", \"Bob\"])                     # memories involving both\nrecall(mood=\"planned\")                              # all plans"
      },
      {
        "title": "When to Remember",
        "body": "Store a memory when the user:\n\nMakes a decision or states a preference\nShares a fact about themselves, their team, or a project\nAssigns a task or delegates work\nDescribes an event, meeting, or outcome\nExplains a procedure or workflow"
      },
      {
        "title": "PENMAN Notation",
        "body": "Every memory is a verb with participants in role slots:\n\n(verb :role \"entity\" :role \"entity\" ...)\n\nExamples:\n\n(prefers :subject Alice :object Python :memory_type semantic)\n\n(assigned :subject Alice :object \"billing task\" :recipient Bob\n :instrument Jira :locus Monday :tense past :memory_type episodic)\n\n(has :subject \"quick sort\" :attribute \"time complexity\"\n :value \"O(n log n)\" :memory_type semantic)\n\nMultiple atoms in a single call:\n\n(deployed :subject Alice :object API :locus Monday :tense past)\n(reviewed :subject Bob :object API :locus Tuesday :tense past)\n\nOne action per memory. When a sentence contains multiple actions, decompose into separate atoms. Shared entities link them in the graph.\n\n\"Alice told Bob to migrate the database\":\n\n(told :subject Alice :recipient Bob :object \"database migration\" :tense past)\n(migrate :subject Bob :object database :mood planned)\n\nAny role slot can hold a nested atom:\n\n(believes :subject Alice :object (is :subject deadline :value Friday))"
      },
      {
        "title": "Entity Naming",
        "body": "Same string after lowercasing = same entity. Different strings = different entities until consolidate() merges them.\n\nPick one canonical name per entity and reuse it.\nUse full descriptive names: \"machine learning\" not \"ML\", \"JavaScript\" not \"JS\".\nCall consolidate() periodically to merge similar names via semantic similarity."
      },
      {
        "title": "remember(penman, source?, confidence?)",
        "body": "Store memories as PENMAN atoms.\n\npenman (required): One or more PENMAN atoms.\nsource (optional): Provenance source. Default: \"memory\".\nconfidence (optional): 0.0–1.0. Default: 1.0."
      },
      {
        "title": "recall(entity?, action?, role?, memory_type?, mood?, negated?, since?, before?, limit?, min_strength?)",
        "body": "Query memories. At least one parameter required.\n\nentity: Name or list of names.\naction: Filter by verb.\nrole: Filter by role (subject/object/instrument/recipient/source/locus/attribute/value).\nmemory_type: episodic / semantic / procedural.\nmood: actual / planned / uncertain / normative / conditional.\nnegated: true = only negated, false = only positive.\nsince / before: ISO date strings.\nlimit: Max results (default: 10).\nmin_strength: Minimum memory strength threshold."
      },
      {
        "title": "consolidate(entity?)",
        "body": "Merge similar entities and compress repeated memories."
      },
      {
        "title": "forget(older_than_days?, min_strength?, entity?)",
        "body": "Expire old or low-strength memories (soft delete)."
      },
      {
        "title": "Roles",
        "body": "Eight roles. Fill in what applies, skip what doesn't.\n\nPENMAN roleRecall roleMeaningExample:subjectsubjectWho or what it's aboutAlice:objectobjectWhat is acted onthe proposal:instrumentinstrumentTool, method, or meansSlack:recipientrecipientWho receives or benefitsBob:originsourceWhere it came fromthe old system:locuslocusWhere, when, or contextsprint review:attributeattributeA named propertytime complexity:valuevalueThe specific valueO(n log n)"
      },
      {
        "title": "Memory types",
        "body": "TypeUse forDecay rateepisodicEvents, meetings, conversationsFastsemanticFacts, preferences, definitionsSlowproceduralHow-to, workflows, processesSlowest"
      },
      {
        "title": "Moods",
        "body": "MoodWhen to useactualSomething that happened or is true (default)plannedSomething intended to happenuncertainSomething that might be truenormativeSomething that should or shouldn't beconditionalSomething that depends on a condition"
      },
      {
        "title": "Modifiers",
        "body": "ModifierValuesDefault:tensepast, present, future--:negatedtrue, falsefalse:importance0.0 to 1.0--:causeNested atom: why it happened--:purposeNested atom: what for--:conditionNested atom: if/when/unless--"
      },
      {
        "title": "Environment variables",
        "body": "HYPABASE_DB_PATH -- SQLite database path (default: hypabase.db)\nHYPABASE_EMBEDDER -- Embedder for semantic search:\n\nfastembed (default) -- BAAI/bge-small-en-v1.5 via ONNX\nopenai -- text-embedding-3-small (requires OPENAI_API_KEY)\nsentence-transformers -- all-MiniLM-L6-v2\nnone -- disable embeddings"
      }
    ],
    "body": "Hypabase Memory\n\nPersistent memory for agents. Stores preferences, decisions, facts, and events as a connected knowledge graph. Recalled by who, what, when, or why.\n\nSetup\n\nAdd the MCP server to your OpenClaw config (~/.openclaw/openclaw.json):\n\n{\n  \"mcpServers\": {\n    \"hypabase-memory\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"hypabase\", \"hypabase-memory\"],\n      \"env\": { \"HYPABASE_DB_PATH\": \"hypabase.db\" }\n    }\n  }\n}\n\n\nuvx handles all Python dependencies automatically. Requires uv.\n\nQuick start\n\nStore a memory — one verb, roles for the participants:\n\nremember(penman='(prefers :subject Alice :object Python :memory_type semantic)')\n\n\nRecall it:\n\nrecall(entity=\"Alice\")                              # everything about Alice\nrecall(entity=\"Alice\", action=\"assign\", role=\"subject\")  # what Alice assigned\nrecall(entity=[\"Alice\", \"Bob\"])                     # memories involving both\nrecall(mood=\"planned\")                              # all plans\n\nWhen to Remember\n\nStore a memory when the user:\n\nMakes a decision or states a preference\nShares a fact about themselves, their team, or a project\nAssigns a task or delegates work\nDescribes an event, meeting, or outcome\nExplains a procedure or workflow\nPENMAN Notation\n\nEvery memory is a verb with participants in role slots:\n\n(verb :role \"entity\" :role \"entity\" ...)\n\n\nExamples:\n\n(prefers :subject Alice :object Python :memory_type semantic)\n\n(assigned :subject Alice :object \"billing task\" :recipient Bob\n :instrument Jira :locus Monday :tense past :memory_type episodic)\n\n(has :subject \"quick sort\" :attribute \"time complexity\"\n :value \"O(n log n)\" :memory_type semantic)\n\n\nMultiple atoms in a single call:\n\n(deployed :subject Alice :object API :locus Monday :tense past)\n(reviewed :subject Bob :object API :locus Tuesday :tense past)\n\n\nOne action per memory. When a sentence contains multiple actions, decompose into separate atoms. Shared entities link them in the graph.\n\n\"Alice told Bob to migrate the database\":\n\n(told :subject Alice :recipient Bob :object \"database migration\" :tense past)\n(migrate :subject Bob :object database :mood planned)\n\n\nAny role slot can hold a nested atom:\n\n(believes :subject Alice :object (is :subject deadline :value Friday))\n\nEntity Naming\n\nSame string after lowercasing = same entity. Different strings = different entities until consolidate() merges them.\n\nPick one canonical name per entity and reuse it.\nUse full descriptive names: \"machine learning\" not \"ML\", \"JavaScript\" not \"JS\".\nCall consolidate() periodically to merge similar names via semantic similarity.\nTools\nremember(penman, source?, confidence?)\n\nStore memories as PENMAN atoms.\n\npenman (required): One or more PENMAN atoms.\nsource (optional): Provenance source. Default: \"memory\".\nconfidence (optional): 0.0–1.0. Default: 1.0.\nrecall(entity?, action?, role?, memory_type?, mood?, negated?, since?, before?, limit?, min_strength?)\n\nQuery memories. At least one parameter required.\n\nentity: Name or list of names.\naction: Filter by verb.\nrole: Filter by role (subject/object/instrument/recipient/source/locus/attribute/value).\nmemory_type: episodic / semantic / procedural.\nmood: actual / planned / uncertain / normative / conditional.\nnegated: true = only negated, false = only positive.\nsince / before: ISO date strings.\nlimit: Max results (default: 10).\nmin_strength: Minimum memory strength threshold.\nconsolidate(entity?)\n\nMerge similar entities and compress repeated memories.\n\nforget(older_than_days?, min_strength?, entity?)\n\nExpire old or low-strength memories (soft delete).\n\nReference\nRoles\n\nEight roles. Fill in what applies, skip what doesn't.\n\nPENMAN role\tRecall role\tMeaning\tExample\n:subject\tsubject\tWho or what it's about\tAlice\n:object\tobject\tWhat is acted on\tthe proposal\n:instrument\tinstrument\tTool, method, or means\tSlack\n:recipient\trecipient\tWho receives or benefits\tBob\n:origin\tsource\tWhere it came from\tthe old system\n:locus\tlocus\tWhere, when, or context\tsprint review\n:attribute\tattribute\tA named property\ttime complexity\n:value\tvalue\tThe specific value\tO(n log n)\nMemory types\nType\tUse for\tDecay rate\nepisodic\tEvents, meetings, conversations\tFast\nsemantic\tFacts, preferences, definitions\tSlow\nprocedural\tHow-to, workflows, processes\tSlowest\nMoods\nMood\tWhen to use\nactual\tSomething that happened or is true (default)\nplanned\tSomething intended to happen\nuncertain\tSomething that might be true\nnormative\tSomething that should or shouldn't be\nconditional\tSomething that depends on a condition\nModifiers\nModifier\tValues\tDefault\n:tense\tpast, present, future\t--\n:negated\ttrue, false\tfalse\n:importance\t0.0 to 1.0\t--\n:cause\tNested atom: why it happened\t--\n:purpose\tNested atom: what for\t--\n:condition\tNested atom: if/when/unless\t--\nEnvironment variables\nHYPABASE_DB_PATH -- SQLite database path (default: hypabase.db)\nHYPABASE_EMBEDDER -- Embedder for semantic search:\nfastembed (default) -- BAAI/bge-small-en-v1.5 via ONNX\nopenai -- text-embedding-3-small (requires OPENAI_API_KEY)\nsentence-transformers -- all-MiniLM-L6-v2\nnone -- disable embeddings"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/harshidwasekar/hypabase-memory",
    "publisherUrl": "https://clawhub.ai/harshidwasekar/hypabase-memory",
    "owner": "harshidwasekar",
    "version": "0.2.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/hypabase-memory",
    "downloadUrl": "https://openagent3.xyz/downloads/hypabase-memory",
    "agentUrl": "https://openagent3.xyz/skills/hypabase-memory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hypabase-memory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hypabase-memory/agent.md"
  }
}