NewRelease 0.12.3 is out: Engine v0.12.3, Dashboard 0.5.2, Helm 0.12.3, the four SDKs, CLI 0.8.2 and MCP 0.12.3Release 0.12.3 is outSee what's new →

Changelog

Dakera ships as a release train: the Engine, Dashboard, Helm chart, the Python, TypeScript, Go and Rust SDKs, the CLI and the MCP server are released together and tested against each other. Each release below lists every component's version, what changed in it and what needs attention before you upgrade. Pick a component to see only its changes. The engine's full notes follow the trains.

Current versions

Release train 0.12.3. Each component works with the Engine versions its notes name; the SDKs, CLI and MCP server released with 0.12.3 also work against 0.12.0, 0.12.1 and 0.12.2 servers.

Current versions — release train 0.12.3 (Oct 22, 2026)
ComponentVersionReleasedInstallLinks
Enginedakera 0.12.3 docker pull ghcr.io/dakera-ai/dakera:0.12.3
Dashboarddakera-dashboard 0.5.2 docker pull ghcr.io/dakera-ai/dakera-dashboard:0.5.2
Helm chartdakera-helm 0.12.3 helm install dakera oci://ghcr.io/dakera-ai/dakera-helm/dakera --version 0.12.3
Python SDKdakera 0.14.1 pip install dakera==0.14.1
TypeScript SDK@dakera-ai/dakera 0.12.3 npm install @dakera-ai/[email protected]
Go SDKgithub.com/dakera-ai/dakera-go v0.12.3 go get github.com/dakera-ai/[email protected]
Rust SDKdakera-client 0.12.3 cargo add [email protected]
CLIdakera-cli 0.8.2 brew install dakera-ai/tap/dk
MCP server@dakera-ai/dakera-mcp 0.12.3 npm install -g @dakera-ai/[email protected]

Release trains

Release 0.12.3Documents become memory; recall you can sort on

Patch trainCurrent

Every component ships together. Engine 0.12.3 upgrades in place from 0.12.2, 0.12.1, 0.12.0 and 0.11.108: back up, then replace the image or binary. Agents can now import whole documents and cite them, recall gets a ranking field and a stable order, ingest and reranked recall run faster with less memory, and the images are signed and smaller. The Dashboard, SDKs, CLI and MCP server add document import and the new recall options and keep working against 0.12.0 to 0.12.2 servers, where the 0.12.3-only features fall back or stay hidden.

  • Engine0.12.3
  • Dashboard0.5.2
  • Helm chart0.12.3
  • Python SDK0.14.1
  • TypeScript SDK0.12.3
  • Go SDKv0.12.3
  • Rust SDK0.12.3
  • CLI0.8.2
  • MCP server0.12.3
  • Document import: PDF, DOCX, HTML, Markdown and plain text become searchable, citable memory chunks with heading breadcrumbs and page ranges.
  • Recall results carry rank_score, which follows their order; asking for more results never reorders the first ten; neighborhood_mode puts session context inline, in its own list or nowhere.
  • event_time on stores: imported and replayed histories reason about time from their own dates.
  • Faster ingest and reranked recall with lower peak memory: one model worker per physical core, an exact rerank score cache and a fair rerank queue.
  • A busy server answers 429 with Retry-After instead of 503, and the REST port reports progress during crash recovery.
  • Signed images with SBOM and provenance, a smaller CPU image without curl (new dakera healthcheck) and a non-root GPU image on CUDA 13.

Breaking / needs attention before upgrading

  1. The images no longer contain curl. A health check that runs curl inside the container must use ["CMD", "dakera", "healthcheck", "/health/ready"] instead. Kubernetes httpGet probes are not affected.
  2. AutoPilot deduplication is off by default. Set DAKERA_AUTOPILOT_DEDUP_MODE=merge to keep merging duplicates (it no longer merges across sessions) or report to only report them. Memories removed by deduplication or consolidation can be restored for 7 days (GET /v1/memory/deduplicated).
  3. Authentication off, reached by a dotted host name? List the name in DAKERA_ALLOWED_HOSTS (or *), or every request except /health* is refused with 421.
  4. Admin requests are strict: POST /ops/shutdown needs a global super_admin key, and creating keys, backups and encryption key rotations answer 422 to a field they do not know.
  5. Behind a proxy or load balancer: idle keep-alive connections close after 30 s (DAKERA_HTTP_HEADER_READ_TIMEOUT_SECS); keep the proxy's upstream idle timeout below it.
  6. GPU image: CUDA 13, running as a non-root user; it needs an NVIDIA driver R580 or later.

Upgrading from v0.12.2 to v0.12.3 →

  • Engine0.12.3
    • Document import: POST /v1/memory/documents and POST /v1/namespaces/{ns}/attachments/{ref}/document, with jobs, listing and delete; structure-aware chunking, parsing in a sandboxed child process.
    • neighborhood_mode, include_summaries and rank_score on recall; a stable head ranking; optional collapse of sentence sub-memories into their source.
    • event_time on store and batch store; recall and search for an agent with nothing stored answer 200 with no memories.
    • Model pools sized to physical cores and measured at startup, exact rerank score cache, default rerank candidate cap, searches keep CPU during ingest, parallel startup reads, memory returned to the OS after bursts.
    • Soft deletes with a restore window for deduplication and consolidation; every deletion audited; ignored request fields reported as warnings.
    • Overload answers 429 + Retry-After; header-read and HTTP/2 idle timeouts, a connection cap, a bounded shutdown and DNS-rebinding protection with authentication off.
  • Dashboard0.5.2
    • Documents page: paste text, Markdown or HTML or upload a PDF or DOCX, follow each import, browse a document's chunks with pages and headings.
    • Recall lab: results ranked by the engine's rank score, citations for document chunks, session context listed in its own section.
    • Runs unprivileged (uid/gid 10001) and works with a read-only root filesystem; the sign-in throttle counts the real client behind a proxy (DAKERA_TRUSTED_PROXIES).
    • Works with Engine 0.12.0 to 0.12.2 too; 0.12.3-only features fall back or stay hidden.

    Needs attention: The image has no curl: point external probes at /_session/healthz over HTTP, or rely on the image's own health check.

  • Helm chart0.12.3
    • Deploys Engine 0.12.3 and Dashboard 0.5.2.
    • New optional values for the 0.12.3 settings (httpHeaderReadTimeoutSecs, neighborhoodMode, allowedHosts and more), checked by values.schema.json; dakera.existingSecret for a Secret you manage.
    • Hardened defaults: a read-only root filesystem for the server and a network policy that lets only Dakera reach the built-in MinIO.

    Needs attention: dakera.readOnlyRootFilesystem is now true; set it to false to keep the previous behaviour. Anything else that reads the built-in MinIO goes in minio.networkPolicy.additionalFrom.

  • Python SDK0.14.1
    • import_document(), import_attachment_document(), wait_for_document_job(), list_documents(), get_document(), delete_document().
    • recall(neighborhood_mode=, include_summaries=), context_memories on the response, results ordered by rank_score; event_time on stores.
    • Retries only where repeating is harmless: a write that got a 500 is no longer sent twice.

    The Python SDK is numbered ahead of the server; 0.14.1 is the release for Engine 0.12.3.

  • TypeScript SDK0.12.3
    • importDocument(), importAttachmentDocument(), waitForDocumentJob(), listDocuments(), getDocument(), deleteDocument().
    • recall() takes neighborhood_mode and include_summaries; results carry rank_score, matched_text and their context.
    • Safer transport: writes are never retried after a timeout or 500, timeouts cover the response body, event streams send the key in a header.

    Needs attention: Admin request bodies are strict: createKey() needs a scope and drops the never-read permissions / expires_at fields (use expires_in_days).

  • Go SDKv0.12.3
    • ImportDocument, ImportAttachmentDocument, WaitForDocumentJob, ListDocuments, GetDocument, DeleteDocument.
    • RecallRequest.NeighborhoodMode and IncludeSummaries, ContextMemories on the response, MatchedText on results.
    • Retries never replay a write; the client honours HTTPS_PROXY / NO_PROXY; ClientOptions.Transport.
  • Rust SDK0.12.3
    • import_document(), import_attachment_document(), wait_for_document_job(), list_documents(), get_document(), delete_document().
    • NeighborhoodMode and with_include_summaries() on recall, context_memories on the response, matched_text on results.
    • The API key is redacted from Debug output.
  • CLI0.8.2
    • dk document import|job|list|show|delete: import a file and follow the job, list documents, show a document's chunks.
    • dk memory recall shows at most --top-k ranked results, session context in its own section and a SOURCE column for document chunks; --neighborhood and --include-summaries.
    • A hint names the field when an admin request is refused for an unknown field.

    Needs attention: dk --format json memory recall prints one object, {"memories": [...], "context_memories": [...]}, instead of an array: read the results from .memories.

  • MCP server0.12.3
    • New tools: dakera_import_document, dakera_document_status, dakera_list_documents, dakera_delete_document; recall results that are document chunks carry a citation.
    • dakera_recall and dakera_recall_associated return at most top_k ranked results, with session context listed apart (neighborhood_mode).
    • Profiles: all 106 tools, power 86, core 14, admin 34. The API key never reaches the logs.

