v0.10.0
stackblitz-labs/bolt.diyv0.10.0Sep 14, 2026by github-actions[bot]
Upgrading?
AI Summary
A major performance and feature update focusing on memory retention efficiency, search capabilities, and deployment flexibility through Helm and Alembic improvements.
Key Highlights
- Performance: Replacement of TikToken with QuickTok for faster processing.
- Search: Per-bank toggle for text search and improved pg_textsearch scoring.
- Deployment: Support for custom containers and Prometheus monitoring in Helm charts.
- Memory: Optimized embedding serialization and batch processing.
- Templates: Introduction of a Business Executive bank template.
New Features
- Business Executive bank template.
- Per-bank enable_text_search toggle.
- Export knowledge base in document transfers.
- Alembic maintenance routines for deployments.
- Prometheus operator ServiceMonitor support.
Full Release Notes
## What's Changed * docs: changelog and blog post for v0.9.2 by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3765 * fix(retain): batch a document's chunk embeddings instead of one request per chunk by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3785 * perf(tokenizer): replace tiktoken with quicktok and default to o200k_base by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3788 * fix(benchmarks): repair retain_memory's imports of removed engine symbols by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3789 * retain: rebuild an oversized item's sub-batch from its original span by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3806 * fix(search): score pg_textsearch results per row by @mameikagou in https://github.com/vectorize-io/hindsight/pull/3802 * retain: accumulate a document's body instead of rebuilding it per sub-batch by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3809 * fix(coding-agents): don't let one stray file abort the Claude import, and give Prime Agent the companion skill (#3771, #3772) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3812 * fix(control-plane): scope the Knowledge view's page and mental model ids to the current bank by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3813 * blog: Your Agent Can Now Manage Its Own Knowledge Base Over MCP by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/3822 * feat(recall): add a per-bank enable_text_search toggle for pure vector recall by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3819 * feat(templates): add Business Executive bank template by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/3834 * blog: How We Made Retain's Peak Memory Flat, from 4 MB to 90 MB Documents by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/3839 * fix(transfer): remap mental model evidence ids by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3833 * feat(alembic): let a deployment own a maintenance routine by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/3842 * docs: update retain extraction mode documentation by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3838 * feat: export knowledge base in document transfers by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3855 * fix(llm): honor OpenAI's x-ratelimit-reset-* headers on 429s by @romanbsd in https://github.com/vectorize-io/hindsight/pull/3508 * blog: Cross-Encoder Reranking — The Last Stage of Agent Memory Recall by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/3868 * fix(retain): bound the within-batch link passes so a delta cannot OOM the worker (#3848) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3856 * Fix TEI stale socket retries by @oldnicke in https://github.com/vectorize-io/hindsight/pull/3375 * feat(control-plane): add i18n for knowledge base and refine mental models by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3677 * fix(embeddings): bounded retry/backoff + timeout for litellm/litellm-sdk providers by @icculp in https://github.com/vectorize-io/hindsight/pull/3090 * fix(worker): detect stuck tasks by stage progress by @BrianHotopp in https://github.com/vectorize-io/hindsight/pull/3720 * test: restore the global metrics collector instead of leaking it (#3780) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3816 * fix(providers): native ollama path honours the configured LLM timeout by @MasterST1337 in https://github.com/vectorize-io/hindsight/pull/3797 * feat(helm): add extraContainers and extraInitContainers to api, worker and control plane by @Adrastopoulos in https://github.com/vectorize-io/hindsight/pull/3801 * fix(reflect): accept a top-level array of delta operations by @ebarkhordar in https://github.com/vectorize-io/hindsight/pull/3829 * feat(helm): add Prometheus operator ServiceMonitor support by @aWN4Y25pa2EK in https://github.com/vectorize-io/hindsight/pull/3847 * perf(local): skip full GC for CPU reranker providers by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3858 * feat(pg_search): allow extension function schema to be configured by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3759 * fix(worker): bound wedged consolidation tasks by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3746 * [CLI] Add a `--trigger-mode full|delta` flag to `mental-models update` by @mdbenito in https://github.com/vectorize-io/hindsight/pull/3513 * fix(sdk): send only the trigger settings the caller named by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3913 * fix(retain, reflect): drop the source-language rule when an output language is set by @feniix in https://github.com/vectorize-io/hindsight/pull/3777 * fix(retain): sanitize model-derived fact text by @BrianMcBrayer in https://github.com/vectorize-io/hindsight/pull/3730 * fix(kb): apply a knowledge-node patch in one transaction by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3914 * fix(admin): sync identity sequences after restore by @r266-tech in https://github.com/vectorize-io/hindsight/pull/3844 * fix(api): preserve webhook validation status codes by @r266-tech in https://github.com/vectorize-io/hindsight/pull/3832 * fix(openclaw): add non-interactive flags to plugin install in smoke test by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3917 * feat(mental-models): meter model content by what is delivered, not by which endpoint served it by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/3869 * fix(embed): read CLI profile config as UTF-8 by @koriyoshi2041 in https://github.com/vectorize-io/hindsight/pull/3850 * fix(tests): name the ANN index the plan must use (#3619) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3911 * fix: propagate configured temperature through reflect calls by @koriyoshi2041 in https://github.com/vectorize-io/hindsight/pull/3828 * fix(db): memoise InvalidNameError GUC rejections like UndefinedObjectError by @Andreymi in https://github.com/vectorize-io/hindsight/pull/3826 * fix(api): round-trip the whole retain item so reprocess replays it faithfully by @shauneccles in https://github.com/vectorize-io/hindsight/pull/3874 * fix(security): run operation validator in get_mental_model_history (#… by @Sword-Saint69 in https://github.com/vectorize-io/hindsight/pull/3835 * fix(cli): preserve base64 '=' padding when parsing config-file api_key by @2anoubis in https://github.com/vectorize-io/hindsight/pull/3909 * fix(search): delegate pgroonga query tokenization to pgroonga_tokenize by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3907 * fix(retain): constrain occurred_start/occurred_end so grammar-constrained models can't emit prose by @nickanderson in https://github.com/vectorize-io/hindsight/pull/3845 * refactor(bank): eliminate redundant existence queries in _ensure_bank_exists by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3672 * perf(retain): optimize embedding_to_pgvector serialization via zero-copy orjson by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3815 * fix(llm): raise OutputTooLongError when a non-streaming completion is truncated by @ebarkhordar in https://github.com/vectorize-io/hindsight/pull/3827 * fix: recover Codex OAuth refresh after shared auth rotation by @dwayn in https://github.com/vectorize-io/hindsight/pull/3804 * fix(tests): stop generating webhook parametrize uuids at collection time by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3922 * fix(consolidation): apply one LLM response's writes in one transaction by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3923 * fix(coding-agents): stop unsafe gitlog cleanup by @r266-tech in https://github.com/vectorize-io/hindsight/pull/3879 * fix(embed): decode control center log tail as UTF-8 by @koriyoshi2041 in https://github.com/vectorize-io/hindsight/pull/3918 * fix(llm): derive visible output tokens from total on OpenAI-compatible providers (#3851) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3920 * fix(coding-agents): stop opencode's install from replacing a JSONC config by @etnperlong in https://github.com/vectorize-io/hindsight/pull/3843 * feat: expose core mental model trigger settings over MCP by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3739 * docs(docker): add guide and recipe for building CUDA standalone image by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3749 * fix(reflect): accept id-bearing blocks in delta add_section ops (#3901) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3919 * docs: stop recommending --user for Docker bind mounts (#3863) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3934 * fix(search): embed the whole mental-model document on every write by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3928 * fix(daemon): drop the idle timeout that could kill an in-flight request by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3930 * fix(anthropic): group consecutive tool results into one user message by @zlguo1996 in https://github.com/vectorize-io/hindsight/pull/3910 * fix(llm): repair malformed JSON in the openai-compatible provider (#3683) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3935 * fix(documents): skip the retag cascade when a tags PATCH changes nothing (#3912) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3931 * fix(embeddings): add retry logic and dimensions config for LiteLLM provider (#3695) by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3744 * fix(recall): score coarse dates from their period, not its first day (#3893) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3933 * fix(docker): ship images free of fixed HIGH CVEs and scan them daily by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3936 * memories: unify store-owned writes, delta-retain CAS, and PG-free tracking by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3696 * docs(hermes): disable Hermes's built-in memory via config flags by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3940 * fix(recall): honour min_scores.keyword on every text-search backend (#3882) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3938 * fix(llm): give every provider a real per-request deadline (#3898) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3946 * Fuse observation graph expansion into one database fetch by @jervaise in https://github.com/vectorize-io/hindsight/pull/3859 * fix(embeddings): bound ONNX forward passes and import embed calls (#3891) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3948 * fix(search): drop search-trace fields that are structurally always empty by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3947 * feat(reflect): send the operation schema on mental model delta refresh by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3937 * fix(retain): make reprocess re-extract instead of silently no-opping (#3899) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3949 * config: read a bank's own config fresh, not through the per-process cache by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3952 * fix(tests): isolate the worker claim tests in their own schema (#3963) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3970 * feat(coding-agents): add native DeepAgents Dcode integration by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3967 * fix(docker): drop npm from the runtime stages and scan every runtime base by @rschlek in https://github.com/vectorize-io/hindsight/pull/3960 * config: keep the hot path cached; freshness belongs to the caller that needs it by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3975 * coding-agents: keep the installed runtime current by itself by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3965 * fix(monitoring): make Grafana dashboards importable on older Grafana by @oldnicke in https://github.com/vectorize-io/hindsight/pull/3972 * memories: an edit writes its own vector, in the same write as the fields by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3964 * fix(knowledge): switch native knowledge BM25 from websearch AND to disjunctive OR by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3945 * fix(coding-agents): only ever ADD to a bank's config, never overwrite it by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3966 * fix(engine): authorize and provision banks before legacy mutations by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3969 * feat(coding-agents): add qwen-code as a hook harness by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3979 * metrics: time the operation-validator hooks, which run outside the operation's timer by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3976 * fix(coding-agents): stop a failed git probe from forking a worktree into its own bank by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3981 * fix(consolidation): resolve observation_scopes before tag-set batching by @ferrastas in https://github.com/vectorize-io/hindsight/pull/3954 * fix(structured-output): strip $ref sibling keywords from strict schemas by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3944 * fix(bank-template): resolve stale snapshot race during template import by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3971 * fix(retain): stop deriving the extraction narrator from the bank's display name (#3962) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3978 * fix(mental-models): skip the reflect loop when the scope holds nothing to read by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3943 * fix(coding-agents): survey prompt says Glob, not Read, for the directory layout by @MasterST1337 in https://github.com/vectorize-io/hindsight/pull/3796 * docs(docker): reserve shared memory for embedded PostgreSQL by @aunitt in https://github.com/vectorize-io/hindsight/pull/3896 * fix(coding-agents): identify safe MCP knowledge reads by @altaywtf in https://github.com/vectorize-io/hindsight/pull/3818 * fix(worker): rotate slots across banks so bulk ingest stops starving them (#3861) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3980 * feat(llm): per-provider Codex credentials directory (#3793) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3983 * feat(webhooks): emit X-Hub-Signature-256 and a timestamped signature by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3986 * fix(ci): stop one stalled Gemini call from outliving the caller, and isolate the third claim-test file by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3982 * fix(reflect): name the sections array the document schema requires by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3984 * coding-agents: support opencode 2, whose plugin API shares nothing with v1's by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3985 * fix(recall): boost the prioritised arm in rank space, not score space (#3956) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3987 * feat(coding-agents): add per_source observation scoping by @shauneccles in https://github.com/vectorize-io/hindsight/pull/3872 * chore(coding-agents): sync generated files after per_source (#3872) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3994 * feat(extensions): add hindsight-extensions registry and unbundle Supabase by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3988 * feat(coding-agents): first-class pi support, sharing one extension adapter and installer with Prime Agent by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3993 * feat(changelog): enumerate each release's migrations, with tables and volume by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3996 * fix(coding-agents): the runtime auto-update never fired — registry 406 on the /latest media type by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3997 * blog: What's New in Hindsight Cloud — June-August Updates by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/3951 * blog: date the Cloud roundup 2026-09-01 by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/4000 * metrics: time the recall phases, so the request's largest share stops being a residual by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3999 * fix(reflect): fail the run when a retrieval tool fails, and record refused refreshes by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4003 * fix(llm): name the phase a stalled LLM request died in (#3881) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3992 * fix(tracing): name API traces after the operation and link queued retain to its worker by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4006 * metrics: record a store-answered recall's phases on ordinary traffic, not only under a trace by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4007 * fix(retain): invalidate observations when a re-retain changes a document's scoping by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4019 * docs: make every integration changelog reachable, and compact the Integrations Hub by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4005 * fix(local-models): copy misaligned weights out of mapped storage, and fail fast by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4020 * fix(loop-watchdog): don't report the stall that stop() itself causes by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4021 * feat(entity-labels): add an open-vocabulary multi-valued label type (multi-text) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4027 * perf(tokenizer): move token counting from quicktok to toktok-rs by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4022 * fix(api): warm dateparser locale dictionaries once, under a lock by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4032 * perf(api): stop importing LiteLLM and markitdown on every startup by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4031 * fix(mental-models): return 409 on a duplicate mental-model id by @kubaodias in https://github.com/vectorize-io/hindsight/pull/4024 * fix(clients): close the bank-config drift between the wrapper SDKs and the server by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4030 * feat(api): run migrations in a subprocess, controlled by a flag by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4033 * fix: two test regressions from #4022 and #4031 (tokenizer cache leak, markitdown OCR fail-fast) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4036 * feat(recall): fuzzy tag matching on tag_groups leaves (#4026) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4028 * fix(cursor): register hooks on init, ship rules_file.py, flush on sessionEnd by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4041 * fix(recall): score fuzzy tag similarity on the value, not the namespaced tag by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4045 * refactor(retain): format pgvector literals without orjson, and drop orjson entirely by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4040 * blog: Four More Coding Agents That Remember Your Project by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/4042 * feat: run Hindsight on free-threaded CPython 3.14 (-py3.14t image) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4037 * feat(api): serve from several event loops in one process by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4067 * memories: drop count_chunks from the extension seam by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4080 * perf(embeddings): issue a remote provider's batches concurrently (#4039) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4043 * refactor(api-slim): write each duplicated policy once by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4083 * chore(deps): bump esbuild to 0.28.x and body-parser to 1.20.6 by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4050 * chore(deps): bump nltk to 3.10.3 in the llamaindex and pipecat locks by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4051 * chore(deps): bump fast-uri to 3.1.7 and browserslist to 4.28.8 by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4088 * ci: run the core suite when the workspace lockfile or root manifest changes by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4089 * chore(deps): bump torch to 2.13.0 and tornado to 6.5.8 by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4052 * chore(deps): bump agno to 3.0.5 by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4096 * blog: Enterprise Features in Hindsight Cloud by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/4004 * chore(deps): override json-repair past crewai's pin by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4098 * security: pin the llama.cpp prompt cache to RAM by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4102 * fix(tracing): attach bank ID to retain spans by @koriyoshi2041 in https://github.com/vectorize-io/hindsight/pull/4109 * fix(temporal): stop dateparser segfaulting the API under free-threading by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4110 * fix(api): paginate GET /observations/scopes and GET /webhooks by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4075 * chore(deps): remove unused tornado dependency by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4111 * fix(cli): print the server's response body on API errors (#4049) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4113 * fix(api): run tenant provisioning migrations through the isolation boundary by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4117 * fix(embed): forward every HINDSIGHT_* var to the daemon instead of a whitelist by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4119 * feat(llm): add Meta Model API as a first-class provider by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4081 * feat(retain): inline images and files as first-class content by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4077 * fix(api): install every PostgreSQL extension in the public schema (#4118) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4121 * fix(retain): keep per-memory entity-label tags when a re-retain rewrites document tags (#4068) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4120 * fix(api): give each event loop its own extension context by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4123 * fix(embeddings): let litellm-sdk invoke a Bedrock inference profile ARN by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4114 * refactor(api-slim): return a named result from LLMInterface.call by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4122 * fix(reflect): run split synthesis's map calls at temperature 0 by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4115 * fix(embeddings): route Gemini through the shared embedding retry policy by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4124 * fix(opencode-go): send x-opencode-session, one id per operation (#4071) by @benfrank241 in https://github.com/vectorize-io/hindsight/pull/4084 * feat(control-plane): banks overview page with bulk delete by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4125 * chore(deps): bump banks to 2.5.0 in the llamaindex integration lock by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4132 * test: make two deselection markers actually apply by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4126 * fix(embeddings): route Cohere and ZeroEntropy through the shared retry policy by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4129 * feat(api)!: retire the bank profile and background endpoints by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4127 * fix(embeddings): one TEI http client per thread, not one per provider by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4138 * fix(codex): defer work until quota reset by @0xble in https://github.com/vectorize-io/hindsight/pull/4161 * fix(reranker): give every remote reranker bounded retry by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4139 * chore: update the tagline to "Agent Memory That Learns" by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4093 * fix(cli): restore default SIGPIPE handling to prevent abort on broken pipe by @2anoubis in https://github.com/vectorize-io/hindsight/pull/3925 * fix(openclaw): restore compatibility with OpenClaw 2026.8.1+ by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4178 * fix(temporal): "last weekend" asked on a weekend means the previous one by @NgoQuocViet2001 in https://github.com/vectorize-io/hindsight/pull/4076 * fix(retain): scrub the whole retain item at the engine ingress, not field by field by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/3921 * fix(llm): identify OpenAI-compatible requests by @SharkyRawr in https://github.com/vectorize-io/hindsight/pull/4078 * fix(cache): preserve force refresh across event loops by @koriyoshi2041 in https://github.com/vectorize-io/hindsight/pull/4072 * fix(openclaw): resolve Dashboard agent identity from four-part session keys by @r266-tech in https://github.com/vectorize-io/hindsight/pull/4149 * fix(coding-agents): scope knowledge pages to the bank, not the session's cwd (#4146) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4184 * fix(operations): allow cancelling in-flight operations (#4131) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4177 * feat(openclaw): add recall score floors by @koriyoshi2041 in https://github.com/vectorize-io/hindsight/pull/4145 * fix(server): load .env before importing MemoryEngine to honor concurrency limits by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3939 * fix(docker): drop unused libxml2 from runtime images by @rschlek in https://github.com/vectorize-io/hindsight/pull/4055 * perf(docker): replace RUN chown with COPY --chown to speed up image building by @SharkyRawr in https://github.com/vectorize-io/hindsight/pull/4141 * fix(api-slim): read the opencode-go retry assertion off LLMCallResult.content by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4181 * fix(ci): unbreak test-api — the call envelope and the temporal golden corpus by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4185 * fix(api-slim): never import an observation citing a missing source unit by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4179 * fix(docker): drop unused libxml2 from the freethreaded runtime image by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4187 * feat(llm): route retain items to a chain member by their metadata by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4188 * fix(reflect): enforce max_tokens on the forced synthesis path too (#4156) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4180 * fix(concurrency): serve CrossLoopSemaphore waiters in arrival order by @ebarkhordar in https://github.com/vectorize-io/hindsight/pull/4157 * fix(consolidation): teach the prompt to name delete targets, and count discarded batch responses by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4183 * test(temporal): re-snapshot the golden corpus for the "last weekend" fix by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4192 * fix(embeddings): bound embedding input by the model's context, prefix included by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4182 * chore(docker): move the image Node runtime from EOL 20 to Active LTS 24 by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4193 * fix(openclaw): fail the smoke test on any hindsight doctor diagnostic by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4190 * fix(api): 404 bank-scoped reads for a bank that does not exist (#4175) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4186 * fix(coding-agents): read DSH transcript via snapshotEvents by @leilei3167 in https://github.com/vectorize-io/hindsight/pull/4148 * test(api-slim): regenerate the temporal golden corpus for the weekend fix by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4191 * ci: build the control plane on Node 24, matching the image by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4194 * fix(embeddings): send each Gemini input as its own Content by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/4001 * fix(docker): stop installing curl into the cp-only image by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4199 * fix(docker): drop the NodeSource bootstrap from the standalone image by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4200 * fix(search): clamp future dates before the exponential recency power by @ebarkhordar in https://github.com/vectorize-io/hindsight/pull/4105 * feat(coding-agents): add Factory Droid harness by @mrwogu in https://github.com/vectorize-io/hindsight/pull/4011 * fix(local-ml): floor torch at 2.11.0 so arm64 images run on ARMv8.0 CPUs by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4201 * perf(api-slim): stop the mental-model staleness check walking the bank (#4169) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4195 * feat(api,control-plane): a prompt tester for retain, and prompt preview for every operation by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4140 * fix(embeddings): one request per text for the Vertex single-content models by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4204 * perf(entity-resolver): optimize in-batch dedup via prefix filtering by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3991 * feat(coding-agents): spread page refreshes with hashed cron fields (`H`) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4208 * fix(docker): drop curl from the API runtime images by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4202 * perf(config): stop deep-copying the global config on every resolution (#4209) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4211 * perf(retain): accelerate within-batch semantic link calculation by @Sanderhoff-alt in https://github.com/vectorize-io/hindsight/pull/3977 * fix(coding-agents): replay a failed retain append instead of replacing the transcript (#3989) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4210 * test(system): blackbox system-test suite driven only through the public API by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4212 * chore(deps): bump qs to 6.16.0 in the coding-agents lock by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4220 * chore(deps): bump qs, @humanfs/node and postcss-selector-parser in the root lock by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4219 * feat(profiling): env-configured CPU profile, reported to the logs by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4215 * fix(recall): report the caller's query_timestamp in the search trace by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4227 * fix(retain): give a split append the whole document as its body, not just the tail (#3989) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4229 * docs: point the Slack community links at a redirect by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4223 * fix: defer retain completion outbox until store commit by @kyletser in https://github.com/vectorize-io/hindsight/pull/4203 * fix(python-client): add the missing async twins to the convenience wrapper (#4221) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4228 * perf(recall): stop building trace payloads when no trace was asked for by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4231 * feat(mental-models): default list to metadata; MCP list returns metadata only by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4225 * fix(api): type the list and graph rows instead of returning bare dicts (#4218) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4233 * fix(retain): a store-owned retain must not fail on its own log line by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4236 * perf(api): replace both BaseHTTPMiddleware with pure ASGI (3.2x on cheap routes) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4235 * feat(extensions): add StaticKeysTenantExtension — env-configured per-user API keys with per-schema isolation by @rafaelkallis in https://github.com/vectorize-io/hindsight/pull/3675 * revert: drop free-threaded CPython 3.14 support (#4037, #4067) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4234 * fix(api): expose the bank template import request body by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4247 * fix(reflect): say when the structured-output extraction failed (#4230) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4248 * feat(coding-agents): refresh knowledge pages hourly and staggered by default by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4241 * feat(coding-agents): add ZCode as a supported harness (#4240) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4258 * fix(retain): stop chunk ids colliding across banks by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4257 * chore(deps): update httpx2 and httpcore2 in the pydantic-ai integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4262 * chore(deps): update sharp and vitest in the cloudflare-oauth-proxy integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4263 * chore(deps): update js-yaml in the zapier integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4264 * chore(deps): update npm dependencies in the root lockfile by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4261 * chore(deps): update hono and vitest in the coding-agents integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4266 * chore(deps): update vitest in the ai-sdk integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4267 * chore(deps): update vitest in the chat integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4268 * chore(deps): update vitest in the eliza integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4269 * chore(deps): update vitest in the opencode integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4271 * chore(deps): update vitest in the eve integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4270 * chore(deps): update vitest in the flowise integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4273 * chore(deps): update vitest in the obsidian integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4275 * chore(deps): update vitest in the n8n integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4274 * docs(documents): say the tags PATCH replaces the array, and test clearing it by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4272 * feat(api,control-plane): recall results carry the attachments behind each fact by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4277 * refactor(config): make HindsightConfig the only parser of HINDSIGHT_API_* env vars by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4260 * feat(control-plane): add a pause button for constellation ambient motion by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4289 * test(system): blackbox system-test coverage across the epic by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4216 * fix(reflect): uniquify tool_call ids so strict APIs accept the turn by @gwthm-in in https://github.com/vectorize-io/hindsight/pull/4250 * fix(curation): clear the legacy event_date when occurred_start is cleared by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4278 * feat(control-plane): pin the current bank to the top of the bank selector by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4298 * fix(entities): give mention_count back when the mentions go (#4291) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4296 * fix(coding-agents): repair Grok config.toml left with an unmarked Hindsight block by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4302 * test(retain): make the post-commit convergence test causal, not a wall-clock race by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4294 * perf(db): skip asyncpg's release-time reset by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4259 * perf(recall): account for a recall's time per phase, and fix the three things that showed up by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4299 * fix(recall): a store-owned bank's attachment lookup does not read memory_units by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4306 * perf(recall): three CPU cuts on the recall path (audit serialization, phase sampling, on-loop query embedding) by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4314 * fix(coding-agents): record why an automatic reflect failed by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4316 * fix(api): declare binary download bodies so generated clients return bytes by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4315 * refactor: replace httpx and sync HTTP with aiohttp across production code by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4318 * test(system): the remaining epic stories, and two bugs they found by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4293 * fix(coding-agents): admit one codebase survey per bank, held by a heartbeat lease by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4303 * fix(reflect): grounding defects in reflect and knowledge-page delta refresh, plus system-evals by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4304 * feat(coding-agents): warn when the old Claude Code plugin is still installed by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4320 * feat(api): attachments on recall and read surfaces for store-owned banks by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4321 * feat(coding-agents): fall back to page search, then observation recall, when session reflect fails by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4324 * feat(coding-agents): record Hindsight tool usage and move logs to ~/.hindsight/coding-agents-logs by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4325 * chore(deps): update vitest and esbuild in the paperclip integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4300 * chore(deps): update vitest in the openclaw integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4301 * chore(deps): update adm-zip in the zapier integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4322 * chore(deps): update js-yaml and vitest in the nemoclaw integration by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4265 * feat(metrics): /metrics covers every worker (labelled api_worker), and event-loop lag as a histogram by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4319 * fix(coding-agents): keep the reflect fallback silent in the chat by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4354 * feat(api,clients): admission control with a bounded wait, and client retry by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4253 * feat(llm): per-member timeout and retry budget in a multi-LLM chain by @cdbartholomew in https://github.com/vectorize-io/hindsight/pull/4336 * chore(embed): re-sync the bundled env.example with the repo-root template by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4355 * fix(migrations): don't maintain memory_units or mental_models indexes under a custom memories store by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4326 * fix(profiling): arm the profiler in the workers, not only the supervisor by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4254 * chore(db): drop the unused memory_units_bm25 materialized view by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4357 * docs: changelog and blog post for v0.10.0 by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4245 * fix(docs): link the models page to configuration relatively, not via /docs/ by @nicoloboschi in https://github.com/vectorize-io/hindsight/pull/4361 ## New Contributors * @mameikagou made their first contribution in https://github.com/vectorize-io/hindsight/pull/3802 * @romanbsd made their first contribution in https://github.com/vectorize-io/hindsight/pull/3508 * @icculp made their first contribution in https://github.com/vectorize-io/hindsight/pull/3090 * @BrianHotopp made their first contribution in https://github.com/vectorize-io/hindsight/pull/3720 * @MasterST1337 made their first contribution in https://github.com/vectorize-io/hindsight/pull/3797 * @Adrastopoulos made their first contribution in https://github.com/vectorize-io/hindsight/pull/3801 * @aWN4Y25pa2EK made their first contribution in https://github.com/vectorize-io/hindsight/pull/3847 * @BrianMcBrayer made their first contribution in https://github.com/vectorize-io/hindsight/pull/3730 * @shauneccles made their first contribution in https://github.com/vectorize-io/hindsight/pull/3874 * @Sword-Saint69 made their first contribution in https://github.com/vectorize-io/hindsight/pull/3835 * @2anoubis made their first contribution in https://github.com/vectorize-io/hindsight/pull/3909 * @nickanderson made their first contribution in https://github.com/vectorize-io/hindsight/pull/3845 * @dwayn made their first contribution in https://github.com/vectorize-io/hindsight/pull/3804 * @etnperlong made their first contribution in https://github.com/vectorize-io/hindsight/pull/3843 * @zlguo1996 made their first contribution in https://github.com/vectorize-io/hindsight/pull/3910 * @jervaise made their first contribution in https://github.com/vectorize-io/hindsight/pull/3859 * @rschlek made their first contribution in https://github.com/vectorize-io/hindsight/pull/3960 * @aunitt made their first contribution in https://github.com/vectorize-io/hindsight/pull/3896 * @0xble made their first contribution in https://github.com/vectorize-io/hindsight/pull/4161 * @NgoQuocViet2001 made their first contribution in https://github.com/vectorize-io/hindsight/pull/4076 * @SharkyRawr made their first contribution in https://github.com/vectorize-io/hindsight/pull/4078 * @leilei3167 made their first contribution in https://github.com/vectorize-io/hindsight/pull/4148 * @mrwogu made their first contribution in https://github.com/vectorize-io/hindsight/pull/4011 * @kyletser made their first contribution in https://github.com/vectorize-io/hindsight/pull/4203 * @rafaelkallis made their first contribution in https://github.com/vectorize-io/hindsight/pull/3675 * @gwthm-in made their first contribution in https://github.com/vectorize-io/hindsight/pull/4250 **Full Changelog**: https://github.com/vectorize-io/hindsight/compare/v0.9.2...v0.10.0
Related Repositories
openclaw/openclaw★ 392,691
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,065
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 357,541
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,657
The open source coding agent.
n8n-io/n8n★ 208,248
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.