Changelog

Every release, newest first. Currently running 2.0.0.

2.0.0

2026-10-21

  • addedYou can now invite users to your workspace by email or user ID.

    Invitations expire after 7 days and include a single-use link. The console shows pending invitations and lets you revoke them.

  • addedYou can now leave a workspace.

    Use the console or `DELETE /v1/users/me/workspaces/:id`. You cannot leave if you are the last owner.

  • addedYou can now see and disconnect MCP applications in the console.

    The API Keys page has a Connected MCP applications card with a Disconnect button for each client.

  • addedYou can now delete skills, whether draft or published.

    Use the console or `DELETE /v1/skills/:id`. A published skill leaves the published skills feed, but agents that already downloaded it keep their copy. The delete is refused if another skill calls it or a distillation run is in flight.

  • addedBYOK LLM endpoints are now validated to prevent calls to internal services.

    The credential test and every extraction check that the endpoint is public, that redirects stay public, and that the region is valid. Calls to internal addresses are refused.

  • addedYou can no longer point a workspace at its own managed database as an external database.

    The test and switch endpoints now refuse NAMS hosts and the ops host.

  • addedFailed logins to external databases are now rate-limited per user.

    Each user gets 10 attempts per 15 minutes across all targets. This prevents a workspace admin from locking NAMS out of a database by aiming wrong-password logins at it.

  • changedWorkspace membership is now invitation-only.

    A user joins a workspace only when they accept an invitation from an owner or admin. Members added before this release who have not yet signed up will lose access until they accept the invitation in the console.

  • changedMCP clients now require your consent before they can access your workspace.

    You see a consent page once per client, showing the client name, redirect host, scopes, and your workspaces. You can deny the request. Approving a client again ends tokens from any earlier approval.

  • changedAPI keys can no longer be revealed or rotated by narrower credentials.

    An MCP token or a narrowed API key cannot access a key with wider scopes. Your Default key now works only in your first workspace.

  • improvedEntity extraction now loads faster.

    Model load time dropped from 16.7 seconds to 8.6–10.8 seconds.

  • fixedThe console now shows the server's message for all 409 conflicts.

    Before, only workspace name conflicts showed their message; other conflicts fell back to a generic error.

  • fixedMCP consent answers now work in a real browser.

    The consent page can now receive Allow and Deny requests from the browser.

  • fixedLong messages are now fully searchable.

    Long messages now receive embeddings and are visible to search.

  • removedThe `takenAt` field is no longer returned from `GET /v1/workspace/archives`.

    The console shows the import date for imported snapshots until they expire.

1.4.1

2026-10-15

  • improvedDatabase copies now retry on transient write failures.

    If a copy operation fails because the database temporarily stopped accepting writes, it will automatically retry for up to a minute instead of failing immediately.

  • fixedStopped databases no longer cause repeated errors during migration.

    When a database becomes unavailable, the migration process now recognizes this and stops trying to migrate it, eliminating the error logs that were appearing every few minutes.

1.4.0

2026-10-15

  • addedYou can now restore workspaces that used the legacy database service.

    Workspaces created before the managed-database pool had their data backed up by the legacy service. Those backups are now imported as restorable snapshots, so you can restore them from the console the same way as any other snapshot.

  • improvedDatabase connection errors are now retried automatically.

    When the database becomes temporarily unreachable, requests are retried instead of failing immediately. You'll see fewer transient errors in your logs.

  • fixedLong documents now correctly report when they have been truncated.

1.3.0

2026-10-12

  • improvedReview queue now processes only entity pairs that share a neighbouring entity.

    This reduces unnecessary work and makes review processing more efficient.

  • fixedDatabase provisioning now correctly handles schema setup retries.

1.2.0

2026-10-08

  • addedDelete one user's memory in a single call.

    You can now remove all of a specific user's messages, relationships, and metadata from a workspace in one operation.

  • addedMemory is now partitioned per user within each workspace.

    This improves isolation and performance when managing conversations across multiple users in the same workspace.

  • improvedOntology detail state is now reset by remounting instead of in an effect.

    This provides more reliable state management in the web console.

  • fixedThe API now returns 424 when a workspace's external database fails.

    You can now distinguish between service issues and workspace-specific problems.

  • fixedLong messages are now fully searchable.
  • fixedSearch now fails clearly when a vector index is missing.
  • fixedFailed message fetch deferrals are now reported.
  • fixedRelationships and auto-merges stay within their partition during migration.

1.1.0

2026-10-05

  • addedConversations now accept and return metadata on messages.

    You can attach and retrieve custom metadata alongside each message.

  • addedYou can filter conversations by user and page through them with a cursor.

    List endpoints now support filtering by userId and cursor-based pagination for better control over large result sets.

  • addedRelationships now have stable IDs and report their direction.

    Entity relationships are now fully queryable with consistent identifiers and directional information.

  • addedYou can purge extracted data when deleting a conversation.

    Deletion now supports an option to remove all associated extraction data.

  • addedThe API now rejects malformed requests more strictly.

    Unknown fields and data after the JSON body are now rejected on conversation, message, search, and query endpoints.

  • improvedLong messages are now fully searchable.

    Embedding now respects both character and token limits, so no message is silently dropped from vector search.

  • improvedExtraction now completes within your timeout.

    The service enforces your deadline across all enrichment attempts, so abandoned calls no longer consume resources after you stop waiting.

  • improvedExtraction is faster on most workloads.

    Entity and relationship extraction now run more efficiently.

  • improvedEntity resolution is more accurate and complete.

    Duplicate detection now runs on all extracted entities, and the graph no longer loses relationships in large batches.

  • improvedAlerts no longer fire for expected tenant and caller faults.

    Unprovisioned tenants, DNS failures on reaped databases, and caller-supplied query errors are now logged at the appropriate level.

  • fixedExtraction requests are now attributed to your workspace for safety monitoring.

    Your workspace ID is carried through all extraction calls so activity is traceable.

  • fixedRate limiting and token refresh now work correctly under load.
  • fixedConversations now delete all their data.

    Deletion now removes messages, entities, relationships, and all associated metadata.

  • fixedMessages now list newest first.

    The message list endpoint now returns results in reverse chronological order.

  • fixedEntity names are no longer embedded when blank.

    Blank names are now rejected instead of being silently embedded.

  • fixedRelationship queries now return consistent results.

    When a write matches multiple edges, the lowest ID is now returned consistently.

  • fixedThe API reference is now always current.

    API documentation is now generated from annotations, so it stays in sync with the code.

  • fixedConsole queries now respect their size limit.

    Results over 1000 rows are now rejected instead of being truncated silently.

  • fixedProvisioning no longer hangs when a database already exists.

    The provisioning flow now adopts an existing database instead of spinning forever.

  • fixedStream retention is now bounded.

    Memory usage stays under control as the deferred stream no longer fills to capacity.