Release 0.12.2Scoped keys, server-side agents and sessions that close themselves

Patch train

Every component ships together. Engine 0.12.2 upgrades in place from 0.12.1, 0.12.0 and 0.11.108: back up, then replace the image or binary. The Dashboard, SDKs, CLI and MCP server add the new routes and keep working against 0.12.0 and 0.12.1 servers, where the 0.12.2-only features fall back or stay hidden.

  • Engine0.12.2
  • Dashboard0.5.1
  • Helm chart0.12.2
  • Python SDK0.14.0
  • TypeScript SDK0.12.2
  • Go SDKv0.12.2
  • Rust SDK0.12.2
  • CLI0.8.1
  • MCP server0.12.2
  • Updates no longer fail with 503 "changed during each of 5 attempts": every JSON store returns records bit-for-bit as written.
  • Key grants take prefix patterns (team-*), keys are edited in place (PATCH), rotation has a grace period, and GET /v1/auth/whoami shows what a key can reach.
  • POST /v1/agents creates an agent before its first memory.
  • Idle sessions end after 4 h by default; POST /v1/sessions/{id}/touch keeps a quiet one open.
  • Graph View and memory lists serve an opt-in content preview (content_preview_chars).

Breaking / needs attention before upgrading

  1. Sessions end after 4 hours without activity by default. Set DAKERA_SESSION_IDLE_TIMEOUT_SECS=0 (Helm: dakera.config.sessionIdleTimeoutSecs: "0") or start sessions with idle_timeout_secs: 0 to keep the old behaviour. Orphan sessions open longer than the timeout are closed, with their summaries, on the first passes after the upgrade.
  2. Stricter validation (400): memory metadata, the content limit (now UTF-8 bytes, DAKERA_MAX_MEMORY_CONTENT_BYTES, also on update), reserved markers and ids, key namespace lists and imports; raw vector routes no longer write memory records into agent namespaces.
  3. Authorization tightened: sessions are authorized by their agent (no _dakera_sessions grant), ending a session with a Read key is 403, open event streams re-check scope, agent ids are at most 241 bytes. A foo* entry on a key created before 0.12.2 stays inert until the key's namespaces are saved again.
  4. Listings leave derived records out: include_derived=true restores sentence sub-memories on agent memories and wake-up. The MCP listing tools now return 500-character previews by default (content_preview_chars: 0 for full content).
  5. Rollback to v0.11.108 needs dakera downgrade run with the 0.12.2 image (it rewrites the new binary hot-tier records as JSON first). Going back to 0.12.1 or 0.12.0 needs nothing.

