{"adoption": {"forks": 501, "observed_at": "2026-08-28T04:08:50.876840+00:00", "stars": 4466}, "canonical_url": "https://ross.abutalabs.com/products/openmemory", "card": {"archived": false, "artifact_type": "library", "description": "Local persistent memory store for LLM applications including claude desktop, github copilot, codex, antigravity, etc.", "domain": ["artificial-intelligence", "large-language-models", "developer-tools", "self-hosted"], "enriched": true, "function": ["vector-database", "rag", "llm-inference", "agent-framework", "mcp", "database", "sdk"], "health_score": 96, "homepage": "https://openmemory.cavira.app", "language": "TypeScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "experimental", "member_repos": ["CaviraOSS/OpenMemory"], "name": "CaviraOSS/OpenMemory", "platform": ["python", "cross-platform", "self-hosted"], "pushed_at": "2026-08-25T17:10:18+00:00", "repo": "CaviraOSS/OpenMemory", "stars": 4466, "tags": ["long-term-memory", "memory-engine", "cognitive-architecture", "local-first", "sqlite", "postgres", "temporal-knowledge-graph", "multi-sector-embeddings", "memory-decay", "langchain", "crewai", "autogen", "claude-desktop", "mcp-server", "ai-agents", "retrieval-augmented-generation", "nodejs", "docker"], "topics": ["ai", "ai-agents", "ai-infrastructure", "ai-memory", "artificial-intelligence", "cognitive-architecture", "embeddings", "gemini", "llm", "long-term-memory", "memory", "memory-engine", "memory-retrieval", "ollama", "openai", "openmemory", "rag", "supermemory", "vector-database", "one-line"], "urls": [], "use_cases": ["give my AI agent persistent memory across sessions", "remember user preferences in a chatbot between conversations", "add long-term memory to Claude Desktop via MCP", "self-hosted alternative to Mem0 or Supermemory", "store and recall episodic and semantic memories for LLM apps", "give each Streamlit app user persistent memory by user_id", "ingest PDFs and web pages into an agent's memory", "reduce token costs by not re-sending context every session"], "what_it_is": "OpenMemory is a local-first, self-hosted cognitive memory engine that gives LLM applications and AI agents persistent long-term memory, with multi-sector embeddings, temporal knowledge graphs, and adaptive memory decay. It ships as Python and Node SDKs (standalone SQLite mode or backend server mode) and integrates with OpenAI, LangChain, CrewAI, AutoGen, and MCP clients like Claude Desktop and Cursor.", "when_to_avoid": ["you need a battle-tested production system - the project is being rewritten with expected breaking changes and bugs", "you just need a plain vector database or simple RAG over documents", "you require guaranteed stability, long-term support, or enterprise SLAs", "you want a fully managed hosted memory service"], "when_to_choose": ["you want local-first, self-hosted memory with full data ownership and no vendor API calls", "you need explainable recall traces and multi-sector (episodic/semantic/emotional) memory rather than plain vector search", "you use LangChain, CrewAI, AutoGen, or MCP clients and want drop-in memory integration", "you want per-user memory scoping in multi-user applications"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openmemory", "repo": "CaviraOSS/OpenMemory", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.876840+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:20:38.419387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c81b615cb73b5186a327315f578e81bc0c0e58dc4d0fce02103a6520524c275", "fetched_at": "2026-08-28T04:08:50.876840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CaviraOSS/OpenMemory"}, {"content_hash": "c8da4059a1426b3302ec3423c72cf23be8996e25110a1b0f5d6674e6a9d10498", "fetched_at": "2026-08-29T09:07:36.437277+00:00", "kind": "homepage", "missing": false, "url": "https://openmemory.cavira.app"}, {"content_hash": "2920a115e1c2a81cdc80c0a157c11093aca98931aa8e69141da0a16aad692e85", "fetched_at": "2026-08-29T09:07:36.446488+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/introduction"}, {"content_hash": "a6a6f9b6d5d1d0a55d04e84d4edc32a167e0913932aacec93c002bc40f6dcb19", "fetched_at": "2026-08-29T09:07:36.448273+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/quick-start"}, {"content_hash": "f90482645a70ff8dc86f90c0e1e03387a6e9de6c64630915a9c4e9a24f41564e", "fetched_at": "2026-08-29T09:07:36.450211+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/api/ingestion"}, {"content_hash": "810063cd39ae4abac9e85a5d13b1cc81bf2994374d6fc4a5d5fb4d2b2698e872", "fetched_at": "2026-08-29T09:07:36.452022+00:00", "kind": "site_page", "missing": false, "url": "https://openmemory.cavira.app/docs/advanced/embedding-modes"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 22, "rhythm": 60}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 318, "days_push": 8, "days_rel": 264, "gap_med": 6.0, "n_releases_24m": 7}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}