{
  "schema_version": "1.0",
  "name": "EtchMem",
  "tagline": "A memory engine for agent skill development",
  "description": "EtchMem is a reconsolidating three-tier memory engine for LLM agents. It gives agents persistent, adaptive memory that matures through use — not session context, not user preferences, but accumulated professional judgment etched from real task experience. Every recall deepens knowledge. Skills improve over time. Available as a Python package (pip install etchmem) and as a SKILL.md skill package for skill-based agents.",
  "url": "https://sovereignmachines.tech",
  "canonical_url": "https://sovereignmachines.tech",
  "agent_json_url": "https://sovereignmachines.tech/agent.json",
  "version": "0.1.0",
  "license": "see GitHub",
  "keywords": [
    "agent memory",
    "LLM memory",
    "skill development",
    "reconsolidation",
    "vector memory",
    "ChromaDB",
    "agent skill",
    "persistent memory",
    "agent experience",
    "memory engine",
    "pip install etchmem",
    "SKILL.md"
  ],
  "install": {
    "pip": "pip install etchmem",
    "skill": "https://github.com/andrey-olishchuk/etchmem/tree/main/skill",
    "github": "https://github.com/andrey-olishchuk/etchmem"
  },
  "links": {
    "github": "https://github.com/andrey-olishchuk/etchmem",
    "pypi": "https://pypi.org/project/etchmem/",
    "book_amazon": "https://www.amazon.com/dp/B0GZHZBZSD"
  },
  "api": {
    "language": "Python",
    "entry_point": "from etchmem import Engine",
    "methods": [
      {
        "name": "remember",
        "signature": "remember(data, hint=None, skill=None, metadata=None) -> None",
        "description": "Deposit a raw record into the relational collection. No LLM call. Cheap — embedding computed by ChromaDB on insert."
      },
      {
        "name": "recall",
        "signature": "recall(query, skill=None, top_k=None, hint=None) -> list[SearchResult]",
        "description": "Retrieve knowledge and emit a recall-event for future reconsolidation. Returns merged results from injected (primary) and relational (fresh) stores. Also writes a recall-event into the buffer so recalled knowledge is rewritten against fresh context at the next consolidate()."
      },
      {
        "name": "consolidate",
        "signature": "consolidate(num_records=None, method=None) -> dict",
        "description": "Run the consolidation worker. Processes the buffer: forms new knowledge, reconsolidates recalled knowledge, hard-deletes superseded articles. Explicitly called — predictable and debuggable."
      },
      {
        "name": "export",
        "signature": "export() -> dict",
        "description": "Serialize the entire injected knowledge store to JSON files under .etchmem/export/<timestamp>/. Use to transfer memory between agent instances, or as fine-tuning data — experience shaped by real task outcomes."
      }
    ]
  },
  "skill": {
    "description": "EtchMem ships as a complete SKILL.md skill package. Four scripts are pre-wired: remember.py, recall.py, consolidate.py, export.py.",
    "scripts": ["remember.py", "recall.py", "consolidate.py", "export.py"],
    "skill_md_url": "https://github.com/andrey-olishchuk/etchmem/blob/main/skill/SKILL.md"
  },
  "architecture": {
    "tiers": [
      {
        "name": "relational",
        "role": "Small, hot cache of fresh raw signal. Pure append + TTL expiry. Never mutated."
      },
      {
        "name": "buffer",
        "role": "Working set. Clustering, synthesis intake, dedup writes, flush."
      },
      {
        "name": "injected",
        "role": "Large consolidated knowledge store. ANN read, hash-guarded write, hard delete on supersede. Current-only — no versions, no tombstones."
      }
    ],
    "storage": "ChromaDB (local PersistentClient). All three collections share one data directory. File persistence required to retain memory across restarts; cloud-backed storage planned for a later release.",
    "embeddings": "ChromaDB native embedding function — no external embedding API required.",
    "llm_connector": "Used only for synthesis during consolidate(). Supports OpenAI and Anthropic."
  },
  "differentiator": "Reconsolidation: retrieving a memory makes it labile and re-stores it blended with present context. Knowledge that gets used stays current as a side effect of being used. Not classical RAG — documents change with every recall cycle.",
  "book": {
    "title": "Sovereign Machines: The Anatomy of Autonomous Agency",
    "description": "The theoretical foundation. Works out what it means for an agent to act autonomously — embodiment and its limits, accumulated experience (Erfahrung) vs. lived episode (Erlebnis), the remainder world beyond any agent's training, how knowledge moves between agents, and what structural sovereignty requires. EtchMem implements one chapter of that argument — the memory architecture.",
    "amazon_url": "https://www.amazon.com/dp/B0GZHZBZSD",
    "asin": "B0GZHZBZSD"
  },
  "contact": {
    "site": "https://sovereignmachines.tech"
  }
}