Upgrading from v0.12.1 to v0.12.2 →

  • Engine0.12.2
    • Conditional writes compare a node-local write revision; every store keeps ttl_seconds; floats round-trip exactly.
    • Prefix-pattern grants, PATCH /admin/keys/{key_id}, rotation grace (up to 7 days), GET /v1/auth/whoami.
    • POST /v1/agents; namespaces report their kind; capabilities v2.
    • Session idle timeout and POST /v1/sessions/{id}/touch; ended_reason on sessions.
    • Derived data (sentence sub-memories, graph edges, full-text entries) repaired by a background reconciler; node-wide endpoints answer within 2 s.
    • RocksDB hot tier writes binary records by default (about a third of the bytes).
  • Dashboard0.5.1
    • Add agent, edit a key in place, rotate with a grace period, prefix-pattern grant chips (inert entries struck through with why).
    • Session lifecycle: last activity, "auto-ends in ~X", "Ended after N h idle", Mark active.
    • A calmer, consistent look: new design tokens, WCAG AA semantic colours in both themes, one button/field/table geometry.
    • Text truncated by character (Cyrillic, CJK, emoji), no infinite spinners, lists ask for 300-character previews.
    • Works with Engine 0.12.0 and 0.12.1 too; 0.12.2-only features fall back or stay hidden.
  • Helm chart0.12.2
    • Deploys Engine 0.12.2 and Dashboard 0.5.1.
    • New optional values: sessionIdleTimeoutSecs, maxMemoryContentBytes, vectorCacheBytes, rocksdbRecordFormat, validated by values.schema.json.
    • The rollback Job runs dakera downgrade with the 0.12.2 image.

    Needs attention: Do not point rollback.image at an older v0.12 image.

  • Python SDK0.14.0
    • create_agent(), update_key() / update_namespace_key(), rotate_key(grace_secs=), whoami().
    • touch_session(), idle_timeout_secs, session lifecycle fields; content_preview_chars and include_derived on listings.
    • derivations_status() / drain_derivations(); capabilities v2.
    • Fixed: namespace-key responses no longer raise KeyError; async list_namespaces() and session_memories() match the sync client.

    Needs attention: create_key() and create_namespace_key() now send scope (keyword, default "read"); the server requires it, so calls without it used to fail with 422.

    The Python SDK is numbered ahead of the server; 0.14.0 is the release for Engine 0.12.2.

  • TypeScript SDK0.12.2
    • createAgent(), updateKey() / updateNamespaceKey(), rotateKey(id, { grace_secs }), whoami().
    • touchSession(), endSession(id, { summary }), session lifecycle fields; listing options (offset, include_derived, content_preview_chars).
    • Fixed: listSessions(), sessionMemories() and listKeys() unwrap the server's answers.

    Needs attention: rotateKey() is now typed as RotateKeyResponse (it was typed as ApiKey, whose fields the answer never had).

  • Go SDKv0.12.2
    • CreateAgent, UpdateKey / UpdateNamespaceKey, RotateKeyWithOptions (grace period), Whoami.
    • TouchSession, StartSessionRequest.IdleTimeoutSecs, SessionMemoriesWithOptions, Get/SetSessionIdleTimeout.
    • Fixed: SessionMemories, FullKnowledgeGraph, Deduplicate and the key calls decode the server's answers.
  • Rust SDK0.12.2
    • create_agent(), update_key() / update_namespace_key(), rotate_key_with_grace(), whoami().
    • touch_session(), start_session_with(), agent_memories_with() / session_memories_with() / wake_up_with() options.
    • Fixed: namespace-key answers deserialize.

    Needs attention: Source-breaking for struct literals: FullKnowledgeGraphRequest, CrossAgentNetworkRequest and SessionStartRequest gain fields (use ..Default::default()); CreateNamespaceKeyRequest needs a scope.

  • CLI0.8.1
    • dk whoami, dk agent create, dk keys edit, dk keys rotate --grace.
    • dk session touch, dk session start --idle-timeout, dk admin session-idle-timeout.
    • --preview and --include-derived on memory listings; dk admin derivations-status / derivations-drain.
    • Fixed: dk keys rotate prints the new key. Built on dakera-client 0.12.2.
  • MCP server0.12.2
    • New tools: dakera_session_touch, dakera_agent_create, dakera_whoami.
    • idle_timeout_secs on session start; include_derived on memories and wake-up; field-named hints on 400 answers.
    • Profiles: all 102 tools, power 82, core 14, admin 34.

    Needs attention: Memory listing tools return 500-character previews by default (content_preview_chars; 0 returns full content). dakera_memory_get and recall still return full memories.

Release 0.12.1Upgrades need fewer steps; the Dashboard signs operators in

Patch train

Engine 0.12.1 makes keyword search and model changes work after an upgrade without operator steps, and fixes the figures the Dashboard shows. The Helm chart stops handing the Dashboard the root API key. The SDKs and CLI from the 0.12.0 train are unchanged (Python had a 0.13.2 fix on 2026-10-02).

  • Engine0.12.1
  • Dashboard0.5.0
  • Helm chart0.12.1
  • Python SDK0.13.2
  • TypeScript SDK0.12.1
  • Go SDKv0.12.1
  • Rust SDK0.12.1
  • CLI0.8.0
  • MCP server0.12.0
  • Full-text indexes built by v0.11 answer keyword queries again, re-analysed in the background.
  • Changing DAKERA_MODEL re-embeds the store by itself while recall stays correct.
  • Memory, session and agent counts agree across endpoints and no longer read every record.
  • Dashboard 0.5.0: six-area navigation, an Operations hub, analytics and metrics; the Helm chart now deploys it with sign-in instead of handing it the root key.

Breaking / needs attention before upgrading

  1. Clusters need DAKERA_CLUSTER_SECRET on every node, upgraded or not; a cluster node without it refuses to start. Set the same secret everywhere and upgrade the nodes in one window. Single-node deployments are not affected.
  2. Memory totals count memories, not stored records: memory counts drop and session counts include ended sessions. Re-base dashboards and alerts.
  3. Helm: rotate dakera.rootApiKey if the old Dashboard (0.3.x, which embedded the root key in its pages) was reachable by anyone who should not hold it.

Upgrading from v0.12.0 to v0.12.1 →

  • Engine0.12.1
    • Keyword search and keyword-routed recall work after a v0.11 upgrade with no manual reindex.
    • Model changes re-embed in the background (progress in /health).
    • Statistics and listings answer from maintained counts (16.6 s → maintained); batch recalls and searches reach KPIs.
    • Code audit fixes: security, data and search edge cases.
  • Dashboard0.5.0
    • Six-area navigation with breadcrumbs and g-key shortcuts; every 0.4 URL redirects.
    • Operations hub (jobs, re-embedding, indexes, consolidation), Analytics, Metrics, Import & export, Audit log.
    • dakera.ai brand, strict Content-Security-Policy, faster loading.
  • Helm chart0.12.1
    • Deploys Engine 0.12.1 and Dashboard 0.5.0: operators sign in with their own key, the chart gives the Dashboard no key.
    • Cluster mode without a secret is refused at render time.
  • Python SDK0.13.2
    • Fixed: from dakera import * no longer fails when the optional TealTiger extra is not installed.
  • TypeScript SDK0.12.1unchanged
  • Go SDKv0.12.1unchanged
  • Rust SDK0.12.1unchanged
  • CLI0.8.0unchanged
  • MCP server0.12.0
    • Docker image rebuilt on distroless/static: 135 MB → 14 MB, no shell or OS libraries, still non-root.
    • LICENSE detected as MIT by GitHub and registries.

Release 0.12.0Multilingual, multimodal and multi-vector memory

Minor train

The v0.12 line. Every new engine feature is opt-in and an unchanged v0.11.108 deployment upgrades in place; dakera downgrade goes back. The Dashboard, SDKs, CLI and MCP server add v0.12 support and keep working against v0.11.108.

  • Engine0.12.0
  • Dashboard0.4.0
  • Helm chart0.12.0
  • Python SDK0.13.1
  • TypeScript SDK0.12.1
  • Go SDKv0.12.1
  • Rust SDK0.12.1
  • CLI0.8.0
  • MCP server0.11.0
  • Opt-in multilingual search (bge-m3, per-language stemming, dates in seven query languages) and multimodal memory (attachments, speech to text, image indexing, records).
  • Reranked recall at top_k 16: 11.5 s → 6.2 s, container memory 4.98 GB → 0.65 GB (4 CPU / 8 GiB).
  • gRPC requires an API key; encrypted data is bound to its record; cluster traffic is authenticated.
  • dakera downgrade converts a stopped deployment back to what v0.11.108 reads.

Breaking / needs attention before upgrading

  1. gRPC clients need an API key when authentication is on; keys pinned to namespaces get 403 on node-wide routes; backup download, upload and restore need super_admin.
  2. Namespace quotas are enforced (413 over a hard quota); smart_score changes scale.
  3. Health checks: point readiness at /health/ready and liveness at /health/live; run dakera --check-config with the new image first.
  4. Helm: remove dakera.config.l2CachePath (v0.12 no longer reads DAKERA_L2_CACHE_PATH).

