Every release, newest first. Currently running 1.2.0.
2026-10-08
You can now remove all of a specific user's messages, relationships, and metadata from a workspace in one operation.
This improves isolation and performance when managing conversations across multiple users in the same workspace.
This provides more reliable state management in the web console.
You can now distinguish between service issues and workspace-specific problems.
2026-10-05
You can attach and retrieve custom metadata alongside each message.
List endpoints now support filtering by userId and cursor-based pagination for better control over large result sets.
Entity relationships are now fully queryable with consistent identifiers and directional information.
Deletion now supports an option to remove all associated extraction data.
Unknown fields and data after the JSON body are now rejected on conversation, message, search, and query endpoints.
Embedding now respects both character and token limits, so no message is silently dropped from vector search.
The service enforces your deadline across all enrichment attempts, so abandoned calls no longer consume resources after you stop waiting.
Entity and relationship extraction now run more efficiently.
Duplicate detection now runs on all extracted entities, and the graph no longer loses relationships in large batches.
Unprovisioned tenants, DNS failures on reaped databases, and caller-supplied query errors are now logged at the appropriate level.
Your workspace ID is carried through all extraction calls so activity is traceable.
Deletion now removes messages, entities, relationships, and all associated metadata.
The message list endpoint now returns results in reverse chronological order.
Blank names are now rejected instead of being silently embedded.
When a write matches multiple edges, the lowest ID is now returned consistently.
API documentation is now generated from annotations, so it stays in sync with the code.
Results over 1000 rows are now rejected instead of being truncated silently.
The provisioning flow now adopts an existing database instead of spinning forever.
Memory usage stays under control as the deferred stream no longer fills to capacity.