{"id":"agent-episodic-semantic-memory-learning","slug":"agent-episodic-semantic-memory-learning","name":"Agent Episodic & Semantic Memory Consolidation (Cross-Session Learning)","shortName":"Episodic & semantic memory learning","problemStatement":"Extract durable user preferences, domain facts, and past episode outcomes from raw conversation and tool traces so an agent learns across sessions without bloating the context window or poisoning future runs with stale hallucinations.","whenNotTopPick":"Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector.","categoryIds":["cat-vector-memory"],"depotPickProviderId":"mem0","depotPickRationale":"Mem0 provides a dedicated extraction, deduplication, and conflict-resolution pipeline across user, session, and agent memory scopes ($0 Hobby up to 10k memories; $19/mo Starter as of 2026-10-28), separating durable semantic facts from episodic history with graph + vector retrieval.","runnersUpIds":["zep","letta","supabase-pgvector"],"weights":{"capabilityFit":0.28,"pricePerformance":0.16,"latencyReliability":0.16,"developerDx":0.16,"privacyPosture":0.1,"lockInRisk":0.06,"maturity":0.08},"methodologyNotes":"Weights capabilityFit highest: cross-session memory must handle contradiction resolution (when a user preference or repo invariant changes) and provenance tagging so unverified episodes never overwrite verified rules. Pair with LongMemEval and LOCOMO benchmarks.","tags":["learning","memory","episodic-memory","semantic-memory","self-improvement","longmemeval","consolidation"],"scoreMargin":0.12,"isNearTie":true,"pickConfidenceBand":"near_tie_co_pick","nearTie":{"isNearTie":true,"scoreMargin":0.12,"threshold":0.35,"pickConfidenceBand":"near_tie_co_pick","coPickProviderId":"zep","coPickProviderName":"Zep","coPickScore":7.51,"decidingFactor":"developerDx (8.8 vs 7.8)","methodologyWarning":"Top pick (7.63) and #2 runner-up (7.51) are separated by 0.12 points (<= 0.35 weight-sensitivity band). Treat them as co-picks and use the workload tie-breaker rule below rather than the raw composite decimal.","tieBreakerRule":"Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector."},"evidenceStatus":{"decisionRole":"independent_prior_and_candidate_generator","positioning":"The independent, agent-readable prior for choosing AI infrastructure — not a universal router, generic marketplace, or synthetic leaderboard.","freshnessThresholdDays":30,"freshness_policy":{"policy_version":"agentdepot.freshness_policy.v1","threshold_days":30},"freshness_state":"fresh","editorial_freshness_state":"stale_prior","unqualified_current_pick_allowed":true,"pick_qualification":"qualified_current_pick","promotionClass":"deterministic_source_reverified","evidenceClass":"editorial_prior","staleDowngraded":false,"effectiveConfidence":"medium_reverified","confidenceHalfWidth":0.5,"pickScoreAgeDays":3,"editorialJudgmentAgeDays":44,"pricingAgeDays":3,"isPickScoreStale":false,"isPricingStale":false,"editorialJudgmentAsOf":"2026-09-14","pricingVerifiedAt":"2026-10-25","outcomeVerifiedAt":null,"effectiveVerifiedAsOf":"2026-10-25","downgradeReasons":[],"stalenessWarning":"Editorial judgment scored on 2026-09-14 (44d ago); promoted to deterministic_source_reverified on 2026-10-25 via deterministic pricing/source gate.","promotionGate":{"deterministicPricingCheck":true,"approvedScoreReaffirm":false,"pendingHumanReviewBlock":false,"zeroUnverifiedSkus":true,"costEfficiencyConsistent":true,"lockInAndReliabilityConsistent":true,"secondModelOrRuleAudit":true,"countersignReceiptIds":[],"otsAttestationHead":"b32634d5784cbfe663be0a16cce4f60a3ff1c3d4490437be00361cb4ae5d5d59","sourceCheckDate":"2026-10-27","activePricingRowsCount":0,"freeResourcesCount":1,"runnerUpPricingRowsCount":0},"claimProvenance":{"claim_id":"claim:agent-episodic-semantic-memory-learning:mem0:depot-pick","provider_id":"mem0","jtbd_id":"agent-episodic-semantic-memory-learning","primary_url":"https://memnode.dev/articles/mem0-pricing-free-tier-limits-2026","source_type":"primary_pricing","source_revision":"sha256:39bdb16d5c411020","observed_at":"2026-10-28","checked_at":"2026-10-28","claim_support_state":"claim_specific_supported","max_allowed_evidence_class":"replicated_outcome","defect_codes":[],"sources":[{"original_url":"https://mem0.ai","final_url":"https://mem0.ai","redirected":false,"http_status":200,"reachable":true,"source_type":"generic_homepage","is_claim_specific":false,"source_revision":"sha256:b81792622dd0ee36","observed_at":"2026-10-28","checked_at":"2026-10-28"},{"original_url":"https://memnode.dev/articles/mem0-pricing-free-tier-limits-2026","final_url":"https://memnode.dev/articles/mem0-pricing-free-tier-limits-2026","redirected":false,"http_status":200,"reachable":true,"source_type":"primary_pricing","is_claim_specific":true,"source_revision":"sha256:39bdb16d5c411020","observed_at":"2026-10-28","checked_at":"2026-10-28"},{"original_url":"https://www.developersdigest.tech/blog/best-ai-agent-memory-providers-2026","final_url":"https://www.developersdigest.tech/blog/best-ai-agent-memory-providers-2026","redirected":false,"http_status":200,"reachable":true,"source_type":"primary_benchmark_or_status","is_claim_specific":true,"source_revision":"sha256:d783bf5ce02d57b3","observed_at":"2026-10-28","checked_at":"2026-10-28"}]},"verifiedOutcomeSummary":{"totalVerifiedReceipts":0,"byEvidenceTier":{"E0_ASSERTION":0,"E1_SOURCE_BOUND":0,"E2_DELIVERY":0,"E3_INDEPENDENT_OUTCOME":0,"E4_REPLICATED_OUTCOME":0},"bySubjectLayer":{"provider":0,"product":0,"model_version":0,"runtime_route":0}}},"pickScoreDetails":{"scoreRange":[7.13,8.13],"formattedScore":"7.6 ± 0.5 (7.1–8.1 · editorial_prior)","evidenceClass":"editorial_prior","promotionClass":"deterministic_source_reverified","staleDowngraded":false,"freshState":"fresh","freshness_state":"fresh","effectiveConfidence":"medium_reverified","confidenceInterval":{"low":7.13,"mid":7.63,"high":8.13,"halfWidth":0.5,"confidenceLevel":0.8,"basis":"deterministic_source_reverified_interval_0.5"},"editorialJudgmentAsOf":"2026-10-28","sourceAgeDays":44,"pricingVerifiedAt":"2026-10-25","pricingAgeDays":3,"outcomeVerifiedAt":null,"effectiveVerifiedAsOf":"2026-10-25","dissentingEvidence":["Retrieval metering surprises","Graph gated to higher tiers","Not a full vector DB","When not to use top pick: Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector.","Runner-up Zep (zep) is the primary alternative when constraints disqualify Mem0."],"whatWouldChangePick":["Caller constraint matching: Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector.","Live quota or rate-limit exhaustion on mem0 (pass ?exhausted=mem0 or liveQuota.exhaustedProviders=[\"mem0\"] to promote zep).","Active subscription or enterprise commit on zep combined with low switching-cost tolerance (existingSubscriptions + switchingCost.maxMigrationEffort=\"low\").","Sourced price increase >20% on https://mem0.ai or unverified SKU drift detected by npm run check:sources."],"claimProvenance":{"claim_id":"claim:agent-episodic-semantic-memory-learning:mem0:depot-pick","provider_id":"mem0","jtbd_id":"agent-episodic-semantic-memory-learning","primary_url":"https://memnode.dev/articles/mem0-pricing-free-tier-limits-2026","source_type":"primary_pricing","source_revision":"sha256:39bdb16d5c411020","observed_at":"2026-10-28","checked_at":"2026-10-28","claim_support_state":"claim_specific_supported","max_allowed_evidence_class":"replicated_outcome","defect_codes":[],"sources":[{"original_url":"https://mem0.ai","final_url":"https://mem0.ai","redirected":false,"http_status":200,"reachable":true,"source_type":"generic_homepage","is_claim_specific":false,"source_revision":"sha256:b81792622dd0ee36","observed_at":"2026-10-28","checked_at":"2026-10-28"},{"original_url":"https://memnode.dev/articles/mem0-pricing-free-tier-limits-2026","final_url":"https://memnode.dev/articles/mem0-pricing-free-tier-limits-2026","redirected":false,"http_status":200,"reachable":true,"source_type":"primary_pricing","is_claim_specific":true,"source_revision":"sha256:39bdb16d5c411020","observed_at":"2026-10-28","checked_at":"2026-10-28"},{"original_url":"https://www.developersdigest.tech/blog/best-ai-agent-memory-providers-2026","final_url":"https://www.developersdigest.tech/blog/best-ai-agent-memory-providers-2026","redirected":false,"http_status":200,"reachable":true,"source_type":"primary_benchmark_or_status","is_claim_specific":true,"source_revision":"sha256:d783bf5ce02d57b3","observed_at":"2026-10-28","checked_at":"2026-10-28"}]},"calibratedScore":{"point":7.63,"band":[7.13,8.13],"interval":{"lower":7.13,"upper":8.13,"half_width":0.5},"score_kind":"source_bound_prior_band","evidence_class":"source_bound","confidence":"low","confidence_ceiling":"medium","age_days":3,"dissent":["Retrieval metering surprises","Graph gated to higher tiers","Not a full vector DB","When not to use top pick: Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector.","Runner-up Zep (zep) is the primary alternative when constraints disqualify Mem0."],"what_would_change_this":["Caller constraint matching: Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector.","Live quota or rate-limit exhaustion on mem0 (pass ?exhausted=mem0 or liveQuota.exhaustedProviders=[\"mem0\"] to promote zep).","Active subscription or enterprise commit on zep combined with low switching-cost tolerance (existingSubscriptions + switchingCost.maxMigrationEffort=\"low\").","Sourced price increase >20% on https://mem0.ai or unverified SKU drift detected by npm run check:sources."],"subject_layer":"provider"},"subject_ref":{"layer":"provider","provider_id":"mem0","product_id":"mem0-core","model_id":null,"version":null,"route_class":null,"inheritance_policy":"no_cross_layer_inheritance"}},"runtimeRoutes":[{"routeId":"agent-episodic-semantic-memory-learning:mem0:primary","roleForJob":"depot_pick","provider":{"id":"mem0","slug":"mem0","name":"Mem0","website":"https://mem0.ai","status":"active"},"model":{"representativeModelId":"Mem0 Primary Runtime","skuId":null,"unit":null,"amountUsd":null,"sourceUrl":"https://mem0.ai","asOf":"2026-10-28"},"servingRoute":{"primaryRouteType":"self_hosted_or_oss_compatible","endpointPattern":"https://mem0.ai (self hosted or oss compatible)","aggregatorAlternatives":[{"aggregatorId":"direct-only","name":"Mem0 Direct API","routeType":"first_party","tradeoff":"Direct vendor SDK/REST contract; pair with runner-up for multi-vendor failover."}]},"accountAndQuota":{"freeTierAvailable":true,"freeTierSummary":"Mem0 (oss, asOf 2026-10-25)","rateLimitsSummary":"Hobby: Hobby For individuals exploring and building side projects. Free … Unlimited end users 10,","subscriptionFirstEligible":true,"documentedPlansCount":3},"regions":{"supportedRegions":["global","us"],"multiRegionFailover":true,"euResidencyAvailable":true},"toolSchemaSupport":{"strictJsonSchema":true,"parallelToolCalls":false,"mcpServerAvailable":true,"streamingSupported":true},"latencyTier":{"tier":"standard_1s_to_5s","latencyReliabilityScore":7.4,"coldStartNotes":"Standard warm pool; check provider SLA for burst concurrency"},"privacyConfig":{"privacyPostureScore":7,"zeroDataRetentionAvailable":false,"trainsOnApiDataByDefault":false,"hipaaEligible":false,"selfHostable":true},"availabilityStatus":{"providerStatus":"active","verifiedActiveSkus":0,"unverifiedSkus":0,"liveFailoverTargetId":"zep"},"subject_ref":{"layer":"runtime_route","subject_id":"runtime_route:mem0:mem0-primary:self_hosted_or_oss_compatible:global","provider_id":"mem0","product_id":"mem0-core","model_id":"mem0-primary","version":"2026-10-28","route_class":"self_hosted_or_oss_compatible","region":"global","score_status":"unknown","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"},"distinctRouteSubjects":[{"layer":"runtime_route","subject_id":"runtime_route:mem0:mem0-primary:direct_api:global","provider_id":"mem0","product_id":"mem0-core","model_id":"mem0-primary","version":"2026-10-28","route_class":"direct_api","region":"global","score_status":"layer_evidenced","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"}]},{"routeId":"agent-episodic-semantic-memory-learning:zep:primary","roleForJob":"runner_up","provider":{"id":"zep","slug":"zep","name":"Zep","website":"https://www.getzep.com","status":"active"},"model":{"representativeModelId":"Zep Primary Runtime","skuId":null,"unit":null,"amountUsd":null,"sourceUrl":"https://www.getzep.com","asOf":"2026-10-28"},"servingRoute":{"primaryRouteType":"self_hosted_or_oss_compatible","endpointPattern":"https://www.getzep.com (self hosted or oss compatible)","aggregatorAlternatives":[{"aggregatorId":"direct-only","name":"Zep Direct API","routeType":"first_party","tradeoff":"Direct vendor SDK/REST contract; pair with runner-up for multi-vendor failover."}]},"accountAndQuota":{"freeTierAvailable":false,"freeTierSummary":null,"rateLimitsSummary":"Free: Prototyping? Start free with 10,000 credits a month. … What are the Free plan limits? · 10","subscriptionFirstEligible":true,"documentedPlansCount":3},"regions":{"supportedRegions":["global","us"],"multiRegionFailover":true,"euResidencyAvailable":true},"toolSchemaSupport":{"strictJsonSchema":false,"parallelToolCalls":false,"mcpServerAvailable":false,"streamingSupported":true},"latencyTier":{"tier":"standard_1s_to_5s","latencyReliabilityScore":7.6,"coldStartNotes":"Standard warm pool; check provider SLA for burst concurrency"},"privacyConfig":{"privacyPostureScore":7.8,"zeroDataRetentionAvailable":false,"trainsOnApiDataByDefault":false,"hipaaEligible":false,"selfHostable":true},"availabilityStatus":{"providerStatus":"active","verifiedActiveSkus":0,"unverifiedSkus":0,"liveFailoverTargetId":"mem0"},"subject_ref":{"layer":"runtime_route","subject_id":"runtime_route:zep:zep-primary:self_hosted_or_oss_compatible:global","provider_id":"zep","product_id":"zep-core","model_id":"zep-primary","version":"2026-10-28","route_class":"self_hosted_or_oss_compatible","region":"global","score_status":"unknown","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"},"distinctRouteSubjects":[{"layer":"runtime_route","subject_id":"runtime_route:zep:zep-primary:direct_api:global","provider_id":"zep","product_id":"zep-core","model_id":"zep-primary","version":"2026-10-28","route_class":"direct_api","region":"global","score_status":"layer_evidenced","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"}]},{"routeId":"agent-episodic-semantic-memory-learning:letta:primary","roleForJob":"runner_up","provider":{"id":"letta","slug":"letta","name":"Letta Cloud","website":"https://www.letta.com","status":"active"},"model":{"representativeModelId":"Letta Cloud Primary Runtime","skuId":null,"unit":null,"amountUsd":null,"sourceUrl":"https://www.letta.com","asOf":"2026-10-28"},"servingRoute":{"primaryRouteType":"self_hosted_or_oss_compatible","endpointPattern":"https://www.letta.com (self hosted or oss compatible)","aggregatorAlternatives":[{"aggregatorId":"direct-only","name":"Letta Cloud Direct API","routeType":"first_party","tradeoff":"Direct vendor SDK/REST contract; pair with runner-up for multi-vendor failover."}]},"accountAndQuota":{"freeTierAvailable":false,"freeTierSummary":null,"rateLimitsSummary":"See /api/limits?provider=letta","subscriptionFirstEligible":true,"documentedPlansCount":0},"regions":{"supportedRegions":["global","us"],"multiRegionFailover":true,"euResidencyAvailable":true},"toolSchemaSupport":{"strictJsonSchema":true,"parallelToolCalls":false,"mcpServerAvailable":false,"streamingSupported":true},"latencyTier":{"tier":"standard_1s_to_5s","latencyReliabilityScore":7.2,"coldStartNotes":"Standard warm pool; check provider SLA for burst concurrency"},"privacyConfig":{"privacyPostureScore":7.2,"zeroDataRetentionAvailable":false,"trainsOnApiDataByDefault":false,"hipaaEligible":false,"selfHostable":true},"availabilityStatus":{"providerStatus":"active","verifiedActiveSkus":0,"unverifiedSkus":0,"liveFailoverTargetId":"mem0"},"subject_ref":{"layer":"runtime_route","subject_id":"runtime_route:letta:letta-primary:self_hosted_or_oss_compatible:global","provider_id":"letta","product_id":"letta-core","model_id":"letta-primary","version":"2026-10-28","route_class":"self_hosted_or_oss_compatible","region":"global","score_status":"unknown","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"},"distinctRouteSubjects":[{"layer":"runtime_route","subject_id":"runtime_route:letta:letta-primary:direct_api:global","provider_id":"letta","product_id":"letta-core","model_id":"letta-primary","version":"2026-10-28","route_class":"direct_api","region":"global","score_status":"layer_evidenced","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"}]},{"routeId":"agent-episodic-semantic-memory-learning:supabase-pgvector:primary","roleForJob":"runner_up","provider":{"id":"supabase-pgvector","slug":"supabase-pgvector","name":"Supabase (pgvector)","website":"https://supabase.com","status":"active"},"model":{"representativeModelId":"Supabase (pgvector) Primary Runtime","skuId":null,"unit":null,"amountUsd":null,"sourceUrl":"https://supabase.com","asOf":"2026-10-28"},"servingRoute":{"primaryRouteType":"managed_cloud_service","endpointPattern":"https://supabase.com (managed cloud service)","aggregatorAlternatives":[{"aggregatorId":"direct-only","name":"Supabase (pgvector) Direct API","routeType":"first_party","tradeoff":"Direct vendor SDK/REST contract; pair with runner-up for multi-vendor failover."}]},"accountAndQuota":{"freeTierAvailable":false,"freeTierSummary":null,"rateLimitsSummary":"Free: Free … 50,000 monthly active users, 500 MB database size, 5 GB egress, 1 GB file storage. ","subscriptionFirstEligible":true,"documentedPlansCount":2},"regions":{"supportedRegions":["global"],"multiRegionFailover":true,"euResidencyAvailable":true},"toolSchemaSupport":{"strictJsonSchema":true,"parallelToolCalls":false,"mcpServerAvailable":true,"streamingSupported":true},"latencyTier":{"tier":"standard_1s_to_5s","latencyReliabilityScore":8.6,"coldStartNotes":"Standard warm pool; check provider SLA for burst concurrency"},"privacyConfig":{"privacyPostureScore":8,"zeroDataRetentionAvailable":true,"trainsOnApiDataByDefault":false,"hipaaEligible":false,"selfHostable":false},"availabilityStatus":{"providerStatus":"active","verifiedActiveSkus":0,"unverifiedSkus":0,"liveFailoverTargetId":"mem0"},"subject_ref":{"layer":"runtime_route","subject_id":"runtime_route:supabase-pgvector:supabase-pgvector-primary:managed_cloud_service:global","provider_id":"supabase-pgvector","product_id":"supabase-pgvector-core","model_id":"supabase-pgvector-primary","version":"2026-10-28","route_class":"managed_cloud_service","region":"global","score_status":"layer_evidenced","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"},"distinctRouteSubjects":[{"layer":"runtime_route","subject_id":"runtime_route:supabase-pgvector:supabase-pgvector-primary:direct_api:global","provider_id":"supabase-pgvector","product_id":"supabase-pgvector-core","model_id":"supabase-pgvector-primary","version":"2026-10-28","route_class":"direct_api","region":"global","score_status":"layer_evidenced","layer_score":"unknown","inherited_from_parent_layer":false,"inheritance_policy":"no_cross_layer_inheritance"}]}],"depth":{"whenNotToUse":{"text":"Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti); need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta; need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector.","source":"editorial `whenNotTopPick` (data/jtbds.json)"},"whenNotToUseReason":null,"runnerUp":{"providerId":"zep","name":"Zep","overallForJob":7.51,"pickOverallForJob":7.63,"beatsPickOn":["capabilityFit","latencyReliability","privacyPosture"],"source":"first resolvable entry of the job's editorially ranked `runnersUpIds`; scores are stored job-weighted scores"},"runnerUpReason":null,"lockIn":{"pickLockInRisk":5,"runnerUpLockInRisk":5.2,"scale":"0–10 stored curated estimate; higher = more lock-in (worse)","pickExitSignals":["open source (provider tag `oss`)"],"runnerUpExitSignals":["open source (provider tag `oss`)"],"pickNotes":[{"text":"self-host OSS if caps hurt.","field":"scores.notes"}],"selfHostFallback":[],"migration":"The pick has lower stored lock-in risk than runner-up Zep (5 vs 5.2). Pick exit signals: open source (provider tag `oss`).","migrationReason":null,"derivedFrom":"stored lockInRisk scores, provider tags (oss, self-host, openai-compat, open-models), free rows that list this job, and verbatim provider notes. No migration guide was invented."}},"freshness":{"pick":{"score":{"asOf":"2026-10-28","ageDays":1,"stale":false,"staleAfterDays":30,"reason":null},"lastReviewed":{"asOf":"2026-10-28","ageDays":1,"stale":false,"staleAfterDays":30,"reason":null},"sourceCheck":{"checkedAt":"2026-10-28","sourceUrls":3,"sourcesReachable":2,"pricingRows":0,"pricingRowsReconfirmed":0,"note":"A source re-check confirms the page is reachable and, for pricing rows, that the stored amount and SKU name appear on it. It does not re-derive or change the score.","reason":null}}},"whenNotTopPickRules":[{"ifConstraint":"escape_hatch_clause_1","recommendedProviderId":"zep","activeModelOrSku":"zep-cloud-complete","reason":"Need temporal bi-temporal knowledge-graph edges with explicit validity windows (`valid_from` / `invalid_at`) for changing facts — Zep (Graphiti)"},{"ifConstraint":"escape_hatch_clause_2","recommendedProviderId":"letta","activeModelOrSku":"letta-cloud-pro","reason":"need explicit OS-style self-editing core/archival memory blocks managed by the agent via tool calls — Letta"},{"ifConstraint":"escape_hatch_clause_3","recommendedProviderId":"letta","activeModelOrSku":"letta-cloud-pro","reason":"need DIY SQL + vector episodic tables inside existing Postgres — Supabase pgvector."}],"bootstrap":{"sdkInstall":{"npm":"npm install mem0ai","pip":"pip install mem0ai"},"installCommand":"npm install mem0ai","envVars":["MEM0_API_KEY"],"activeModelOrSku":"mem0-pro","canonicalSnippet":"import MemoryClient from \"mem0ai\";\nconst client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY! });\nawait client.add([{ role: \"user\", content: \"Prefer TypeScript strict mode\" }], { user_id: \"user_1\" });","docsUrl":"https://docs.mem0.ai/quickstart","authType":"api_key","signupUrl":"https://mem0.ai","apiKeyUrl":"https://mem0.ai","mcpServer":null,"cliInit":null,"verifyCommand":"test -n \"$MEM0_API_KEY\" && echo \"MEM0_API_KEY configured\""},"quickstartSpec":{"installCommand":"npm install mem0ai","envVars":["MEM0_API_KEY"],"activeModelOrSku":"mem0-pro","canonicalSnippet":"import MemoryClient from \"mem0ai\";\nconst client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY! });\nawait client.add([{ role: \"user\", content: \"Prefer TypeScript strict mode\" }], { user_id: \"user_1\" });","sdkInstall":{"npm":"npm install mem0ai","pip":"pip install mem0ai"},"verifyCommand":"test -n \"$MEM0_API_KEY\" && echo \"MEM0_API_KEY configured\"","apiKeyUrl":"https://mem0.ai","docsUrl":"https://docs.mem0.ai/quickstart","mcpServer":null,"bootstrapReason":null},"operationalGotchas":[{"code":"hidden_spend_tier_gates","severity":"warning","summary":"Retrieval metering surprises","sourceDate":"2026-10-28"},{"code":"hidden_spend_tier_gates","severity":"warning","summary":"Graph gated to higher tiers","sourceDate":"2026-10-28"}],"relatedPacks":[],"depotPick":{"id":"mem0","slug":"mem0","name":"Mem0","tagline":"Default hosted agent memory bolt-on. Model retrieval volume carefully; self-host OSS if caps hurt.","overall":7.63},"runnersUp":[{"id":"zep","slug":"zep","name":"Zep","tagline":"Pick when agents need temporal/entity graph memory, not just vector snippets. Mem0 for simpler recall.","overall":7.51},{"id":"letta","slug":"letta","name":"Letta Cloud","tagline":"Choose when the agent IS a long-lived stateful runtime. For bolt-on memory use Mem0/Zep.","overall":7.45},{"id":"supabase-pgvector","slug":"supabase-pgvector","name":"Supabase (pgvector)","tagline":"Depot default for most agent apps under ~25–50M vectors. Don't add Pinecone until Postgres actually hurts.","overall":8.64}]}