Upgrading to v0.12 →

  • Engine0.12.0
    • Multilingual search, multimodal memory, records and multi-vector, late interaction, RaBitQ search mode (all opt-in).
    • Faster, leaner recall and HNSW (−43% memory per 1024-d vector at the same recall@10).
    • Security hardening and versioned cluster replication; dakera downgrade.
  • Dashboard0.4.0
    • Encryption, Quotas, Backups, Server health, Capabilities and Recall lab pages for Engine 0.12.
    • The dashboard no longer publishes an API key: operators sign in at /login with their own key, kept server-side behind an HttpOnly cookie.

    Needs attention: Breaking for deployments: DAKERA_API_KEY and DAKERA_CLIENT_URL are no longer used (ignored with a warning); remove them.

  • Helm chart0.12.0
    • Deploys Engine 0.12.0 (the Dashboard default was still 0.3.29 until chart 0.12.1).
    • Upgrade notes: back up, run dakera --check-config with the new image, remove l2CachePath.
  • Python SDK0.13.1 · 0.13.0 the same day
    • v0.12 support: readiness helpers, typed errors (503 + Retry-After, 413, 501), attachments and records, per-request lang, capabilities.
    • 0.13.1: calls checked against a live v0.12.0 server (memory_link() takes agent_id).
  • TypeScript SDK0.12.1 · 0.12.0 the same day
    • Typed capabilities(), forward-compatible enums, pre-flight validation, v0.12 server support.
    • 0.12.1: knowledge-graph calls match the server contract.
  • Go SDKv0.12.1 · 0.12.0 on 2026-09-22
    • Capabilities, readiness, Retry-After, typed errors, attachments, records, per-request Lang.
    • 0.12.1: requests and answers checked against the v0.12.0 server.
  • Rust SDK0.12.1 · 0.12.0 the same day
    • Typed capabilities, lenient enums, pre-flight validation, v0.12 server support.
    • 0.12.1: fixes for calls that failed against the server.
  • CLI0.8.0
    • dk capabilities, dk health ready|live, dk attachment, encryption, embed-migration and backup admin commands.
  • MCP server0.11.0
    • dakera_capabilities, attachment tools (opt-in on the server), per-request lang, dakera_health, dakera_wake_up, v0.12 error hints.

Engine release notes in full

Everything that changed in the server, release by release, for operators planning an upgrade and developers tracking API changes: highlights, behavior changes with what to do, new features, measured performance, security, fixes and removals. A container image is published for every release to GHCR; self-host deploy bundles are on GitHub Releases.

Engine v0.12.3 2026-10-22 CURRENT

v0.12.3 upgrades in place from v0.12.2, v0.12.1, v0.12.0 and v0.11.108: back up, then replace the image or binary. Nothing is migrated by hand, and the stored formats are those of v0.12.2, so going back to v0.12.2 needs nothing. Agents can now import whole documents and cite them, recall gains a ranking field that follows result order and a ranking that no longer shifts with top_k, ingest and reranked recall run faster with less memory, and the images are signed and smaller. Four changes need attention before the upgrade: the images no longer contain curl, AutoPilot deduplication is off by default, deployments with authentication off accept only known host names, and admin requests are stricter.

What improves · Breaking or behavior changes · New · Fixes · Upgrade

What improves

Breaking or behavior changes

  1. No curl in the images. The server image probes itself with dakera healthcheck [PATH] (default /health; exit 0 only on 200). What to do: change any health check that runs curl inside the container to ["CMD", "dakera", "healthcheck", "/health/ready"]. Kubernetes httpGet probes and checks from outside the container are not affected.
  2. AutoPilot deduplication is off by default. New DAKERA_AUTOPILOT_DEDUP_MODE: off (default), report (find duplicate groups and report them in GET /admin/autopilot/status, change nothing) or merge (the previous default). In merge mode memories of two different sessions are no longer merged (DAKERA_AUTOPILOT_DEDUP_CROSS_SESSION=true allows it), and consolidation groups one session's memories by default (DAKERA_AUTOPILOT_CONSOLIDATE_CROSS_SESSION). What to do: set DAKERA_AUTOPILOT_DEDUP_MODE=merge to keep merging duplicates automatically.
  3. DNS rebinding protection with authentication off. A request whose Host is a dotted name that is not listed in the new DAKERA_ALLOWED_HOSTS (comma-separated, * = any) is refused with 421 HOST_NOT_ALLOWED. localhost, IP addresses, single-label names (a Compose service), private names such as *.internal and *.local, and /health* are always served. Authentication on: unchanged. What to do: an auth-off deployment reached by a dotted host name lists it in DAKERA_ALLOWED_HOSTS.
  4. Stricter admin requests. POST /ops/shutdown needs a global super_admin key (a global admin key gets 403). POST /admin/keys, POST /v1/namespaces/{ns}/keys, POST /admin/backups and POST /admin/encryption/rotate-key answer 422 to a field they do not know instead of ignoring it. Data-plane requests stay lenient.
  5. Overload is 429. A store, batch store or recall that waits longer than DAKERA_ADMISSION_WAIT_SECS (default 20 s) for capacity answers 429 with Retry-After: 5 and code RATE_LIMIT_EXCEEDED, instead of 503. A server that is shutting down still answers 503.
  6. Connections. An idle keep-alive or HTTP/2 connection is closed after DAKERA_HTTP_HEADER_READ_TIMEOUT_SECS (default 30 s), at most DAKERA_MAX_CONNECTIONS (default 10000) connections are served at once, and the shutdown drain waits at most DAKERA_SHUTDOWN_DRAIN_SECS (default 8 s). What to do: behind a proxy or load balancer, keep its upstream idle timeout below 30 s or raise the server's.
  7. GPU image on CUDA 13. It runs as user 1000:1000, like the CPU image, and needs an NVIDIA driver R580 or later.
  8. Rerank candidates are capped by default. Unset, DAKERA_RERANK_MAX_CANDIDATES now caps the reranker at the pool a top_k 10 recall builds, so a large top_k no longer sends hundreds of pairs to the reranker; 0 removes the cap. rerank_candidates: 0 is a 400 (omit the field or send rerank: false), and rerank_report.capped says when the cap applied.

New

Fixes

Upgrade

Engine v0.12.2 2026-10-08

v0.12.2 upgrades in place from v0.12.1, v0.12.0 and v0.11.108: back up, then replace the image or binary. Nothing is migrated by hand. It fixes updates that failed with 503, makes scoped keys fit how teams work, lets the server create agents and end idle sessions, and keeps the Graph View and memory lists light. Four changes need attention before the upgrade: sessions end after 4 hours of inactivity by default, validation is stricter on every write path, session and key authorization is tightened, and agent listings leave derived records out.

What improves · Breaking or behavior changes · New · Fixes · Upgrade

