Releases: vectorize-io/hindsight
Releases · vectorize-io/hindsight
Release list
v0.9.1
What's Changed
- docs: 0.9.0 changelog + blog posts by @nicoloboschi in #3189
- fix(coding-agents): seed the actual harness, not the "opencode" default (#3247, #3248) by @nicoloboschi in #3266
- fix(docker): repair PGroonga Compose image by @JiehoonKwak in #3316
- fix(engine): stop concurrent bank deletes from deadlocking on vector-index DDL by @nicoloboschi in #3245
- fix(coding-agents): fall back from filesystem-root worktrees by @koriyoshi2041 in #3286
- fix(worker): serialise graph_maintenance per bank at claim time by @nicoloboschi in #3235
- fix(llm): forward extra body to Codex requests by @koriyoshi2041 in #3305
- fix(api): knowledge-base search 500s on non-native text-search backends (#3268) by @nicoloboschi in #3318
- test(ci): gate every build on hermes-agent@main co-installability by @nicoloboschi in #3265
- fix(config): validate bank config value types and stop them wedging tasks (#3218) by @nicoloboschi in #3319
- test(bank-template): round-trip every exportable field through export+import by @nicoloboschi in #3324
- perf(reflect): drop retrieval plumbing from reflect tool results by @JoshFunnell in #3310
- feat(bank-template): make every bank config field export+importable by @nicoloboschi in #3332
- fix(structured-doc): add TableBlock to fix markdown table rendering by @dragonkid in #3289
- feat(reflect): resolve entity names on reflect sub-recalls by @nicoloboschi in #3334
- fix(api): gate knowledge-base routes through the operation validator (#3312) by @nicoloboschi in #3331
- fix(coding-agents): write back only the new turns (append + idempotent retain) by @nicoloboschi in #3336
- Pin embed to the metapackage release by @koriyoshi2041 in #3261
- feat(transfer): carry Knowledge Pages tree + regenerate mental-model search state on import (#3308, #3323) by @nicoloboschi in #3330
- fix(api): return 400 for malformed UUID on GET /entities/{id} and /memories/{id}/history by @Alan5168 in #3260
- fix(control-plane): surface direct request failures by @Sanderhoff-alt in #3333
- fix(api): add a DB-free liveness probe so a slow database stops restarting pods by @nicoloboschi in #3337
- fix(coding-agents,ci): drop the periodic re-sync; stop running doc examples for integration changes by @nicoloboschi in #3341
- fix(coding-agents): bound transcript reads so an oversized session still retains (#3292) by @nicoloboschi in #3345
- fix(ollama): make native think configurable via extra_body by @nicoloboschi in #3344
- feat(llm): xai-oauth provider — run the engine's LLM lanes on a flat-rate SuperGrok subscription (device-code OAuth, no API key), production-hardened by @JoshFunnell in #3272
- fix(reflect): provide the current date for temporal reasoning by @koriyoshi2041 in #3287
- fix(transfer): reject a wrong import zip with a 400 that names the fix by @nicoloboschi in #3339
- blog: guest post — writenode, continuity over retrieval (Josh Groves) by @benfrank241 in #3243
- docs(config): name LM Studio/Ollama/Volcano for LLM_STRICT_SCHEMA by @nicoloboschi in #3348
- fix(search): use PGroonga for Knowledge Pages by @JiehoonKwak in #3335
- fix(engine): normalize whitespace in candidate entity names at resolution intake by @nicoloboschi in #3338
- fix(gemini): fail fast on deterministic 400 INVALID_ARGUMENT (#3256) by @nicoloboschi in #3347
- fix(ci): compare OpenAPI against the merge-base; build benchmark role configs whole by @nicoloboschi in #3349
- feat(coding-agents): retainTags / retainMetadata, with HINDSIGHT_RETAIN_TAGS (#3269, #2896) by @nicoloboschi in #3346
- fix(coding-agents): seed bank missions once, then leave them to the user (#2492) by @nicoloboschi in #3352
- fix(coding-agents): report configured MCP harness by @TheAngryPit in #3342
- feat(llm): restore server-side prompt caching on load-balanced OpenAI-compatible backends — measured 0.085% aggregate hit rate without affinity vs 99.4% with, same backend by @JoshFunnell in #3271
- fix(retain): cut oversized sub-batches on native chunk boundaries (#3282) by @nicoloboschi in #3351
- perf(docs): switch the Docusaurus build to Rspack + SWC by @nicoloboschi in #3357
- feat(transfer): async document export (#3321) by @nicoloboschi in #3340
- fix(obsidian): scope sync index to bank and API target (#3257) by @benfrank241 in #3354
- fix(coding-agents): drop harness transport wrappers from retained turns (#3023) by @nicoloboschi in #3378
- docs(coding-agents): say which harnesses retainEveryTurns applies to by @nicoloboschi in #3380
- fix(transfer): mint a fresh internal_id on whole-bank import (#3270) by @nicoloboschi in #3353
- fix(coding-agents): drop Claude Code's compaction summary from retained turns (#3379) by @nicoloboschi in #3383
- fix deletion of failed document uploads by @koriyoshi2041 in #3366
- fix(retain): sweep observations when delta retain deletes chunks by @nicoloboschi in #3384
- docs: correct the Azure OpenAI base URL by @nicoloboschi in #3385
- feat(llm): opt-in forced-tool structured output for LiteLLM providers (#3300) by @nicoloboschi in #3382
- feat(memories): per-bank store capabilities on main (writes_memory_rows_in_sql_for / owns_document_store_for) by @nicoloboschi in #3388
- fix(retain): fold shared document_id items on the sync path (#3363) by @nicoloboschi in #3386
- fix(reflect): decouple page max_tokens from the provider output cap (#3365) by @nicoloboschi in #3389
- fix(retain): match chunk-delete link endpoints through indexable joins (#3387) by @nicoloboschi in #3393
- feat(agent-plugin): portable Hindsight plugin for the Agent Plugins standard by @benfrank241 in #3394
- fix(retain): stop concurrent appends to one document from losing turns by @nicoloboschi in #3395
- fix(stats): drop permanently failed memories from pending_consolidation by @nicoloboschi in #3397
- blog: Best Open-Source Agent Memory Systems (Self-Hosted, 2026) by @benfrank241 in #3192
- blog: update Best Open-Source Agent Memory Systems date to 2026-08-11 by @benfrank241 in #3399
- fix(reflect): split synthesis — parallel claim extraction + reduce instead of dropping over-budget evidence by @nicoloboschi in #3392
- fix(coding-agents): bound automatic reflect budget by @TheAngryPit in #3364
- feat(coding-agents): add Prime Agent as a supported harness by @benfrank241 in #3240
- fix(compose): use HINDSIGHT_API_LLM_API_KEY env var by @ishfuseini in #3398
- fix(coding-agents): resolve the project when the working directory is gone (supersedes #3110) by @nicoloboschi in #3410
- fix(retain): globalise memory_links lock order on the insert path (#3396) by @nicoloboschi in #3406
- perf(graph): decouple stale-cooccurrence prune from hub-entity degree (#3367) by @nicoloboschi in #3408
- docs(reflect): clarify tag-scoped directive behavior by @Sanderhoff-alt in #3038
- fix(coding-agents): stop the prompt hook wiping the retain cursor; write state atomically (supersedes #3136) by @nicoloboschi in https://github.com/vectorize-io/hind...
v0.9.0
What's Changed
- docs: changelog and blog post for v0.8.6 by @nicoloboschi in #3051
- blog: Give GitHub Copilot CLI a memory of your codebase by @benfrank241 in #3055
- docs: add missing 0.8.6 changelog entries by @nicoloboschi in #3063
- docs: give the documents table its own section in the 0.8.6 blog post by @nicoloboschi in #3064
- feat(engine): pluggable memories storage backend by @nicoloboschi in #2917
- chore(deps): bump pg0-embedded to >=0.15.0 by @nicoloboschi in #3073
- feat(knowledge-base): client-managed knowledge pages, control-plane UI +
hindsight fsCLI by @nicoloboschi in #2455 - docs(hermes): deprecate standalone hindsight-hermes plugin (#3057) by @nicoloboschi in #3077
- feat(file-parser): support custom OCR headers by @Sanderhoff-alt in #3065
- feat(control-plane): show the coding agent's logo on documents and memories by @nicoloboschi in #3079
- fix(packaging): bundle licenses in Python distributions by @Sanderhoff-alt in #3067
- fix(consolidation): trigger mental model refresh on resolved scope, not the tags column (#3053) by @nicoloboschi in #3078
- fix(control-plane): knowledge-pages polish by @nicoloboschi in #3080
- fix(copilot-cli): parse Copilot CLI 1.0.76 native message transcript format by @benfrank241 in #3081
- blog(github-copilot): redate to 2026-07-30 by @benfrank241 in #3087
- feat(control-plane): a logo for every coding agent, not just five by @nicoloboschi in #3101
- feat(control-plane): badge documents an in-flight retain op is updating by @nicoloboschi in #3102
- fix(openclaw): default recall injection to user context by @Sanderhoff-alt in #3066
- feat(agent-sdk): let agent_knowledge_recall request source chunks by @chethanuk in #2995
- fix(engine): don't hold pooled DB connections across embedder/LLM calls (consolidation + mental model) by @nicoloboschi in #3082
- feat(openclaw): add preferObservations recall option (#2977) by @nicoloboschi in #3108
- fix(memory-engine): compute update_memory_unit embeddings off the pooled connection by @nicoloboschi in #3083
- fix(api): report the real last-write time on banks and documents by @nicoloboschi in #3109
- blog: How to Actually Evaluate an Agent-Memory System by @benfrank241 in #3106
- blog(evaluate-agent-memory): more contextual cover by @benfrank241 in #3117
- hindsight-coding-agents: harness-pluggable long-term memory for coding agents by @nicoloboschi in #2522
- docs(embed): document uvx cache growth and how to reclaim it (#2915) by @nicoloboschi in #3118
- feat(control-plane): refresh the UI design system by @nicoloboschi in #3149
- chore: replace broken star-history chart with self-hosted gh-stars by @nicoloboschi in #3150
- feat(llm): add
openai-responsesprovider (OpenAI Responses API) by @nicoloboschi in #3121 - docs(knowledge-pages): document Knowledge Pages and Mental Models, and manage them from the CLI by @nicoloboschi in #3151
- fix(recall): apply the created_after/created_before window to graph expansion by @nicoloboschi in #3153
- fix: render disallowed fields in config permission error message by @kubaodias in #3148
- fix(consolidation): apply sanitize_text to the _DedupDecision merge write path by @iRonin in #3144
- feat(mental-models): dry-run refresh and keep_trace for troubleshooting by @nicoloboschi in #3119
- feat(reflect,mental-models): surface structured output in the control plane by @nicoloboschi in #3113
- fix: return 422 for invalid recall fact types by @tao943 in #3062
- chore(api): drop the never-written memory_units.access_count column by @nicoloboschi in #3157
- docs(retain): deprecate bank name as narrator; steer speaker via context (#3138) by @nicoloboschi in #3155
- fix(recall): enforce the query token cap for internal recalls, not just HTTP by @nicoloboschi in #3158
- feat(config): per-operation llm_extra_body overrides by @nicoloboschi in #3159
- feat(embeddings): generic per-input token cap across all providers by @nicoloboschi in #3160
- fix(tei): retry embedding connect timeouts by @jooneyp in #3097
- fix(coding-agents): read Devin's transcript with node:sqlite, and refuse to install without it by @nicoloboschi in #3175
- docs(retain): suggest a distinct document_id per source document by @nicoloboschi in #3173
- fix(control-plane): report mental-model freshness from the bank write watermark by @nicoloboschi in #3156
- fix(retain): unify OutputTooLongError so #2579 output auto-split actually runs by @nicoloboschi in #3174
- chore(db): remove deprecated entity schema from memory_links by @nicoloboschi in #3177
- fix(retain): sync metadata to unchanged memories by @Sanderhoff-alt in #3011
- fix(recall): retry get_or_create_bank_profile on per-bank index deadlock by @dcbouius in #2984
- fix(consolidation): guard observation_history append on 0-row observation UPDATE by @nicoloboschi in #3161
- fix(config): report deleted import banks as conflicts by @Sanderhoff-alt in #3035
- feat(reranker): failover chain via indexed HINDSIGHT_API_RERANKER__* members by @nicoloboschi in #3176
- blog: Per-User Memory for AI Products — Multi-Tenant Patterns by @benfrank241 in #3180
- feat(obsidian): headless CLI vault ingestion (hindsight-obsidian-sync) by @benfrank241 in #3179
- perf(entity-resolution): skip fuzzy probing for exact-match-only label entities by @nicoloboschi in #3187
- feat(entity-resolution): configurable pg_trgm similarity threshold, applied at connection setup by @nicoloboschi in #3188
- fix(embeddings): honor query and document prompts locally by @jpmf33 in #3032
- feat(query-analyzer): configurable dateparser locale detection by @yufanw03 in #3154
- fix(mental-models): never overwrite a document with a delta-window candidate by @nicoloboschi in #3182
- fix(consolidation): keep observations in their source facts' language by @nicoloboschi in #3181
- fix(embed): bound daemon log growth by @koriyoshi2041 in #3165
- fix(llm): release concurrency permits during retry backoff by @koriyoshi2041 in #3145
- feat(recall): per-budget reranker candidate cap via env config (#3107) by @nicoloboschi in #3191
- fix(api): publish LabelGroup schema for entity_labels in OpenAPI (#3107) by @nicoloboschi in #3190
- fix(delete): sweep orphan entities when no relink victims were enqueued by @nicoloboschi in #3198
- fix(deps): make macOS installs work without a Rust toolchain by @nicoloboschi in #3199
- feat(coding-agents): local daemon mode, and pick the server at install time by @nicoloboschi in #3193
- fix: remove stale global memory_units vector index via migration; make reconcile hands-off by @nicoloboschi in #3204
- feat(templates): Hermes-branded bank templates, grounded in real Hermes user stories by @benfrank241 in #2996
- fix(entities): dedup same-batch entity variants via pg_trgm (#3107) by @nicoloboschi in https://github.com/...
v0.8.6
What's Changed
- docs: changelog and blog post for v0.8.5 by @nicoloboschi in #2879
- Fix within-batch cosine similarity for non-unit embeddings by @koriyoshi2041 in #2890
- chore(deps): bump pillow, gitpython, pyasn1 (clears 62 high-severity alerts) by @dcbouius in #2899
- blog: Your 1M-Token Context Window Is Not Memory by @benfrank241 in #2910
- feat(engine): filter list_memory_units by ingest age (created_before) by @nicoloboschi in #2902
- chore: regen skills/hindsight-docs openapi.json (unblocks verify-generated-files) by @dcbouius in #2925
- feat(ts-client): support custom headers by @menelsystemsbot in #2914
- chore(deps): bump npm transitive highs (brace-expansion, js-yaml, sharp, fast-uri, svgo, shell-quote) by @dcbouius in #2907
- blog: Give Roo Code a Memory So Every Task Builds on the Last by @benfrank241 in #2931
- fix(engine): make mental-model refresh cutoff stubbable (fix red test-api on main) by @nicoloboschi in #2924
- fix backup restore schema compatibility by @oldnicke in #2920
- fix(retain): offset causal targets from the extraction-group start by @r266-tech in #2935
- chore(deps): bump protobuf to 7.x and OpenTelemetry to 1.44/0.65b0 by @nicoloboschi in #2923
- fix(llm): normalize bare LM Studio / Ollama base URL to /v1 (#2922) by @nicoloboschi in #2941
- feat(observability): diagnose blocked-loop vs pool-exhaustion on stalled /health by @nicoloboschi in #2942
- chore(deps): bump next, postcss, pypdf (clears the new high-severity wave) by @dcbouius in #2933
- fix(retain): stop append replay when an oversized doc's first transport slice extracts zero facts by @Korayem in #2930
- fix: propagate Codex reasoning effort by @Tosko4 in #2919
- fix(cli): preserve HTTP 400 details by @koriyoshi2041 in #2916
- feat(config): make store_document_text overridable per bank by @nicoloboschi in #2940
- feat(extensions): declare + provision extension-owned bank-scoped tables by @nicoloboschi in #2903
- fix(retain): make async retries idempotent via caller-supplied operation_id (#2937) by @nicoloboschi in #2947
- fix(repair): stop the shared-DB deadlock flake in test-api (CONCURRENTLY test DDL + retry transient deadlocks) by @nicoloboschi in #2943
- fix(mental-model): anchor delta refresh watermark to newest processed memory by @nicoloboschi in #2878
- feat(api): filter memory list by linked entity + entity timeline UI by @nicoloboschi in #2945
- fix(helm): override HINDSIGHT_API_PORT in worker StatefulSet to survive K8s service discovery by @Fyko in #2904
- feat(engine): add MemoryEngine.delete_memory_units bulk primitive by @chrislatimer in #2659
- feat(control-plane): display API version in sidebar footer by @handnewb in #2886
- fix(integrations): derive recall hook timeout from requestTimeoutSeconds by @handnewb in #2883
- fix(deps): require litellm>=1.93.0 for Python 3.14 support by @nicoloboschi in #2950
- feat(config): make embedding thresholds configurable by @Sanderhoff-alt in #2875
- docs: add TealTiger community integration listing by @nagasatish007 in #2831
- fix(auth): authorize bank writes before provisioning by @Sanderhoff-alt in #2646
- fix(curation): keep causal links across edit and invalidate/restore by @nicoloboschi in #2951
- docs(consolidation): define every input field in the consolidation prompt by @nicoloboschi in #2952
- feat(paperclip): per-agent enable/disable for pilot rollouts by @parties in #2724
- fix(oracle): unblock Oracle CI — free runner disk space + fix the retain deadlock by @nicoloboschi in #2948
- fix(graph): queue edited and restored memories for relinking by @Sanderhoff-alt in #2893
- blog: recall vs reflect (the two ways to read agent memory) by @benfrank241 in #2954
- fix(files): reject misplaced retain metadata instead of discarding it by @r266-tech in #2971
- fix: accept text alias in fact extraction for schema-drift resilience by @jtstothard in #2969
- test(litellm): cover Responses named tool choice (#2953) by @ijevin in #2957
- fix: return free-form entities from dry-run extraction by @oldnicke in #2958
- docs(openclaw): note memory-wiki bridge mode is unsupported (#963) by @benfrank241 in #2955
- fix(control-plane): preserve inherited observations configuration by @r266-tech in #2885
- fix(consolidation): stop emitting unsupported maxItems that breaks all Bedrock consolidation (#2500) by @r266-tech in #2502
- Add Russian temporal period rules by @dimonnld in #2767
- perf: eliminate redundant graph seed and UUID scans by @zommiommy in #2968
- fix(clients): expose async retain operation_id by @r266-tech in #2978
- fix: avoid dotenv side effects on library import by @nicoloboschi in #2979
- fix(control-plane): gate audit-log & observations tabs on resolved per-bank config by @nicoloboschi in #2982
- fix(oracle): don't COALESCE a bind against the CLOB mission column in update_bank by @nicoloboschi in #2981
- docs(zapier): clarify private-beta availability + Webhooks-by-Zapier path by @benfrank241 in #2989
- blog: What people actually build with agent memory (use cases) by @benfrank241 in #2990
- feat(zapier): remove memoryDefenseTriggered trigger (gated capability) by @benfrank241 in #2994
- fix(worker): reconcile stranded batch_retain parents on recovery (#2985) by @nicoloboschi in #2986
- fix(claude-code): reflect tool calls + honor configured model (#2966, #2881) by @nicoloboschi in #2980
- fix(oracle): skip LLM trace writes on Oracle (llm_requests is PG-only) by @nicoloboschi in #3012
- fix(embeddings,reranker): default local models to CPU on Apple Silicon (MPS memory leak) by @nicoloboschi in #2988
- fix(oracle): audit_log write qualification + llm_requests read gating by @nicoloboschi in #3015
- fix(reflect): fail on unusable tool calls instead of salvaging leaked text by @nicoloboschi in #3013
- fix(transfer): preserve consolidation lifecycle on whole-bank import (#2965) by @nicoloboschi in #3017
- fix(operations): re-runnable batch_retain parents (retry re-queues children) by @nicoloboschi in #3018
- refactor(retain): require explicit semantic link thresholds by @Sanderhoff-alt in #3004
- fix(llm): send reasoning_effort on the tool path, matching call() by @merlinr68 in #2983
- fix(worker): stop wedged retains from holding worker slots forever by @nicoloboschi in #3020
- feat(copilot-cli): add GitHub Copilot CLI hooks integration by @ScottGuymer in #2742
- blog: How to move your agent's memory off a vector database by @benfrank241 in #3022
- fix(tei): retry HTTP 429 backpressure for reranking and embeddings by @r266-tech in #3001
- docs+config(worker): rename per-type WORKER_*_MAX_SLOTS to *_RESERVED_SLOTS (#2963) by @nicoloboschi in #3016
- fix(tracing): serialize unvalidated provider responses by @oldnicke in #3033
- chore(repo): remove unus...
v0.8.5
What's Changed
- docs: changelog and blog post for v0.8.4 by @nicoloboschi in #2474
- fix(control-plane): show all mental models instead of capping at 100 by @nicoloboschi in #2512
- fix(codex): implement strict_schema via forced tool call + repair invalid \escape (#2504) by @nicoloboschi in #2513
- refactor(control-plane): drop the Graph view from memories by @nicoloboschi in #2517
- Blog: Devin Desktop persistent memory (formerly Windsurf) by @benfrank241 in #2483
- Update Devin Desktop blog cover image by @benfrank241 in #2524
- fix(control-plane) fix json viewer unicode output display by @ymybxx in #2531
- fix(control-plane): keep memory filters visible on empty results by @koriyoshi2041 in #2532
- fix(curation): drop archive search_vector column, recompute on revert (#2503) by @nicoloboschi in #2514
- feat(control-plane): animate the memories constellation & open memories in a dialog by @nicoloboschi in #2536
- test(retain): fix missing llm_temperature_retain in _build_request_body mock by @nicoloboschi in #2537
- Blog: architxt + Hindsight (Temporal Mosaic) — community post by @benfrank241 in #2526
- feat(eve): auto-memory mode (v0.2.0) — no model tool-calling by @benfrank241 in #2527
- feat(eve): retain the assistant reply by default by @benfrank241 in #2585
- Blog: Eve automatic memory (hindsight-eve v0.2.0) by @benfrank241 in #2584
- fix(agent-sdk): release recall token fix as 0.1.1 by @r266-tech in #2596
- Refresh search vector on memory curation edits by @koriyoshi2041 in #2552
- docs(eve): sync assistant reply default by @r266-tech in #2588
- fix(parsers): coerce non-bytes buffers before the UTF-8 charset probe in markitdown by @cdbartholomew in #2586
- fix(memory): return metadata from memory browse endpoints by @Sanderhoff-alt in #2583
- fix(retain): preserve JSON chunks during output retry by @koriyoshi2041 in #2579
- fix(api): let PATCH /memories clear occurred dates with null by @r266-tech in #2607
- feat(integrations): add recall score floors by @ishanmalik in #2575
- fix(opencode): install plugin SDK at runtime by @Sanderhoff-alt in #2574
- fix(api): accept verbatim extraction mode in bank manifests by @ishanmalik in #2576
- Fix chunk delete deadlock ordering by @oldnicke in #2570
- feat(recall): add opt-in BM25 query term cap by @r266-tech in #2567
- fix(control-plane): build local client before production build by @koriyoshi2041 in #2566
- docs(skill): sync configuration reference for BM25 term cap by @benfrank241 in #2609
- fix(consolidation): default invalid dedup actions to keep by @r266-tech in #2565
- fix(cli): set default User-Agent header by @koriyoshi2041 in #2564
- Fix _strip_code_fences truncating JSON when content contains inner backticks by @poog26 in #2563
- fix(minimax): disable thinking by default by @koriyoshi2041 in #2558
- feat(llm): recover outer JSON span when fence stripping yields non-JSON by @benfrank241 in #2610
- refactor(zed): port setup CLI to Node, drop the Python dependency by @benfrank241 in #2599
- Blog: Give Zed's AI Assistant a Persistent Memory by @benfrank241 in #2598
- docs: add Oracle Database setup guide by @DK09876 in #2612
- fix(oracle): don't await the synchronous cursor.close() in _set_session_schema by @DK09876 in #2613
- docs(oracle): document required schema, embedding-dimension matching, and start-oracle re-run by @DK09876 in #2615
- fix(worker): complete successful operations by @r266-tech in #2608
- fix(ollama): make native num_ctx opt-in by @r266-tech in #2589
- fix(recall): decouple temporal seed threshold by @Sanderhoff-alt in #2595
- fix(reflect): tolerate null-like tool integer limits by @r266-tech in #2639
- fix(claude-code): isolate MCP server cwd by @oldnicke in #2635
- fix(claude-code): skip primary + duplicate banks in recallAdditionalBanks by @benfrank241 in #2625
- Blog: Give Aider a Memory That Outlives the Session by @benfrank241 in #2642
- feat(anthropic): prompt caching via inline cache_control markers by @hb-cam in #2629
- feat(anthropic): implement the batch API interface via Message Batches (50% token discount) by @hb-cam in #2628
- fix: handle FK violation in observation_history during parallel consolidation by @handnewb in #2620
- fix(trace): skip LLM trace writes during daemon shutdown/pre-init races by @yingliang-zhang in #2618
- fix(codex): send client identity headers for GPT-5.6 by @JiehoonKwak in #2647
- Blog: One Memory, Three Surfaces (Cursor + OpenClaw + Vapi) by @benfrank241 in #2655
- deps(security): require LiteLLM 1.84.0 by @r266-tech in #2651
- fix(llm): raise OpenRouter Qwen3 verification budget by @r266-tech in #2633
- fix(consolidation): normalize dedup action case/whitespace before validation by @iRonin in #2611
- Include cookbook and integration docs in docs skill by @koriyoshi2041 in #2649
- Accept top-level fact arrays in retain parsing by @koriyoshi2041 in #2556
- fix(recall): scope entity fanout cap by fact type by @Sanderhoff-alt in #2681
- Preserve document metadata during append retains by @koriyoshi2041 in #2684
- fix(engine): clarify causal link compatibility by @Sanderhoff-alt in #2685
- fix(control-plane): forward document search q to dataplane by @benfrank241 in #2687
- fix(search): avoid year-0 crashes in Chinese rolling-window temporal extraction by @r266-tech in #2636
- fix(control-plane): tag/scope filter resets during consolidation polling in data view by @viliusdidit in #2680
- fix(recall): preserve combined graph activation scores by @Sanderhoff-alt in #2679
- fix(consolidation): request JSON dedup decisions by @r266-tech in #2663
- fix(migrations): install public maintenance routines on non-public schema runs by @benfrank241 in #2690
- Blog: Inside retain() — What Happens When Your Agent Remembers by @benfrank241 in #2689
- feat(devin-desktop): two-tier bank scoping + visible memory use (v0.2.0) by @DK09876 in #2692
- fix(worker): bound terminal operation history by @Tosko4 in #2708
- Fix Codex OAuth refresh sharing across managers by @koriyoshi2041 in #2706
- fix(claude-code): surface the CLI's real error text on is_error results by @ElanHasson in #2703
- Avoid slim embedded daemon startup without local ML deps by @koriyoshi2041 in #2676
- fix(claude-code): retain session deltas by @oldnicke in #2648
- docs(embed): expose local CPU workarounds by @yingliang-zhang in #2707
- fix(control-plane): show bank name (fallback bank_id) in bank selector by @benfrank241 in #2693
- fix(test): green main — update Oracle session-schema tests for #2708 reset behavior by @benfrank241 in https://github.com/vec...
v0.8.4
What's Changed
- docs: changelog and blog post for v0.8.3 by @nicoloboschi in #2290
- test(retain): serialize multichunk sub-batch coverage test on worker_tests xdist group by @nicoloboschi in #2272
- fix(docs): correct agrasandhany integration icon and ownership by @benfrank241 in #2294
- blog(agent-framework): Total Recall — persistent memory for Microsoft Agent Framework by @benfrank241 in #2293
- feat(aider): add Aider integration (session-bracketing memory wrapper) by @DK09876 in #2297
- fix(retain): make chunk_text idempotent so raised structured chunk size doesn't fail retains (#2301) by @nicoloboschi in #2308
- chore(deps): resolve high/medium/low Dependabot alerts by @dcbouius in #2303
- docs: drop removed 'opinion' fact type from MCP tool docstrings and quickstart by @r266-tech in #2302
- docs(monitoring): document worker operation metrics by @r266-tech in #2296
- fix(tests): eliminate test-api shard cross-test contamination (vchord cache, tenant schemas, maintenance routine TOCTOU) by @nicoloboschi in #2310
- perf(migrations): skippable extension reconcile + drop unused global vector index by @nicoloboschi in #2309
- fix(cache): prevent stale bank stats after concurrent invalidation by @zupengwang in #2315
- blog(openhands): OpenHands persistent memory via native MCP by @benfrank241 in #2316
- deps(security): bump langsmith floor to >=0.8.18 (GHSA-f4xh-w4cj-qxq8 HIGH) by @r266-tech in #2341
- chore(deps): bump dify-plugin to 0.9.1 to fix requests alert by @dcbouius in #2320
- docs(hermes): add standalone Hermes Desktop integration page + gallery card by @benfrank241 in #2351
- blog(hermes): Hindsight as one-click desktop memory provider by @benfrank241 in #2350
- fix(control-plane): make max upload size configurable (#2313) by @nicoloboschi in #2319
- docs(admin-cli): document run-db-migration --skip-extension-reconcile and --embedding-dimension by @r266-tech in #2327
- feat(reranker): detect Intel XPU for local cross-encoder acceleration by @r266-tech in #2328
- docs(models): sync anthropic default model to claude-haiku-4-5 alias by @r266-tech in #2326
- chore(deps): drop diskcache from crewai via instructor 1.15.3 by @dcbouius in #2325
- fix(release): build Linux CLI on ubuntu-22.04 (glibc 2.35) so binaries run on older distros by @r266-tech in #2330
- docs(integrations): drop removed 'opinion' fact type from recall_types/fact_types across SDK wrappers by @r266-tech in #2335
- feat(recall): configurable recency decay function (linear/exponential/none) by @nicoloboschi in #2318
- docs(python-client): drop removed 'opinion' fact type from recall()/arecall() docstrings by @r266-tech in #2323
- fix(claude-code): use realpath for directoryBankMap symlink resolution by @365diascollaboration-prog in #2324
- fix(stats): invalidate bank stats cache on unit/document deletes and observation clears by @r266-tech in #2337
- docs(api): correct ReflectResult.based_on key names (mental-models hyphen + add observation) by @r266-tech in #2338
- fix(mcp): omit reflect directives_applied alongside tool_trace/llm_trace by default by @r266-tech in #2342
- fix(anthropic): route strict structured output through forced tool_use instead of prompt-injection (#1002) by @eldar702 in #2339
- fix(config): validate disposition_* range on bank-config write so one malformed bank can't 500 the whole bank list (#2348) by @r266-tech in #2349
- [opencode] Add suport for HINDSIGHT_RETAIN_TAGS by @mdbenito in #2306
- fix(async-op): return 404 when bank doesn't exist instead of raw FK 500 by @cdbartholomew in #2352
- fix(recall): allow exact filtering of untagged/global observations (#2295) by @nicoloboschi in #2364
- feat(recall): prefer_observations — dedupe raw facts superseded by observations by @nicoloboschi in #2311
- fix(graph-maintenance): sort unit_ids to eliminate concurrent-insert deadlock by @cdbartholomew in #2353
- fix(http): reject negative limit/offset on list endpoints with 422 instead of raw Postgres 500 by @r266-tech in #2357
- feat: add Atlas Cloud as an OpenAI-compatible LLM provider by @lucaszhu-hue in #2362
- feat(tokens): propagate cached + thoughts tokens through return contexts by @cdbartholomew in #2356
- fix(gemini): avoid duplicate structured schema prompt by @r266-tech in #2277
- chore(entity-resolver): remove dead resolve_entity/_create_entity/link_unit_to_entity by @nicoloboschi in #2367
- test(graph-maintenance): reproduce concurrent-insert deadlock on the queue by @nicoloboschi in #2368
- chore(docs-skill): regenerate references for Atlas Cloud provider by @nicoloboschi in #2372
- fix(cli): pass u64 limit/offset to regenerated client by @nicoloboschi in #2370
- chore(embed): sync bundled env.example with repo-root .env.example by @nicoloboschi in #2373
- feat(llm): multi-LLM failover & round-robin via indexed config by @nicoloboschi in #2365
- fix(memory-defense): correct displayed pattern count by @Sanderhoff-alt in #2369
- Instrument recall trace so phase metrics account for total duration (#2361) by @nicoloboschi in #2371
- fix(worker): warn when worker_id unset inside a container (#2359) by @nicoloboschi in #2366
- blog: Persistent Memory for the Vercel AI SDK in Five Tools by @benfrank241 in #2374
- feat(github-copilot): add GitHub Copilot (VS Code) integration via MCP by @DK09876 in #2299
- fix(worker): warn for unstable standalone worker ids by @koriyoshi2041 in #2383
- fix(deps): raise hindsight-litellm LiteLLM floor by @r266-tech in #2382
- blog(retain): structuring chat logs for optimal ingestion by @dcbouius in #2375
- feat(windsurf): add Windsurf (Codeium) integration via MCP by @DK09876 in #2358
- feat(eve): add Eve agent-framework MCP connection helper by @benfrank241 in #2280
- test: eagerly import torch in conftest to fix test-api shard flake by @nicoloboschi in #2376
- fix(openai): propagate reasoning_tokens into TokenUsage for OpenAI-compatible providers by @r266-tech in #2378
- fix(hooks): keep uv lockfile frozen during lint by @Sanderhoff-alt in #2397
- fix(api): keep dry-run extract from creating banks by @Sanderhoff-alt in #2394
- fix(api): prevent PATCH bank from creating banks by @Sanderhoff-alt in #2391
- feat(config): let indexed multi-LLM members configure Vertex AI project/region by @cdbartholomew in #2384
- fix(release): bump marketplace version on claude-code release (#2386) by @nicoloboschi in #2398
- test(openai): fix tool-call mocks crashing reasoning-token accounting (#2378) by @nicoloboschi in #2400
- fix(llm-trace): keep provider token usage on parse/validation failures (#2387) by @nicoloboschi in #2396
- feat(config): multi-LLM members can configure litellmrouter config + Vertex SA key by @nicoloboschi in #2401
- refactor(llm): make LLMProvider constructor config-free by @nicoloboschi in #2405
- feat(mental-models): cron-scheduled refresh via the maintenance loop by @nicoloboschi in https://git...
v0.8.3
What's Changed
- docs: changelog and blog post for v0.8.2 by @nicoloboschi in #2172
- docs: add Memory Defense to the 0.8.2 blog post by @nicoloboschi in #2173
- blog: Cursor persistent memory (editor + CLI in one post) by @benfrank241 in #2171
- docs(models): register the nous provider so the Models page lists it by @r266-tech in #2128
- docs(litellm): replace removed
opinionfact-type withobservationby @r266-tech in #2198 - fix(search): use effective-time fallback (mentioned_at, occurred_end) for recency scoring by @r266-tech in #2197
- Chore (opencode): drop utility re-exports from plugin entry by @mdbenito in #2193
- fix(metrics): don't count a client-disconnect cancellation as a failed recall/reflect operation by @r266-tech in #2185
- docs(reflect): align reflect_async docstring with read-only tool set by @kubaodias in #2200
- feat(consolidation): add "shared" observation_scopes keyword by @nicoloboschi in #2202
- fix(db): widen remaining live bank_id columns to TEXT on PostgreSQL (#2106 follow-up) by @r266-tech in #2175
- fix(api): mental model delta refresh (prompt size, JSON, consolidation) by @oldschoola in #2170
- feat(api): omit null fields from JSON responses where wire-safe by @nicoloboschi in #2204
- feat(migrations): parallelize tenant schema migrations by @nicoloboschi in #2203
- feat(retain): make structured-unit chunk limit configurable by @Sanderhoff-alt in #2139
- feat(api): dry-run fact extraction endpoint (preview, no persistence) by @nicoloboschi in #2205
- fix(ts-client): accept shared observation scope by @koriyoshi2041 in #2207
- blog(gemini-spark): Gemini Spark persistent memory via MCP by @benfrank241 in #2208
- feat(zapier): add Hindsight Zapier app (actions + REST Hook triggers) by @benfrank241 in #2119
- feat(continue): add Continue.dev integration via HTTP context provider by @DK09876 in #2213
- fix(skill-docs): convert all admonition keywords in the docs→skill generator by @r266-tech in #2218
- fix(curation): drop the embedding column from invalidated_memory_units (#2209) by @nicoloboschi in #2210
- feat(api): improve Chinese temporal query parsing by @Sanderhoff-alt in #2220
- perf(api): index memory_links.bank_id on PostgreSQL by @zommiommy in #2223
- fix(api): gate dry-run extraction behind the operation precheck by @r266-tech in #2211
- fix(docs): deflake memories.py doc example (async-consolidation race) by @benfrank241 in #2152
- test: fix flaky test-api shard (migration pg0 provisioning race) by @nicoloboschi in #2225
- fix(mcp): give update_memory/invalidate_memory non-empty descriptions by @bluecrayon52 in #2215
- test(control-plane): validate t() keys resolve against the i18n catalog by @nicoloboschi in #2232
- feat(tags): officially surface tags_match=exact in UI, docs, and clients by @nicoloboschi in #2230
- fix(migrations): merge two divergent alembic heads by @nicoloboschi in #2234
- test: fix flaky test_llm_trace via leaked global recorder (#2229) by @nicoloboschi in #2231
- revert(worker): trust schemas_with_pending_work() result, drop per-poll re-scan by @nicoloboschi in #2236
- docs: update CLAUDE guidance by @Sanderhoff-alt in #2228
- docs: fix stale documentation links by @Sanderhoff-alt in #2221
- fix(control-plane): expose "shared" observation scope in the Add Document UI by @r266-tech in #2212
- blog(obsidian): Chat With Your Obsidian Vault, grounded in your notes by @benfrank241 in #2237
- feat(composio): add Composio integration (Hindsight memory as custom tools) by @benfrank241 in #2180
- chore(control-plane): format bank-selector.tsx (lint drift from #2212) by @DK09876 in #2250
- Add TypeScript client getVersion helper by @koriyoshi2041 in #2252
- Strip reasoning tags on non-structured LLM output (and unclosed blocks) by @grimmjoww in #2195
- fix(api): reject empty/whitespace content in dry-run extraction before the LLM call by @r266-tech in #2246
- docs(embed): document control center commands by @r266-tech in #2151
- docs(paperclip): document dynamicBankId / bankId / user granularity (#1761) by @r266-tech in #1803
- Add Python client get_version helper by @nicoloboschi in #2256
- fix(api): defer provider quota reset retries by @oldschoola in #2194
- chore(ci): disable Dependabot version updates by @nicoloboschi in #2257
- Honor CODEX_HOME for Codex auth.json location by @mdenil in #1874
- fix(openclaw): always session-scope retained documents by @nicoloboschi in #2259
- fix(claude-code-mcp): resolve venv interpreter in the Windows Scripts/ layout (#1758, 3a) by @eldar702 in #2066
- claude-code: case-insensitive directoryBankMap matching on Windows by @eskild-boop in #2183
- fix: template bank-id path segment in HTTP metric endpoint label (follow-up to #850) by @sireika in #2191
- feat(api): add optional MarkItDown OCR support by @Sanderhoff-alt in #2145
- fix(litellm): hard-cap completions with asyncio.wait_for so a hung call can't block forever by @kubaodias in #2224
- log(consolidation): show call count + avg for each timing phase by @cdbartholomew in #2238
- feat(mcp): add ToolAnnotations (read-only/destructive hints) to MCP tools by @yunanwg in #2243
- fix(consolidation): handle single-value source_fact_ids from LLM by @haodonp in #2240
- feat(extensions): expose Content-Length on PrecheckContext by @cdbartholomew in #2247
- feat(metrics): expose async-operation queue + consolidation backlog as gauges by @MattJackson in #1987
- fix(api): apply bank-config disposition + mission overlay in list_banks by @PathKnower in #2101
- fix(openclaw): strip runtime metadata from memory content by @de1tydev in #1968
- fix(mcp): omit reflect tool_trace/llm_trace from responses by default by @yunanwg in #2242
- Add Gemini service tier config by @r266-tech in #2251
- feat(embeddings): detect Intel XPU for local embedding acceleration by @nicoloboschi in #2260
- docs: document MCP trace and precheck content length by @r266-tech in #2264
- test(openclaw): fix agent_end hook tests after #1968 context change by @nicoloboschi in #2266
- test(retain): fix broken quota-defer test config mock by @nicoloboschi in #2265
- fix(retain): stop dropping chunks when an oversized doc splits into multi-chunk sub-batches by @nicoloboschi in #2269
- Hide Windows netstat port probes by @koriyoshi2041 in #2263
- Update integrations.json by @yugandhar-maram in #2268
- docs(observations): stop claiming a per-observation freshness trend by @benfrank241 in #2271
- feat(zed): add Zed editor integration (MCP context server + recall/retain rule) by @DK09876 in #2153
- blog(freshness): Freshness-Aware Memory — knowing when a belief has gone stale by @benfrank241 in #2267
- feat(openhand...
v0.8.2
What's Changed
- docs: changelog and blog post for v0.8.1 by @nicoloboschi in #2080
- chore(integrations): apply CI ruff formatting to haystack + roo-code tests by @nicoloboschi in #2082
- blog: Cline persistent memory (lifecycle hooks, no MCP) by @benfrank241 in #2085
- docs(icons): use real Cline brand mark in place of placeholder by @benfrank241 in #2086
- feat(cursor-cli): ship as pip-installable hindsight-cursor-cli package by @benfrank241 in #2083
- feat(cline): ship as pip-installable hindsight-cline package by @benfrank241 in #2088
- feat(api): support gemini-embedding-2 family (per-input embedding) by @nicoloboschi in #2087
- feat(cursor): add Hindsight memory plugin for Cursor by @DK09876 in #866
- fix(obsidian): mirror plugin to a dedicated repo instead of releasing in the monorepo by @benfrank241 in #2078
- fix(ci): authenticate the obsidian mirror push with OBSIDIAN_DIST_TOKEN by @benfrank241 in #2091
- fix(ci): override git auth with OBSIDIAN_DIST_TOKEN for obsidian mirror push by @benfrank241 in #2093
- blog: Hindsight is the fastest-growing open-source AI memory project ever by @cdbartholomew in #2092
- chore(cursor): fix ruff-format drift in cursor integration tests by @benfrank241 in #2095
- docs(integrations): add Gemini Spark integration page + grid entry (#1779) by @r266-tech in #1943
- fix(ci): npm provenance 409 guard + add Obsidian MIT LICENSE by @benfrank241 in #2094
- feat(ui): export constellation as a shareable SVG poster by @nicoloboschi in #2099
- feat(api): add Gemini Batch API support for retain fact extraction by @nicoloboschi in #2089
- Support service_tier selection for Amazon Bedrock by @mobilinkd in #2098
- fix(reflect): carry directives + language rule into final synthesis prompt by @nicoloboschi in #2100
- feat(api): per-bank LLM connectivity probe (#2034) by @nicoloboschi in #2084
- docs(models): add Gemini Embedding 2 to Google models by @r266-tech in #2090
- blog: add truncate markers to oh-my-pi and 10k-stars posts by @benfrank241 in #2065
- refactor(memory-defense): per-bank regex defense, webhooks, drop dead surface by @nicoloboschi in #2077
- feat(providers): add native Nous Portal provider (Codex-style OAuth, no hermes_cli dep) by @nicoloboschi in #2102
- feat(api): per-bank provider cost attribution via OpenAI user field by @sireika in #1965
- feat(obsidian): grounded-note citations, collapsed-by-default, persisted layout, inline depth by @benfrank241 in #2104
- feat(embed): seed .env configs from bundled .env.example template by @nicoloboschi in #2105
- fix(obsidian): clear community-store review for 0.1.2 + asset attestations by @benfrank241 in #2107
- feat(memory): reversible curation — edit / invalidate memory units by @nicoloboschi in #1976
- fix(cli): parse get-memory response correctly by @nicoloboschi in #2111
- fix(api): widen history bank_id to TEXT on PostgreSQL (#2106) by @nicoloboschi in #2110
- blog: Flowise persistent memory (three Tool nodes for any chatflow) by @benfrank241 in #2108
- fix(docs): read observation history before curating facts in memories.py by @DK09876 in #2120
- refactor(haystack): rename HindsightToolset -> HindsightMemoryWrapper by @DK09876 in #2118
- fix(migrations): catch CommandError-wrapped ResolutionError in rolling-deployment skip by @bionicbutterfly13 in #2117
- fix(api): cancel abandoned recall & reflect via cooperative cancellation token by @nicoloboschi in #2127
- docs: flag Intel (x86_64) macOS as slim-only in supported-platforms grid (#2115) by @nicoloboschi in #2129
- feat(retain): chunk JSONL at line boundaries by @nicoloboschi in #2126
- chore(embed): drop unused HINDSIGHT_EMBED_BANK_ID + fix HINDSIGHT_EMBED_LLM_* docs by @nicoloboschi in #2130
- fix(api): make recall/reflect disconnect cancellation actually work (behind BaseHTTPMiddleware) by @nicoloboschi in #2131
- fix(docs): credit Cursor CLI integration to its community author (@Korayem) by @benfrank241 in #2109
- docs: remove broken gitcgr code-graph badge from README by @benfrank241 in #2133
- feat(embed): local control center web app by @nicoloboschi in #2132
- chore: remove dead code and stale config by @Sanderhoff-alt in #2135
- feat(consolidation): per-scope observation limits by @nicoloboschi in #2140
- feat(observations): enumerate + filter + visualize observation scopes by @nicoloboschi in #2149
- blog: 763,365 downloads in 30 days: Hindsight crosses 1M by @benfrank241 in #2134
- docs(superagent): add prerequisites to integration quick start by @benfrank241 in #2137
- docs(integrations): use the Gemini logo for Gemini Spark by @benfrank241 in #2146
- feat(agent-framework): Hindsight memory for Microsoft Agent Framework (no MCP) by @benfrank241 in #1989
- blog: Haystack persistent memory (drop-in tools + auto-recall wrapper) by @benfrank241 in #2147
- feat(memory-defense): accept full 7-detector vocabulary in parser by @chrislatimer in #2142
- fix(test): bump hierarchical-config count for observation_scope_limits (unblocks test-api) by @DK09876 in #2156
- fix(webhook) missing fields in payload by @chrislatimer in #2164
- chore(ci): enforce unused imports/vars + advisory dead-code scan by @nicoloboschi in #2144
- fix(api): normalize torch default dtype after concurrent model init (#2162) by @nicoloboschi in #2167
- docs(api): list all three supported webhook event types by @benfrank241 in #2155
- fix(consolidation): honor an observation scope limit of 0 (no new observations) by @r266-tech in #2163
- fix(control-plane): stop double-fetching graph data on bank view by @nicoloboschi in #2168
New Contributors
- @mobilinkd made their first contribution in #2098
- @sireika made their first contribution in #1965
- @bionicbutterfly13 made their first contribution in #2117
Full Changelog: v0.8.1...v0.8.2
v0.8.1
What's Changed
- fix(opencode): fold recall into the first system section, not a new one by @nicoloboschi in #2052
- docs: changelog and blog post for v0.8.0 by @nicoloboschi in #2053
- feat(roo-code): package as installable PyPI CLI (hindsight-roo-code) by @benfrank241 in #2054
- feat(integrations): add Cursor CLI integration by @Korayem in #1975
- fix(deps): cap tokenizers<=0.23.0 for local-ML extras (#2055) by @nicoloboschi in #2057
- fix(docs): add cursor-cli to integrations gallery (unblock build-docs) by @benfrank241 in #2060
- fix(migrations): install maintenance routines on target_schema=public (#2056) by @nicoloboschi in #2058
- docs: remove versioned docs for 0.5 and lower by @nicoloboschi in #2059
- fix(docs): correct Grok Build icon path in integrations banner by @benfrank241 in #2063
- feat(integrations): add Haystack integration by @DK09876 in #1256
- blog: How oh-my-pi Built Persistent Codebase Memory on Hindsight by @benfrank241 in #2017
- feat(cline): Hindsight memory integration via lifecycle hooks by @benfrank241 in #1956
- feat(integrations): add oh-my-openagent (OMO) integration by @dcbouius in #2018
- feat(obsidian): Hindsight plugin for Obsidian by @benfrank241 in #1941
- chore: format test files with ruff (enable formatter on tests/) by @nicoloboschi in #2074
- fix(control-plane): drop locale slug from URLs (localePrefix never) by @nicoloboschi in #2075
- fix(api): stop forcing vchordrq.probes on listless vchord indexes by @nicoloboschi in #2076
- feat(api): config flag to skip storing raw document text (#2061) by @nicoloboschi in #2062
New Contributors
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
- docs(guides): add Hermes memory guide batch by @benfrank241 in #1932
- docs: changelog and blog post for v0.7.2 by @nicoloboschi in #1933
- feat: upgrade MiniMax default model to M3 by @octo-patch in #1914
- chore(control-plane): bump next back to ^16.2.6 (undo 16.2.5 pin) by @nicoloboschi in #1934
- fix(retain): pre-extraction freshness recheck + serialize concurrent same-doc writers by @nicoloboschi in #1930
- blog: Using Entity Labels to Automatically Tag Memories in Hindsight by @benfrank241 in #1935
- feat(api): per-bank LLM request tracing via OTel GenAI recorder by @nicoloboschi in #1922
- fix(recall): gate VectorChord BM25 + add per-source candidate cap (#1707) by @nicoloboschi in #1947
- fix(config): persist bank config PATCH for never-retained banks (#1940) by @nicoloboschi in #1945
- fix(control-plane): localize operations and graph legends by @MapleEve in #1946
- fix(retain): stop bank_id routing key polluting fact attribution (#1680) by @nicoloboschi in #1948
- feat(transfer): export/import documents between banks without re-running the LLM by @nicoloboschi in #1909
- blog: Voice Agents That Remember — Adding Memory to Vapi with Hindsight by @benfrank241 in #1949
- feat(control-plane): "not enabled" splash for disabled audit logs & LLM requests (+ bank name fix) by @nicoloboschi in #1950
- fix(consolidation): eliminate duplicate observations (interleave dedup recall + tool & benchmark) by @nicoloboschi in #1907
- fix(retain): make document lock/upsert dialect-aware for Oracle (#1944) by @nicoloboschi in #1952
- fix(test): use current default model in Vertex AI integration test by @nicoloboschi in #1972
- feat(transfer): whole-bank export/import for cross-instance migration (#1884) by @nicoloboschi in #1953
- fix(search): escape pgroonga BM25 query text by @xmh1011 in #1966
- feat(recall): per-strategy retrieval boost via env config by @nicoloboschi in #1974
- feat(llm): provider prompt-prefix caching — retain + consolidation + reflect (bank-agnostic, default-on) by @cdbartholomew in #1936
- fix(autogen): default to Cloud + gated E2E + bucketing + ADD missing CI job by @DK09876 in #1868
- refactor(engine): cheaper bank stats — drop unused join, add freshness helper, result cache by @cdbartholomew in #1859
- blog: Long-Term Memory for Google ADK Agents with Hindsight by @benfrank241 in #1979
- blog(google-adk): update cover image by @benfrank241 in #1985
- fix(llamaindex): default to Cloud + replace dead manual test with gated E2E + requires_real_llm bucketing by @DK09876 in #1867
- feat(consolidation): semantic dedup of near-duplicate observations (create + update) by @nicoloboschi in #1977
- fix(clients): expose reflect tool_calls/llm_calls trace in python + typescript wrappers by @nicoloboschi in #1997
- fix(claude-code): default enableKnowledgeTools to true; keep MCP server alive when disabled by @nicoloboschi in #1999
- feat(api): enable LLM request tracing by default with 1-day retention by @nicoloboschi in #1996
- docs(configuration): document HINDSIGHT_API_BANK_STATS_CACHE_TTL_SECONDS + _MAX_ENTRIES from #1859 by @r266-tech in #1993
- fix: raise _check_health default timeout 2s→10s to stop busy-daemon kill loop by @21Felix04 in #1992
- docs(retrieval): correct "no per-strategy weight multipliers" after RECALL_STRATEGY_BOOSTS (#1974) by @r266-tech in #1991
- docs(configuration): document HINDSIGHT_API_LLM_PROMPT_CACHE_ENABLED in the LLM Provider table by @r266-tech in #1990
- docs(models): vertexai default model gemini-2.0-flash-001 is retired — sync to gemini-2.5-flash-lite by @r266-tech in #2001
- docs(api/bank-templates): fix entity_labels manifest example — label-group objects, not string[] by @r266-tech in #1984
- chore(deps): bump the uv group across 18 directories with 2 updates by @dependabot[bot] in #1982
- fix(mental-models): create bank before insert by @oldschoola in #1994
- docs(configuration): document HINDSIGHT_API_WORKER_IMPORT_DOCUMENTS_MAX_SLOTS worker slot reservation by @r266-tech in #1978
- docs(admin-cli): document decommission-worker --yes/-y confirmation-skip flag by @r266-tech in #1957
- fix(recall): bound temporal entry-point scan to top-50-per-fact_type (alternative to #1958) by @nicoloboschi in #1983
- feat(consolidation): enable observation dedup by default (0.97), skip on Oracle by @nicoloboschi in #2000
- fix: validate embedding dimensions before pgvector writes by @ai-ag2026 in #1670
- chore: update gemini embedding model from preview to GA by @dcbouius in #1780
- chore: update Gemini model recommendations to 3.x series by @dcbouius in #1787
- hindsight-docs: Added OutSystems community integration by @stefan-d-p in #1873
- docs(models): register
fireworksso the Models grid + default-models table list it (#1860) by @r266-tech in #1911 - docs(cli): replace removed
opinionfact-type withobservationin recall example by @r266-tech in #1917 - docs(admin-cli): document full backup table coverage from #1903 by @r266-tech in #1929
- chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #1938
- feat(embeddings): add ONNX local provider by @shoveller in #1970
- fix(oracle): make recall and mental-model history work on the Oracle backend by @DK09876 in #1980
- docs(performance): expand local-LLM concurrency guidance into a Local & Small Environments tuning section by @nicoloboschi in #2002
- feat(llm): apply HINDSIGHT_API_LLM_EXTRA_BODY across all API providers by @nicoloboschi in #2006
- feat(llm): opt-in strict json_schema across json_schema-capable providers (not just OpenAI) by @nicoloboschi in #2003
- fix(api): add vchord catalogs to search_path for external Postgres (#1351) by @nicoloboschi in #2008
- refactor(api): unify lazy bank-create into _ensure_bank_exists, couple to caller txn by @nicoloboschi in #2004
- fix(ci): repair zeroentropy embedding tests and regenerate drifted clients by @nicoloboschi in #2009
- fix(docker): clear diagnostic for pg0 bind-mount permission failure (#1483) by @nicoloboschi in #2010
- feat(history): move mental-model & observation history into dedicated tables by @nicoloboschi in #2007
- fix(reflect): let a fresh mental model short-circuit forced retrieval (no extra LLM call) by @nicoloboschi in #2011
- docs(models): note Groq free tier (8k TPM) is unsuitable for Hindsight by @nicoloboschi in #2015
- fix(init): fail fast when model init blocks instead of hanging forever by @nicoloboschi in #2014
- fix(llm): downgrade tool_choice="required" for servers that silently drop it (vLLM/LM Studio/Ollama) by @nicoloboschi in #2016
- feat(operations): durable progress snapshot for consolidation and batch retain by @nicoloboschi in #2013
- blog: How Hindsight Learns — A Deep Dive Into Mental Models by @benfrank241 in #2021
- LangGraph: add memory_instructions, fix nodes, remove BaseStore by @DK09876 in #1673
- feat(claude-agent-sdk): add Claude Agent...
v0.7.2
What's Changed
- docs: add 0.7.1 changelog and release blog post by @nicoloboschi in #1818
- chore: regenerate docs-skill references after v0.7.1 by @Sanderhoff-alt in #1822
- docs(multilingual): add pg_search backend to BM25 selector and comparison table by @r266-tech in #1824
- docs(grok-build): add Grok Build integration page by @benfrank241 in #1793
- feat(gemini-spark): add Hindsight integration for Gemini Spark via MCP by @benfrank241 in #1779
- fix(api): isolate claude-code provider subprocess from user plugins by @nicoloboschi in #1825
- chore: regenerate docs skill changelog index after v0.7.1 by @benfrank241 in #1827
- fix(api): honor explicit daemon host and port by @Sanderhoff-alt in #1821
- fix(api): vchord ANN — use cosine opclass and dispatch tuning GUCs per backend by @isac322 in #1668
- feat(vapi): add Vapi voice AI webhook memory integration by @benfrank241 in #923
- feat(roo-code): add Roo Code integration with MCP + rules by @benfrank241 in #920
- fix(directives): honor tag_groups in list_directives and reflect by @nicoloboschi in #1831
- docs(models): list openrouter, google, and jina-mlx in Cross-Encoder Supported Providers table by @r266-tech in #1832
- docs(mcp): document sync_retain tool and correct tool counts (26/29 -> 27/30) by @r266-tech in #1834
- chore(deps): bump the uv group across 1 directory with 2 updates by @dependabot[bot] in #1836
- fix: preserve raw reranker scores for calibrated [0,1] providers by @nicoloboschi in #1846
- test(reflect): regression test that tag_groups reaches internal recall by @nicoloboschi in #1828
- Bound trigram entity resolution batch size during retain by @voarsh2 in #1841
- fix(control-plane): honor basePath for auth redirects by @xmh1011 in #1845
- fix(control-plane): validate login returnTo to prevent open redirect by @nicoloboschi in #1848
- chore(control-plane): move tests out of src/ into tests/ by @nicoloboschi in #1850
- fix(retain): never silently drop memory on a fact-extraction failure (#1833) by @nicoloboschi in #1852
- fix(retain): apply batching to Oracle entity resolution + guarantee pg_trgm RESET by @nicoloboschi in #1847
- fix(consolidation): propagate round-limit re-queue failure to worker retry by @nicoloboschi in #1857
- fix(retain): preserve full document body when splitter chunks oversized input by @nicoloboschi in #1855
- fix(consolidation): shorten retry backoff base from 60s to 5s by @nicoloboschi in #1854
- ci(test-api): shard pytest 3 ways + cache resolved .venv by @nicoloboschi in #1856
- fix: wait for daemon health before reclaiming occupied port by @s09x in #1858
- docs(faq): explain Hindsight's event-centric graph vs. traditional KGs by @cdbartholomew in #1837
- docs(blog): 15k stars milestone post by @benfrank241 in #1835
- fix(consolidation): scope-locked parallel dispatch (alternative to #1843) by @nicoloboschi in #1853
- docs(configuration): document HINDSIGHT_API_WORKER_TASK_RETRY_BACKOFF_SECONDS in Distributed Workers by @r266-tech in #1861
- docs(configuration): document link_expansion per-entity-limit and timeout knobs by @r266-tech in #1864
- chore(deps): bump uv from 0.11.6 to 0.11.15 in /hindsight-integrations/crewai in the uv group across 1 directory by @dependabot[bot] in #1865
- docs(api): fix broken Worker Configuration anchor in operations page by @r266-tech in #1869
- docs(retrieval): document calibrated [0,1] reranker score passthrough by @r266-tech in #1870
- docs(cli): correct bank set-disposition flags to --skepticism/--literalism/--empathy by @r266-tech in #1871
- docs(configuration): document HINDSIGHT_CP_DATAPLANE_API_KEY for Control Plane by @r266-tech in #1872
- fix(db_utils): make acquire_with_retry yield exactly once by @slayoffer in #1880
- fix(cli): hindsight memory retain --timestamp + correct fact-type values by @slayoffer in #1881
- fix(embedded-db): bump pg0-embedded to 0.14.2 for clean stop/restart by @nicoloboschi in #1892
- fix(embed): launch Windows daemon via pythonw to stop ConPTY terminal tab by @nicoloboschi in #1890
- fix(retain): close to_unit_id deferred-FK race on memory_links inserts (#1882) by @nicoloboschi in #1894
- ci: add daily Windows smoke test (API + Python client integration) by @nicoloboschi in #1895
- feat(api): add Fireworks AI batch inference provider by @Fyko in #1860
- fix(api): robust retain/recall on special-token literals and lone surrogates by @nicoloboschi in #1891
- ci(windows-smoke): pin extras on uv run so deps survive by @nicoloboschi in #1900
- chore(docs): regenerate hindsight-docs skill references by @nicoloboschi in #1899
- fix(retain): offset chunk_index across sub-batches of an oversized document (#1888) by @nicoloboschi in #1896
- docs: drop removed
opinion/agentfact_type from MCP/SDK/integration references by @r266-tech in #1893 - fix(consolidation): make per-bank consolidation submit atomic + scope-aware (#1842) by @nicoloboschi in #1898
- fix(backup): include all 7 missing tables in backup/restore by @nicoloboschi in #1903
- fix(db): unblock PostgreSQL upgrade to v0.7.x (sqlalchemy<2.1 + autocommit_block migrations) by @nicoloboschi in #1904
- docs(integrations): drop removed
opinionfact_type from recall_types by @r266-tech in #1905 - feat(flowise): add Flowise integration with Hindsight memory tools by @benfrank241 in #1436
- fix(api): bound native ML thread pools to available CPUs by @nicoloboschi in #1901
- chore(dev): one-shot dev setup script + fix control-plane production build by @nicoloboschi in #1910
- feat(google-adk): add Hindsight integration for Google ADK by @benfrank241 in #1862
- blog: Hermes Agent on Windows — Set Up Persistent Memory with Hindsight by @benfrank241 in #1913
- blog: Building a Hermes Coding Assistant on Windows That Remembers Your Codebase by @benfrank241 in #1912
- perf(graph-maintenance): cast ANN seed embeddings once + add perf suite (#1919) by @nicoloboschi in #1924
- refactor(api): move audit-logs endpoint queries into MemoryEngine by @nicoloboschi in #1925
- docs(docker): drop --rm, add --name + restart policy in run examples by @nicoloboschi in #1927
- fix(control-plane): pin next to 16.2.5 to fix standalone i18n redirect loop (#1926) by @nicoloboschi in #1928
New Contributors
Full Changelog: v0.7.1...v0.7.2