{
  "schemaVersion": "1.0",
  "item": {
    "slug": "engram",
    "name": "Engram",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Dannydvm/engram",
    "canonicalUrl": "https://clawhub.ai/Dannydvm/engram",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/engram",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=engram",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "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/engram"
    },
    "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/engram",
    "agentPageUrl": "https://openagent3.xyz/skills/engram/agent",
    "manifestUrl": "https://openagent3.xyz/skills/engram/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/engram/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": "Engram: Persistent Memory for AI Agents",
        "body": "Engram gives you durable semantic memory that survives sessions, compaction, crashes. All local, no cloud, no token cost."
      },
      {
        "title": "Boot Sequence (MANDATORY)",
        "body": "On every session start, run:\n\nengram search \"<current task context>\" --limit 10\n\nExample: engram search \"client onboarding status churn risk\" --limit 10\n\nThis recalls relevant memories from previous sessions before you start work."
      },
      {
        "title": "Storing Memories",
        "body": "5 memory types: fact | decision | preference | event | relationship\n\n# Facts — objective information\nengram add \"API rate limit is 100 req/min\" --type fact --tags api,limits\n\n# Decisions — choices made\nengram add \"We chose PostgreSQL over MongoDB for better ACID\" --type decision --tags database\n\n# Preferences — user/client likes/dislikes\nengram add \"Dr. Steph prefers text over calls\" --type preference --tags dr-steph,communication\n\n# Events — milestones, dates\nengram add \"Launched v2.0 on January 15, 2026\" --type event --tags launch,milestone\n\n# Relationships — people, roles, connections  \nengram add \"Mia is client manager, reports to Danny\" --type relationship --tags team,roles\n\nWhen to store:\n\nClient status changes (churn risk, upsell opportunity, complaints)\nImportant decisions made about projects/clients\nFacts learned during work (credentials, preferences, dates)\nMilestones completed (onboarding steps, launches)"
      },
      {
        "title": "Searching",
        "body": "Semantic search (finds meaning, not just keywords):\n\n# Basic search\nengram search \"database choice\" --limit 5\n\n# Filter by type\nengram search \"user preferences\" --type preference --limit 10\n\n# Filter by agent (see only your memories + global)\nengram search \"project status\" --agent theo --limit 10"
      },
      {
        "title": "Context-Aware Recall",
        "body": "Recall ranks by: semantic similarity × recency × salience × access frequency\n\nengram recall \"Setting up new client deployment\" --limit 10\n\nBetter than search when you need the most relevant memories for a specific context."
      },
      {
        "title": "Memory Relationships",
        "body": "7 relation types: related_to | supports | contradicts | caused_by | supersedes | part_of | references\n\n# Manual relation\nengram relate <memory-id-1> <memory-id-2> --type supports\n\n# Auto-detect relations via semantic similarity\nengram auto-relate <memory-id>\n\n# List relations for a memory\nengram relations <memory-id>\n\nRelations boost recall scoring — well-connected memories rank higher."
      },
      {
        "title": "Auto-Extract from Text",
        "body": "Ingest extracts memories from raw text (rules-based by default, optionally LLM):\n\n# From stdin\necho \"Mia confirmed client is happy. We decided to upsell SEO.\" | engram ingest\n\n# From command\nengram extract \"Sarah joined as CTO last Tuesday. Prefers async communication.\"\n\nUses memory types, tags, confidence scoring automatically."
      },
      {
        "title": "Management",
        "body": "# Stats (memory count, types, storage size)\nengram stats\n\n# Export backup\nengram export -o backup.json\n\n# Import backup\nengram import backup.json\n\n# View specific memory\nengram get <memory-id>\n\n# Soft delete (preserves for audit)\nengram forget <memory-id> --reason \"outdated\"\n\n# Apply decay manually (usually runs daily automatically)\nengram decay"
      },
      {
        "title": "Memory Decay",
        "body": "Inspired by biological memory:\n\nEvery memory has salience (0.0 → 1.0)\nDaily decay: salience *= 0.99 (configurable)\nAccessing a memory boosts salience\nLow-salience memories fade from search results\nNothing deleted — archived memories can be recovered"
      },
      {
        "title": "Agent Scoping",
        "body": "4 scope levels: global → agent → user → session\n\nBy default:\n\nAgents see their own memories + global memories\n--agent <agentId> filters to specific agent\nScope isolation prevents memory bleed between agents"
      },
      {
        "title": "REST API",
        "body": "Server runs at http://localhost:3400 (start with engram serve).\n\n# Add memory\ncurl -X POST http://localhost:3400/api/memories \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\": \"...\", \"type\": \"fact\", \"tags\": [\"x\",\"y\"]}'\n\n# Search\ncurl \"http://localhost:3400/api/memories/search?q=query&limit=5\"\n\n# Recall with context\ncurl -X POST http://localhost:3400/api/recall \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"context\": \"...\", \"limit\": 10}'\n\n# Stats\ncurl http://localhost:3400/api/stats\n\nDashboard: http://localhost:3400/dashboard (visual search, browse, delete, export)"
      },
      {
        "title": "MCP Integration",
        "body": "Engram works as an MCP server. Add to your MCP client config:\n\n{\n  \"mcpServers\": {\n    \"engram\": {\n      \"command\": \"engram-mcp\"\n    }\n  }\n}\n\nMCP tools: engram_add, engram_search, engram_recall, engram_forget"
      },
      {
        "title": "Configuration",
        "body": "~/.engram/config.yaml:\n\nstorage:\n  path: ~/.engram\n\nembeddings:\n  provider: ollama           # or \"openai\"\n  model: nomic-embed-text\n  ollama_url: http://localhost:11434\n\nserver:\n  port: 3400\n  host: localhost\n\ndecay:\n  enabled: true\n  rate: 0.99                 # 1% decay per day\n  archive_threshold: 0.1\n\ndedup:\n  enabled: true\n  threshold: 0.95            # cosine similarity for dedup"
      },
      {
        "title": "Best Practices",
        "body": "Boot with recall — Always engram search \"<context>\" --limit 10 at session start\nType everything — Use correct memory types for better recall ranking\nTag generously — Tags enable filtering and cross-referencing\nIngest conversations — Use engram ingest after important exchanges\nLet decay work — Don't store trivial facts; let important memories naturally stay salient\nUse relations — auto-relate after adding interconnected memories\nScope by agent — Keep agent memories separate for clean context"
      },
      {
        "title": "Troubleshooting",
        "body": "Server not running?\n\nengram serve &\n# or install as daemon: see ~/.engram/daemon/install.sh\n\nEmbeddings failing?\n\nollama pull nomic-embed-text\ncurl http://localhost:11434/api/tags  # verify Ollama running\n\nWant to reset?\n\nrm -rf ~/.engram/memories.db ~/.engram/vectors.lance\nengram serve  # rebuilds from scratch\n\nCreated by: Danny Veiga (@dannyveigatx)\nSource: https://github.com/Dannydvm/engram-memory\nDocs: https://github.com/Dannydvm/engram-memory/blob/main/README.md"
      }
    ],
    "body": "Engram: Persistent Memory for AI Agents\n\nEngram gives you durable semantic memory that survives sessions, compaction, crashes. All local, no cloud, no token cost.\n\nBoot Sequence (MANDATORY)\n\nOn every session start, run:\n\nengram search \"<current task context>\" --limit 10\n\n\nExample: engram search \"client onboarding status churn risk\" --limit 10\n\nThis recalls relevant memories from previous sessions before you start work.\n\nStoring Memories\n\n5 memory types: fact | decision | preference | event | relationship\n\n# Facts — objective information\nengram add \"API rate limit is 100 req/min\" --type fact --tags api,limits\n\n# Decisions — choices made\nengram add \"We chose PostgreSQL over MongoDB for better ACID\" --type decision --tags database\n\n# Preferences — user/client likes/dislikes\nengram add \"Dr. Steph prefers text over calls\" --type preference --tags dr-steph,communication\n\n# Events — milestones, dates\nengram add \"Launched v2.0 on January 15, 2026\" --type event --tags launch,milestone\n\n# Relationships — people, roles, connections  \nengram add \"Mia is client manager, reports to Danny\" --type relationship --tags team,roles\n\n\nWhen to store:\n\nClient status changes (churn risk, upsell opportunity, complaints)\nImportant decisions made about projects/clients\nFacts learned during work (credentials, preferences, dates)\nMilestones completed (onboarding steps, launches)\nSearching\n\nSemantic search (finds meaning, not just keywords):\n\n# Basic search\nengram search \"database choice\" --limit 5\n\n# Filter by type\nengram search \"user preferences\" --type preference --limit 10\n\n# Filter by agent (see only your memories + global)\nengram search \"project status\" --agent theo --limit 10\n\nContext-Aware Recall\n\nRecall ranks by: semantic similarity × recency × salience × access frequency\n\nengram recall \"Setting up new client deployment\" --limit 10\n\n\nBetter than search when you need the most relevant memories for a specific context.\n\nMemory Relationships\n\n7 relation types: related_to | supports | contradicts | caused_by | supersedes | part_of | references\n\n# Manual relation\nengram relate <memory-id-1> <memory-id-2> --type supports\n\n# Auto-detect relations via semantic similarity\nengram auto-relate <memory-id>\n\n# List relations for a memory\nengram relations <memory-id>\n\n\nRelations boost recall scoring — well-connected memories rank higher.\n\nAuto-Extract from Text\n\nIngest extracts memories from raw text (rules-based by default, optionally LLM):\n\n# From stdin\necho \"Mia confirmed client is happy. We decided to upsell SEO.\" | engram ingest\n\n# From command\nengram extract \"Sarah joined as CTO last Tuesday. Prefers async communication.\"\n\n\nUses memory types, tags, confidence scoring automatically.\n\nManagement\n# Stats (memory count, types, storage size)\nengram stats\n\n# Export backup\nengram export -o backup.json\n\n# Import backup\nengram import backup.json\n\n# View specific memory\nengram get <memory-id>\n\n# Soft delete (preserves for audit)\nengram forget <memory-id> --reason \"outdated\"\n\n# Apply decay manually (usually runs daily automatically)\nengram decay\n\nMemory Decay\n\nInspired by biological memory:\n\nEvery memory has salience (0.0 → 1.0)\nDaily decay: salience *= 0.99 (configurable)\nAccessing a memory boosts salience\nLow-salience memories fade from search results\nNothing deleted — archived memories can be recovered\nAgent Scoping\n\n4 scope levels: global → agent → user → session\n\nBy default:\n\nAgents see their own memories + global memories\n--agent <agentId> filters to specific agent\nScope isolation prevents memory bleed between agents\nREST API\n\nServer runs at http://localhost:3400 (start with engram serve).\n\n# Add memory\ncurl -X POST http://localhost:3400/api/memories \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\": \"...\", \"type\": \"fact\", \"tags\": [\"x\",\"y\"]}'\n\n# Search\ncurl \"http://localhost:3400/api/memories/search?q=query&limit=5\"\n\n# Recall with context\ncurl -X POST http://localhost:3400/api/recall \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"context\": \"...\", \"limit\": 10}'\n\n# Stats\ncurl http://localhost:3400/api/stats\n\n\nDashboard: http://localhost:3400/dashboard (visual search, browse, delete, export)\n\nMCP Integration\n\nEngram works as an MCP server. Add to your MCP client config:\n\n{\n  \"mcpServers\": {\n    \"engram\": {\n      \"command\": \"engram-mcp\"\n    }\n  }\n}\n\n\nMCP tools: engram_add, engram_search, engram_recall, engram_forget\n\nConfiguration\n\n~/.engram/config.yaml:\n\nstorage:\n  path: ~/.engram\n\nembeddings:\n  provider: ollama           # or \"openai\"\n  model: nomic-embed-text\n  ollama_url: http://localhost:11434\n\nserver:\n  port: 3400\n  host: localhost\n\ndecay:\n  enabled: true\n  rate: 0.99                 # 1% decay per day\n  archive_threshold: 0.1\n\ndedup:\n  enabled: true\n  threshold: 0.95            # cosine similarity for dedup\n\nBest Practices\nBoot with recall — Always engram search \"<context>\" --limit 10 at session start\nType everything — Use correct memory types for better recall ranking\nTag generously — Tags enable filtering and cross-referencing\nIngest conversations — Use engram ingest after important exchanges\nLet decay work — Don't store trivial facts; let important memories naturally stay salient\nUse relations — auto-relate after adding interconnected memories\nScope by agent — Keep agent memories separate for clean context\nTroubleshooting\n\nServer not running?\n\nengram serve &\n# or install as daemon: see ~/.engram/daemon/install.sh\n\n\nEmbeddings failing?\n\nollama pull nomic-embed-text\ncurl http://localhost:11434/api/tags  # verify Ollama running\n\n\nWant to reset?\n\nrm -rf ~/.engram/memories.db ~/.engram/vectors.lance\nengram serve  # rebuilds from scratch\n\n\nCreated by: Danny Veiga (@dannyveigatx)\nSource: https://github.com/Dannydvm/engram-memory\nDocs: https://github.com/Dannydvm/engram-memory/blob/main/README.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Dannydvm/engram",
    "publisherUrl": "https://clawhub.ai/Dannydvm/engram",
    "owner": "Dannydvm",
    "version": "0.2.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/engram",
    "downloadUrl": "https://openagent3.xyz/downloads/engram",
    "agentUrl": "https://openagent3.xyz/skills/engram/agent",
    "manifestUrl": "https://openagent3.xyz/skills/engram/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/engram/agent.md"
  }
}