What improves

Recall check: on the full LoCoMo run (1,540 questions, 1,536 scored) with the production configuration, v0.12.2 scores 89.5% Recall@10 overall (Cat1 89.7%, Cat2 88.2%, Cat3 73.9%, Cat4 91.7%), and every release gate passed. This is retrieval recall (Recall@10), not judged answer accuracy, and it is a different measurement from the evidence-match Recall@20 (v0.11.107) on the Benchmark page.

Breaking or behavior changes

  1. Sessions end after 4 hours without activity by default. New DAKERA_SESSION_IDLE_TIMEOUT_SECS (default 14400; 0 = the server ends no session that did not set its own timeout; at most 30 days). The server ends an idle session with exactly what a client end does (memory count, auto-summary memory when it holds more than 3 memories, session-end consolidation) and records ended_reason: "idle" and idle_since. Activity is a memory stored, batch-stored, imported or updated with the session, a session-scoped recall or search, or POST /v1/sessions/{id}/touch. Sessions already open longer than the timeout (orphans of crashed agents) are closed, with their summaries, on the first passes after the upgrade. Storing into an ended session still answers 200, with session_state: "ended". What to do: to keep the old behavior set DAKERA_SESSION_IDLE_TIMEOUT_SECS=0, or start sessions with idle_timeout_secs: 0; an agent that keeps a session open while idle sends touch.
  2. Stricter validation on every write path (400, and the message names the field and the rule):
    • The memory content limit is in UTF-8 bytes and configurable: DAKERA_MAX_MEMORY_CONTENT_BYTES (default 100000). PUT /v1/memory/update/{id} now enforces it too (a memory already above it may be updated to content no larger than it is now), as do session-end summaries and consolidated or summarized output.
    • User metadata is checked on store, batch, update, import, transcribe and index: a JSON object (or null) of at most 100 top-level fields, keys of 1 to 256 bytes, no larger than the content limit serialized.
    • Reserved markers are refused from clients: the dakera-curated tag, and _dakera_* metadata keys other than _dakera_content_date (an integer, unix seconds) and _dakera_lang (a supported language). Caller ids of the form mem_s + 24 hex characters are reserved. ttl_seconds is at most 100 years.
    • The raw vector routes of an agent namespace (/v1/namespaces/_dakera_agent_*/vectors, upsert-columns, records, upsert-text, bulk-update and gRPC Upsert) no longer write or replace memory records; use /v1/memory/*. Plain vectors are unaffected.
    • POST /v1/import validates each item as a new memory and skips refused items with their reason in the job's errors; an imported attachment_ref must resolve.
    • Key namespace lists are validated on create, PATCH and extra_namespaces: junk entries ("a**b?", blank, "*" mixed with names), internal namespaces and patterns that could cover them are refused. [] still means no namespace.
    • Agent ids are at most 241 bytes (was 256). _dakera_embedding_models is reserved.
  3. Authorization tightened. Sessions are authorized by their agent only: keys no longer need a _dakera_sessions grant (such an entry is accepted and grants nothing), and a key without grants lists no sessions. POST /v1/sessions/{id}/end checks Write scope first (a Read key gets 403), and ending a session of an agent the key cannot reach returns the same idempotent 200 as an unknown session and writes nothing. Open event streams re-check scope and namespaces every 15 s. Key deactivation can no longer be undone by a concurrent edit or a late replicated add.
  4. Existing foo* key entries stay inert. A key created before v0.12.2 keeps reading foo* as a literal name that grants nothing, across restarts, renames and rotations, until its namespaces are saved again with PATCH. An upgrade never widens a key's access.
  5. Listings leave derived records out. GET /v1/agents/{id}/memories and GET /v1/agents/{id}/wake-up no longer include sentence sub-memories (include_derived=true restores them); wake-up total_available counts memories only. GET /v1/agents vector_count no longer counts the namespace seed. New sentence sub-memories get deterministic ids (mem_s + 24 hex).
  6. Merges are validated. Consolidation (manual and AutoPilot) and POST /v1/knowledge/summarize refuse a merge with more than 50 tags or text over the content limit (400, nothing written); POST /v1/knowledge/deduplicate caps the merged tags at 50 (the rest stay in the duplicate's provenance record); POST /v1/agents/{id}/compress skips a summary it cannot store (new summaries_skipped) and no longer deprecates that cluster's originals.
  7. Storage. The RocksDB hot tier writes binary records (DAKERA_ROCKSDB_RECORD_FORMAT=binary; json restores the previous writer, and both are always read). Rolling back to v0.12.0 or v0.12.1 needs nothing; before starting v0.11.108 on this data, run dakera downgrade, which now rewrites binary records as JSON first. Metadata null is stored as no metadata everywhere. Namespaces and record ids longer than 200 bytes, now storable on filesystem and S3, cannot be addressed by v0.11.108.

New

Fixes

Upgrade

Engine v0.12.1 2026-10-05

v0.12.1 is a patch release on v0.12.0: stop v0.12.0 and start v0.12.1 on the same data and environment. The stored record, index and snapshot formats are those of v0.12.0, and an upgrade from v0.11.108 straight to v0.12.1 is supported. Two things need attention before the upgrade: cluster nodes need DAKERA_CLUSTER_SECRET, and memory and session totals change meaning. Single-node deployments that do not report on those totals have nothing to do.

Breaking or behavior changes · Changed · Fixes · Code audit fixes · Upgrade

Breaking or behavior changes

  1. Every cluster node requires DAKERA_CLUSTER_SECRET, upgraded or not. On v0.12.0 an upgraded cluster node without a secret started with its node-to-node routes unauthenticated, as in v0.11, and POST /internal/sync/key/add then let anyone who reached the API port mint a SuperAdmin key. A cluster node without the secret now refuses to start (exit 78) and says why; dakera --check-config reports a missing or short secret. What to do: generate one secret (at least 16 characters, for example openssl rand -hex 32), set it on every node, and upgrade the nodes in one window: nodes with and without the secret do not see each other, and v0.11 nodes send none. A cluster that already runs v0.12.0 with a secret upgrades node by node as usual. An upgraded node without DAKERA_CLUSTER_NODE_ID still starts with a stable generated id. Procedure: High availability and Upgrading to v0.12.
  2. One definition for every total. A memory is a top-level memory an agent stored, a sub-memory is a sentence record Dakera derives from it for keyword search, and a vector is any stored record. The count endpoints used to mix them. GET /v1/agents memory_count is now the agent's memories (the old figure moves to the new vector_count); GET /v1/agents/{id}/stats total_memories and GET /admin/memory-type-stats total exclude sub-memories (new sub_memories); session totals count ended sessions too. GET /v1/ops/stats and GET /v1/analytics/overview gain total_memories and internal_vectors. What to do: expect memory counts to drop (by about the average number of sentences per memory, for agents that store multi-sentence memories) and session counts to rise on upgrade day; annotate dashboards, alerts and usage reports built on these fields. Field names and types are unchanged; storage, recall and quotas are not affected.

Changed

Fixes

Code audit fixes

From a code audit of 2026-10-04:

Upgrade

Engine v0.12.0 2026-10-01

v0.12.0 upgrades in place from v0.11.108 and goes back with one command. Every new feature is opt-in: a v0.11.108 deployment that sets none of the new variables keeps its behavior, except for the changes listed under Breaking or behavior changes. Summary for users: What's new in v0.12. Operator guide: Upgrading to v0.12.

Highlights · Breaking or behavior changes · New features · Performance · Security · Fixes · Removed · Upgrade and rollback

Highlights

Breaking or behavior changes

What an existing deployment can notice after the upgrade, and what to do about each. Details: Upgrading to v0.12.

  1. gRPC requires an API key. With authentication on (the default), every RPC except Health needs a key and is authorized per namespace like its REST twin. What to do: send the key in the call metadata (x-api-key or authorization: Bearer).
  2. Tighter permissions. Keys pinned to namespaces get 403 on node-wide routes (/admin/* except four per-namespace routes, /ops/*, /v1/analytics/*, /v1/audit*, …); backup download, upload and restore need global super_admin (was admin). What to do: give node-wide tooling a key with no namespace restriction, and backup tooling a super_admin key.
  3. Namespace quotas are enforced. v0.11 stored quotas but never checked them; with the default hard enforcement a write over a quota now gets 413 QUOTA_EXCEEDED. What to do: before upgrading, raise quotas you rely on not biting, or set their enforcement to soft or none.
  4. Ranking follows the query more closely. A recall no longer raises the importance of what it returns, the access count is no longer a score term, and recency counts from created_at. smart_score changes scale: a memory earlier recalls had touched can score up to 0.27 lower. What to do: re-check absolute cuts on smart_score (DAKERA_ABSTAIN_MIN_SMART_SCORE, client-side filters).
  5. A stored, enabled backup schedule runs at its next slot (v0.11 stored it and never ran it), and applies retention_days / max_backups to scheduled backups. What to do: to keep v0.11's behavior, send POST /admin/backups/schedule with {"enabled": false} before that slot.
  6. The port binds before the models load. /health/live answers 200 while models load; /health/ready and /health answer 503 with starting; other routes answer 503 with Retry-After: 5. What to do: point readiness at /health/ready and liveness at /health/live; clients that waited for the connection should wait for /health/ready.
  7. Configuration is checked at startup. An upgraded deployment starts with warnings, never refusals (logged as CONFIGURATION WARNING and listed in /health config_warnings); a fresh install with the same mistakes is refused (exit 78). One value refuses every deployment: DAKERA_WAL_SYNC=periodic:0. What to do: run the new image's dakera --check-config against your environment and data volume first, and fix each warning.
  8. Stored memories are re-embedded once in the background on the document side (they were embedded with the query instruction): about 35 minutes per 10,000 memories on bge-large; recall is served throughout. What to do: nothing; watch /health embed_migration.
  9. Cluster upgrades. Cluster traffic can now be authenticated with DAKERA_CLUSTER_SECRET, and nodes must not share one S3 bucket. What to do: leave DAKERA_CLUSTER_SECRET unset until every node runs v0.12.0, keep the mixed period short, and give each node its own bucket. Superseded in v0.12.1: every cluster node now requires the secret; upgrade straight to v0.12.1 and set it on every node in one window.
  10. Errors. Every error body is JSON ({error, code, status}), every 503 carries Retry-After, configuration errors are 501 (they were 503), and a body over the size limit is 413. What to do: honor Retry-After, and do not retry a 501: fix the settings it names.
  11. Namespace config. PATCH /v1/namespaces/{ns}/config merges and answers 400 for an unknown field; PUT is a full replacement (it was a 405). What to do: clients that relied on PATCH clearing omitted fields, or on unknown fields being ignored, use PUT or send valid fields only.
  12. Telemetry, when on, sends lifecycle events and a heartbeat every 6 hours (was 24); engine_started and the heartbeat carry the machine's hostname, and PostHog keeps the connecting IP and derives a coarse location (GeoIP). It never sends content, ids, secrets or paths. What to do: opt out with DAKERA_TELEMETRY=0 or DO_NOT_TRACK=1 (Telemetry).
  13. POST /ops/shutdown shuts the server down. v0.11 answered it and kept running; it now starts the same graceful shutdown as SIGTERM. What to do: stop calling it from health checks or smoke tests.

Also changed:

New features

Search and ranking

Multilingual

Multimodal and records

Off by default: a server that sets none of these variables answers the routes 501 FEATURE_DISABLED and loads none of the models. See Multimodal memory and Records and multi-vector.

Operations

Storage, backups and cluster

Performance

Measured figures only. “Before” is v0.11.108 unless noted. Methods and conditions: Performance.

MeasurementBeforev0.12.0
Reranked recall, top_k 16 †11.5 s, 45 CPU-s6.2 s, 24 CPU-s
Reranked recall, top_k 32 †18.8 s10.5 s
Two concurrent reranked recalls †19.6 s11.2 s
Container memory after reranking †4.98 GB0.65 GB, flat across top_k 1–32
Reranker load †4.6 s0.6 s
HNSW memory per 1024-d vector ‡4.81 KB2.76 KB (−43 %), recall@10 0.998 unchanged
HNSW search p50 / p95 ‡1.07 / 1.44 ms0.87 / 1.17 ms
HNSW build ‡94 s79 s
CPU Docker image (amd64)—783 MB; ready 4.4 s after start, no download in air-gapped or read-only starts

† CPU-only, 4 vCPU / 8 GiB container, bge-reranker-v2-m3 (568M-parameter cross-encoder), compared with v0.11.108 on the same machine; GPU or hosted rerankers are a different deployment class. ‡ BEIR Quora, 50k vectors.

Security

See Security.

Fixes

Removed

Variables v0.11.108 read and v0.12.0 does not. On an upgraded deployment each is a startup warning (the setting has no effect); on a fresh install it refuses the boot.

Upgrade and rollback

Earlier releases

Releases before v0.12, one row each. From v0.12.0 every component is listed in its release train.

Jump to a version

v0.11.108 · v0.11.107 · v0.11.106 · v0.11.104 · v0.11.103 · v0.11.95 · v0.11.94 · v0.11.93 · v0.11.92 · v0.11.91 · v0.11.90 · v0.11.89 · v0.11.88 · v0.11.87 · v0.11.86 · v0.11.85 · v0.11.84 · v0.11.83 · v0.11.82 · v0.11.81 · v0.11.80 · v0.11.79 · v0.11.78 · v0.11.77 · v0.11.76 · v0.11.75 · v0.11.74 · v0.11.73 · v0.11.72 · v0.11.71 · v0.11.69 · v0.11.68 · v0.11.67 · v0.11.66 · v0.11.65 · v0.11.64 · v0.11.63 · v0.11.62 · v0.11.61 · v0.11.60 · v0.11.59 · v0.11.58 · v0.11.57 · v0.11.56 · v0.11.55 · v0.11.54 · v0.11.45 · v0.11.27 · v0.10.2

Tools: MCP v0.10.12 · CLI v0.7.1 · MCP v0.10.2 · MCP v0.10.0

VersionDateHighlights
v0.11.108 Sep 2026 Large-corpus recall — The vector index no longer caps at 50,000 elements per namespace by default. The previous default silently evicted the lowest-importance vectors once a namespace grew past 50k — the root cause of a recall drop on large single-namespace corpora. Recall on million-scale corpora now recovers to a healthy curve. The cap stays configurable via DAKERA_HNSW_MAX_ELEMENTS for memory-bounded deployments, and any eviction is now surfaced in logs and metrics instead of happening silently. Query performance — Small and mid-size corpora take an exact-search fast path (threshold configurable via DAKERA_HYBRID_MIN_VECTORS, default 100k), cutting query latency where the hybrid pre-filter does not yet pay off; warm-cache queries also skip a redundant full scan. Recall is unaffected. Correctness — Clearing the full-text index now releases all associated metadata (fixes an unbounded-memory retention and a stale-filter match on re-indexed documents); hybrid and scalar-rerank searches now always return the full requested result set at large top_k.
v0.11.107 Sep 2026 Recall quality — Temporal precision re-ranking improves accuracy on time-sensitive queries; session-cohesion scoring delivers higher precision on single-session recall. Both improvements are applied automatically — no configuration change required. API — GET /v1/memory batch responses now include a truncated: bool field, providing an explicit signal when results were capped at the configured limit (previously silent). All SDKs updated to expose this field. Reliability — Fixed a storage eviction stall that could delay memory expiry under sustained load, corrected an index eviction inconsistency, and resolved a memory leak in high-throughput multi-agent deployments. All fixes are transparent; no configuration changes required. Dependencies — Internal storage layer and runtime dependencies updated; no API or behavior change.
v0.11.106 2026-08-06 Multi-hop recall — Questions that span several memories now gather more supporting evidence (wider temporal and neighborhood windows), improving answers to multi-step and time-based questions. Applied only to multi-hop queries, so simple lookups are unaffected. Anonymous usage telemetry — Aggregate, fully anonymous deployment signals to guide roadmap priorities. Opt out any time with DAKERA_TELEMETRY=off. GPU runtime refresh — Updated CUDA execution provider for the current ONNX Runtime.
v0.11.104 2026-07-31 Complete answers for list & count questions — Retrieval now aggregates evidence across many memories, so "list all…" and "how many…" queries return the full set instead of a partial one. Deeper rank recovery — Surfaces relevant memories that previously fell just outside the top results. Sharper top results — Reranking tuned to favor more specific, on-point matches.
v0.11.103 2026-07-29 Precision reranking — Promotes relevant memories from mid-rank into the top results, closing recall gaps on hard queries. Temporal-aware reranking — Better answers to time-based questions. Multi-evidence recall for list queries — Aggregates across evidence sets for higher recall on aggregation questions. Security — POST /ops/shutdown now requires admin scope. Anonymous install telemetry introduced (opt out: DAKERA_TELEMETRY=off).
v0.11.95 Jun 2026 Multilingual reranker upgrade — Cross-encoder reranker moved to bge-reranker-v2-m3 (INT8), adding multilingual support and higher ranking precision on multi-hop and temporal queries. Entity-linked scoring boost — Optional additive boost for entity-matched candidates (off by default). Regression guards protect English stemming quality in CI.
v0.11.94 Jun 2026 Longer-context embedding model — Opt in to gte-modernbert-base (768d, 8K-token window) with DAKERA_MODEL=gte-modernbert-base. Adjustable embedding size — Truncate to 256/512d for lower memory and faster search via DAKERA_MRL_DIMENSION. Runtime fusion switch — A/B RRF vs. MinMax without a redeploy (DAKERA_FUSION_STRATEGY=rrf). Deploy time cut from 12 min to under 5 min.
v0.11.93 Jun 2026 Query decomposition — Splits complex questions into sub-queries and fuses the results, improving multi-step recall. Opt in with DAKERA_QUERY_DECOMP=1. Security — quinn-proto 0.11.14 → 0.11.15 (RUSTSEC-2026-0185, CVSS 7.5).
v0.11.92 Jun 2026 Entity extraction fix — POST /v1/extract now defaults entity_types to [person, organization, location] when none are supplied, fixing cases where the playground returned zero entities. Graceful rule-based fallback avoids cold-start errors.
v0.11.91 Jun 2026 SDK-canonical admin routes — Admin endpoints are now served at /v1/admin/* alongside the legacy /admin/*, fixing 404s from client admin calls. Tunable recall scoring — Vector, importance, and recency weights are now runtime-configurable (DAKERA_SCORE_W_VEC, DAKERA_SCORE_W_IMP, DAKERA_SCORE_W_REC, DAKERA_SCORE_RECENCY_TAU_HOURS); defaults unchanged.
v0.11.90 Jun 2026 List-aware ingest on by default — Sentence decomposition and supersession demotion are now enabled out of the box: better recall of buried list items and fewer stale, superseded results. Opt out with DAKERA_BATCH_SENTENCE_DECOMP=0 or DAKERA_SUPERSEDE_DEMOTE=0.
v0.11.89 Jun 2026 Buried list-item recall — Sentence decomposition on batch ingest recovers gold answers hidden inside long lists. Supersession demotion hardened so coherent same-session messages are no longer wrongly demoted.
v0.11.88 Jun 2026 Opt-in sentence decomposition — Available on the batch-ingest path (inert by default); enable with DAKERA_CE31_DECOMPOSE=1.
v0.11.87 Jun 2026 Fix — DAKERA_CROSS_SESSION_FETCH_MULT is now honored in the session-scoped recall path (previously ignored for session queries), with no change to default behavior.
v0.11.86 Jun 2026 Recall overhaul — Multiple accuracy fixes spanning single-hop, multi-hop, temporal, and open-domain query types. Dependency updates: opendal, chrono, rusqlite, prost.
v0.11.85 Jun 2026 New tuning knobs (inert by default) — DAKERA_HYBRID_FETCH_MULT (hybrid + rerank coarse pool depth) and DAKERA_CROSS_SESSION_FETCH_MULT (cross-session pool depth). Recall is byte-identical when unset.
v0.11.84 Jun 2026 Better temporal recall — Entity-filtered vector pass improves answers to time-based questions. Fix — Cross-encoder reranker queue no longer drops results under concurrent load. All static-tier memories are now upgraded to full ONNX embeddings.
v0.11.83 Jun 2026 Docker image variants — :cpu (INT8, CPU-only) and :gpu/:cuda (FP32 with CUDA base image). Deterministic index builds — DAKERA_HNSW_SEED now takes effect across restarts. Faster writes — Roughly 9× storage write throughput; removed per-batch overhead that grew with store size.
v0.11.82 Jun 2026 Static write tier in production — DAKERA_TIERED=1 delivers ~9.7× ingest throughput. New endpoint — POST /admin/reembed/drain triggers a synchronous quality upgrade without waiting for background cycles. Entity extraction restored; ONNX cold-boot now has a SHA-256 integrity check with automatic re-fetch on mismatch.
v0.11.81 Jun 2026 Out-of-memory hardening (GPU) — Bounded inference pool, serialized CUDA forward passes, and deeper OOM retry eliminate allocator fragmentation under concurrent ingest.
v0.11.80 May 2026 SIMD-accelerated vector search — 3–8× distance throughput on x86_64 and ARM. GPU stability — Serialized CUDA passes eliminate allocation failures under parallel ingest. Temporal recall improvements.
v0.11.79 May 2026 GPU stability — Global inference serialization across backends prevents VRAM fragmentation under concurrent ingest.
v0.11.78 May 2026 Faster first request — The engine pre-warms at startup, eliminating a 7–10 min first-request stall. Faster re-embedding — One index rebuild per cycle instead of per-item. GPU-free static ingest for batch writes.
v0.11.77 May 2026 Hybrid search is now the default — The tiered static→transformer pipeline is fully wired, and docker-compose.yml ships hybrid + tiered defaults out of the box.
v0.11.76 May 2026 Fix — Restored Recall@10 to ~100% in hybrid mode (binary HNSW overselect formula) and corrected the search-mode fallback for unknown values.
v0.11.75 May 2026 Pluggable inference backends — ONNX, Candle, GGUF, and Static backends behind one trait. Model2Vec static backend (~500× ingest), tiered engine, binary HNSW, and ModernBERT 768d embeddings. Batch write added to all four SDKs (Python, JS, Rust, Go).
v0.11.74 May 2026 Entity extraction redesign — Consistent lowercase entity tags, entity_types honored by every extractor, entity dedup, accurate byte-offset spans, and a guard for very long inputs.
v0.11.73 May 2026 Event-date awareness — Dates mentioned in content are extracted at store time (_dakera_content_date) and used for temporal proximity scoring. Knowledge-graph entity edges expand entity-linked recall.
v0.11.72 May 2026 Stronger temporal reranking and a span-detection fix for contractions and multi-token entity names.
v0.11.71 May 2026 GPU accuracy — FP32 model for CUDA inference. Faster session lookup — O(1) instead of a full scan. Larger default ONNX batch size for CPU deployments.
v0.11.69 May 2026 Parallel hybrid retrieval — Re-introduced with full benchmark gating after resolving an earlier tie-breaking regression.
v0.11.68 May 2026 Reverted parallel retrieval due to a tie-breaking regression under task interleaving. GPU CUDA execution provider enabled.
v0.11.67 May 2026 Overload protection — A cross-encoder concurrency gate (RERANKER_MAX_CONCURRENT=6) degrades gracefully to unranked results under saturation instead of triggering client timeout storms.
v0.11.66 May 2026 Batched cross-encoder — Mini-batching (RERANKER_ONNX_BATCH_SIZE=16) reduces memory waste and improves throughput under concurrent rerank load.
v0.11.65 May 2026 Cross-encoder session pool — Pooled sessions plus adaptive chunk splitting eliminate contention under concurrent recall and handle documents longer than the model's max sequence length.
v0.11.64 May 2026 Lower recall latency — Pipeline metrics moved off the hot path, removing per-request overhead.
v0.11.63 May 2026 Observability — Full recall-pipeline instrumentation with per-stage Prometheus histograms exposed at /metrics, at no throughput cost.
v0.11.62 May 2026 Fix — Entity extraction restored after a tensor-shape regression.
v0.11.61 May 2026 Fix — Updated the entity model path after a HuggingFace repo rename, restoring entity extraction. No HuggingFace token required.
v0.11.60 May 2026 Private model downloads — HF_TOKEN support for authenticated HuggingFace downloads, with graceful fallback to unauthenticated access for public models.
v0.11.59 May 2026 Fix — Eliminated ingest timeouts by giving each text its own ONNX call; the session pool preserves throughput.
v0.11.58 May 2026 Faster ingest — ONNX session pool plus parallel batch upserts remove the ingest throughput bottleneck.
v0.11.57 May 2026 Docker base image updated to Rust 1.95, fixing release build failures.
v0.11.56 May 2026 Full SDK parity — All four SDKs (Python, JS, Rust, Go) now cover admin (cluster, maintenance, quotas, backups), ops (diagnostics, jobs, compaction), health probes, vector bulk ops, fulltext stats, TTL, storage tiers, memory-type stats, consolidation, and namespace entity configuration.
dakera-mcp v0.10.12 Sep 2026 SDK/MCP attribution — The MCP server now sends a dakera-mcp/VERSION User-Agent on all engine API requests, enabling server-side traffic attribution without any configuration. Previous releases — v0.10.4–v0.10.11 include the reliability scoring tool (dakera_tif_evaluate), improved tool descriptions, and stability updates. See GitHub Releases for the full MCP changelog.
dk CLI v0.7.1 Sep 2026 CLI for managing and querying Dakera deployments. Available for macOS (arm64 / x86_64), Linux (x86_64), and Windows. Install via shell script, Homebrew, or package managers. See GitHub Releases for installation instructions and the full changelog.
dakera-mcp v0.10.2 May 2026 Page size increased from 20 to 100 — all profiles return results in a single page, reducing round-trips for agents with large memory stores.
dakera-mcp v0.10.0 May 2026 Profile-based tool tiering — 14 core tools by default, with power/admin/all profiles for expanded access. Meta-discovery tools (discover_tools, load_tools) and ~30K token savings vs. loading every tool.
v0.11.55 May 2026 Temporal hybrid retrieval improvements for time-scoped queries.
v0.11.54 May 2026 MCP: 14 core tools with 86+ available via profiles. Entity vector search enabled by default. Cross-encoder reranking pipeline.
v0.11.45 Apr 2026 ML query-routing classifier and temporal inference enabled by default.
v0.11.27 Apr 2026 High-availability cluster stability improvements and storage throttle tuning.
v0.10.2 Apr 2026 Full-stack release — server plus all four SDKs (Python, JS, Rust, Go) shipped together.
Current versions — see the version table at the top of this page; it is generated from the same release data as the release trains, so the two cannot disagree.

Release cadence & versioning

Dakera follows semantic versioning. Every breaking or behavior change is listed on this page with what to do, and new capabilities are opt-in through environment variables wherever possible, so an upgrade changes only what the release notes say it changes.

Where releases are published

Want automatic upgrades?
Dakera Cloud handles upgrades, HA, and SLA — no ops overhead.
Join Cloud Waitlist →
Stay sharp on agent memory
Benchmark results, SDK releases, and production patterns. Under 500 words per issue.
✓ You're in. First issue lands soon — watch for Dakera in your inbox.