Skip to main content

On-Prem Release Notes - 2026

v0.183.0 — October 8, 2026​

Consolidates changes from v0.181.1, v0.182.0 and v0.183.0 since the previous on-prem stable release (v0.181.1001). v0.181.1001 did not include v0.181.1, so its changes are listed here. Platform OSS version: v0.192.8 (from v0.190.0). No stateful component (RabbitMQ, Redis, MinIO, Postgres, PgBouncer) is version-bumped, and no persistent volume or on-disk format changes.

The Celery rollback switch is gone

The Celery workers, Celery Beat, Flower, the Celery metrics worker and the broker-migration Job are now removed from the chart, along with the global.celeryWorkerFleet switch. The v0.181.1001 rollback (setting global.celeryWorkerFleet.enabled: true to bring the Celery workers back) no longer exists. The only way back to Celery is to redeploy an earlier chart and its images together.

  • Coming from v0.181.1001: nothing should be queued in RabbitMQ. If you turned on global.celeryWorkerFleet.enabled: true to drain leftover work, wait until the queue check prints READY before upgrading. Then remove the leftover Celery keys from your values (see Helm Configuration Changes).
  • Coming from v0.180.0: before upgrading, run the queue check and confirm it prints READY.
  • Coming from v0.179.0 or earlier: follow Migrating to the PostgreSQL Queue before upgrading. Skipping it loses any work still queued in RabbitMQ, with no error and no way to recover it.

The RabbitMQ broker and its credentials are still deployed in this release.

Breaking Changes

  • S3 connectors are now scoped to a single bucket: an S3 or S3-compatible / MinIO connector must now name the one bucket it works with. Every listing, read and write stays inside that bucket, however broad the access of the credentials behind it. Action needed: an existing S3 connector with no bucket set stops working the next time it is used, until someone edits it and adds a bucket. If a saved folder path on that connector started with the bucket name, remove that first segment once the bucket is set, because the bucket is no longer part of the browsable path. Tell connector owners before you upgrade.
  • Shared users can use a resource but not reconfigure it: for workflows, ETL and task pipelines, API deployments, adapters and connectors, a user the resource is shared with can open, run and view it, but can no longer change its configuration. That covers connector settings, HITL rules and settings, the enable toggle and schedule, API keys, and adapter or connector details. Agentic Prompt Studio project settings, which choose the LLM and connectors, are also read-only for shared users. Prompt Studio projects stay fully editable by shared users. Renaming and deleting are now owner-only everywhere. Locked controls are greyed out with the reason shown on hover. Previously, any user in the organization could change a workflow's HITL rules or attach a tool to a workflow they did not own.

New Features

  • Image output mode with vision-LLM answers: the LLMWhisperer Text Extractor-v2 adapter has a new Image (PDF only) output mode. Instead of extracting text, it turns each page of a PDF into an image, and prompts are answered by a vision-capable LLM that reads those images directly. A document can have up to 90 pages and about 14 MB of page images. A document over the page limit is refused at indexing, before any page conversion is billed. A document within the page limit whose images go over 14 MB is refused at indexing, after conversion. The profile shows a warning when its LLM may not read images, and a deployment that would send image-mode documents to an LLM that definitely can't read images is blocked. A provider's "request too large" rejection now names the model and the page count.
  • Extraction profiles in Agentic Prompt Studio: the project's Settings tab now has a profile manager. A profile sets the extraction agent and the LLM used for extraction, plus optional preamble and postscript text. You can keep up to four profiles per project, choose the default, and edit or delete the others. Project-wide defaults (agent LLM, lightweight LLM and LLMWhisperer connector) stay in Project Settings. The project now opens on a combined Prompt + Extracted Data tab. Database migrations, including a resumable backfill of existing projects into a default profile, run automatically on upgrade.
  • Long LLM responses no longer time out: LLM calls now receive the response as the model writes it, so long generations (for example, turning a large spreadsheet into a big table) finish instead of failing after an hour and retrying. All LLM adapters have a new Enable Streaming checkbox. It is on by default, including for adapters saved before the upgrade. Untick it only if your model endpoint does not support streaming. With streaming on, an adapter's Timeout limits the wait for the first part of a reply and for any pause between parts, not the whole reply.
  • External / managed Redis support: the platform can now run against an external Redis, such as a managed Memorystore, ElastiCache or Azure Cache instance or your own server, instead of the in-cluster Redis. TLS connections and certificate checks are supported. The in-cluster Redis stays the default and its behavior is unchanged. This is opt-in. See Helm Configuration Changes for the settings and requirements.
  • Look-Ups can be shared with groups: Look-Ups can now be shared through user groups, not only with individual users.

Fixes & Improvements

  • Resources created with a platform API key now have an owner: anything created through a platform API key, including Prompt Studio and Agentic Prompt Studio projects, Look-Ups, workflows, pipelines, API deployments, connectors and adapters, now belongs to the person who created the key. Before, it belonged to nobody, so only org admins could open, share or delete it. Existing resources are repaired automatically during the upgrade. If the key's creator has since left, the Owned By column shows Platform key.
  • Storage connectors open only for people they're shared with: before, anyone in the organization who knew a storage connector's ID could open it. Now only its owners, organization admins, and the people it is shared with (individually, through a group, or with the whole organization) can open it.
  • Nested values expand in the HITL review table: nested fields in the human quality review table expand into readable rows again, instead of showing a cut-off block of raw data.
  • HITL settings save only when you save: in the workflow connector dialog, HITL rules, TTL and sync destination are now saved together by the dialog's Save button. Before, Save Rules wrote straight away while the dialog's own Save quietly dropped rule changes. The dialog also stops asking you to save when nothing has changed.
  • Executions no longer hang for an hour when an extracted value contains a null character: a null character in an extracted value (common in PDFs' embedded text layers) could stop a finished task's result from being returned. The caller then waited the full hour-long result timeout and failed, even though the work had succeeded. Results are now always returned.
  • One hung task no longer takes a whole worker pod offline: in PostgreSQL queue workers that run several processes per pod, one hung task used to fail the pod's health check. The pod was then restarted, which drained every other task on it for up to the termination grace period. Now only the hung process is stopped and restarted once it passes its health-staleness limit, and the other processes keep working.
  • Worker pods report ready only when fully started: PostgreSQL queue worker pods now report ready only after every worker process inside them has finished loading. The file-processing worker also no longer loads extraction components it doesn't need, so the first task on each worker process starts faster.
  • GPT-6 models work on Amazon Bedrock, OpenAI and Azure OpenAI: calls to OpenAI GPT-6 models failed because these models reject the temperature setting. Unstract no longer sends it to them.
  • Top bar and profile menu refresh: the top bar is slimmer and follows the new visual design, with a restyled profile menu. Switch Org in the profile menu now stays open when you click it, so you can pick an organization.
  • Stronger browser security protections: the web app now enforces its content security policy, so the browser blocks content from sources the app doesn't use instead of only logging it. If you have customized the frontend to load scripts, styles or fonts from extra origins, check it in a browser after upgrading.
  • Platform API specification: an internal-only option on the execution request has been removed from the published OpenAPI specification. Requests that still send it keep working.

Helm Configuration Changes

  • Remove leftover Celery values. These blocks are no longer read: global.celeryWorkerFleet, the top-level celery: block (beat, flower, brokerMigration), workerMetrics, and the Celery worker blocks (workerGeneralV2, workerFileProcessingV2, workerApiDeploymentV2, workerApiFileProcessingV2, workerFileProcessingCallbackV2, workerApiFileProcessingCallbackV2, workerNotificationV2, workerSchedulerV2, workerExecutorV2, workerIdeCallbackV2, workerBulkDownloadV2, workerAgenticCallback, workerPromptStudioCallback). If any of them is turned on, or still holds settings such as resources or autoscaling, helm upgrade fails with a message listing the keys to delete. A leftover enabled: false with nothing else set is accepted. Remove the whole block, not just its enabled key.
  • Redis Sentinel mode and the Redis client port are now set automatically from redis.enabled and redis.sentinel.enabled. Delete any REDIS_SENTINEL_MODE, CACHE_REDIS_SENTINEL_MODE, MANUAL_REVIEW_REDIS_SENTINEL_MODE, REDIS_PORT, CACHE_REDIS_PORT or MANUAL_REVIEW_REDIS_PORT you set by hand in the backend, platform, runner or worker blocks. A hand-set value that disagrees with the computed one now fails the render, and the error lists every such key. This mostly affects HA deployments that keep their own copy of an older values-multi-az.yaml, which set "True" and 26379 in each service block. Start again from the values-multi-az.yaml shipped with this chart, which no longer sets them.
  • To use an external / managed Redis (optional): set redis.enabled: false and point global.sharedConfigs.redis at the server, using REDIS_HOST/REDIS_PORT or REDIS_URL, plus REDIS_PASSWORD if the server requires a password. Every service, init container and cache setting reads the endpoint from there. For TLS, use a rediss:// URL or set REDIS_SSL: "true". You can also set REDIS_SSL_CERT_REQS if needed. Hostname verification is on by default. Set REDIS_SSL_CHECK_HOSTNAME: "false" only if the server's certificate does not cover the address you connect to. Keep the password in its own key rather than inside REDIS_URL; a URL without credentials now picks up REDIS_PASSWORD. Requirements: the server must be non-cluster and run Redis 6.2 or later. The default layout uses databases 0, 1, 5 and 8. For a tier that offers only database 0, set workerV2ConfigMap.shared.CACHE_REDIS_DB, backend.configMap.FILE_ACTIVE_CACHE_REDIS_DB and METRICS_REDIS_DB (new, default "1", set in both workerV2ConfigMap.shared and backend.configMap) all to 0. The render fails if these keys disagree, or if redis.enabled: false is set while the endpoint still points at the in-cluster service. Installs using the in-cluster Redis need no action. The new TLS keys and REDIS_URL default to empty, so removing them later reverts cleanly.
  • MinIO storage credentials are now built from MINIO_USER / MINIO_PASSWORD. global.sharedConfigs.storage.MINIO_CREDS and TEMPORARY_REMOTE_STORAGE now default to empty. When empty, the chart fills them in from the bundled MinIO's address and the same MINIO_USER / MINIO_PASSWORD the MinIO server starts with. Values you set explicitly still take precedence. If you use the bundled MinIO and still have an old explicit MINIO_CREDS / TEMPORARY_REMOTE_STORAGE (for example, copied from an earlier sample file), delete it. Otherwise, a later change to MINIO_PASSWORD leaves the platform using the old credentials and storage access fails. Keep them set explicitly if you use external MinIO or S3, if you use a custom minio.auth.existingSecret with standalone MinIO, or if you provide storage.existingSecret, which must still contain both keys. The application pods restart once on upgrade because the storage Secret's content changes.
  • PostgreSQL queue workers that run several processes per pod no longer have a liveness probe. A per-process watchdog takes over, stopping and restarting a hung process once it passes WORKER_PG_QUEUE_CONSUMER_HEALTH_STALE_SECONDS. Readiness now uses the new /ready endpoint. Single-process workers (scheduler, metrics, subscription) keep their liveness probe. The shipped values already set the staleness limit for every worker. If you override a multi-process worker block, keep WORKER_PG_QUEUE_CONSUMER_HEALTH_STALE_SECONDS in it, or the render fails. Setting WORKER_PG_QUEUE_CONSUMER_CHILD_WATCHDOG: "false" in that block turns the watchdog off and brings back the liveness probe. The workers' PodDisruptionBudgets now set unhealthyPodEvictionPolicy: AlwaysAllow, so a pod that isn't ready can't block a node drain.
  • No stateful component image changes: Redis 7.2.4-debian-12-r13, RabbitMQ 4.1.3-management, MinIO 2024.12.18-debian-12-r0 and PgBouncer 1.18.0 are unchanged. No other values.yaml or secret.yaml changes are required.

v0.181.1001 — September 28, 2026​

Consolidates changes from v0.181.0 and v0.181.1001 since the previous on-prem stable release (v0.180.0). v0.181.1001 is v0.181.0 rebuilt under a new version number with no code changes. It does not include the separate v0.181.1 release. Platform OSS version: v0.190.0 (from v0.187.2). No stateful component (RabbitMQ, Redis, MinIO, Postgres, PgBouncer) is version-bumped, and no persistent volume or on-disk format changes.

Upgrading from v0.179.0 or earlier straight to this release loses queued work

The Celery workers are removed in this release. The chart no longer runs any Celery worker by default (global.celeryWorkerFleet.enabled now defaults to false), so nothing reads the old RabbitMQ queues after the upgrade. v0.180.0 was the only release that ran both the Celery and PostgreSQL workers. If you jump from v0.179.0 or earlier straight to v0.181.1001, any work still queued in RabbitMQ is lost. There is no error and nothing fails; the work simply never runs.

  • Coming from v0.180.0: before upgrading, run the queue check and confirm it prints READY.
  • Coming from v0.179.0 or earlier: follow one of the two paths in Migrating to the PostgreSQL Queue. The safer default is to upgrade to v0.180.0 first, let the queues drain, and then upgrade to this release.
  • If you upgraded with work still queued, you can bring the Celery workers back by setting global.celeryWorkerFleet.enabled: true and running helm upgrade. Leave it on until the queues drain, then remove it. Scaling the old worker Deployments up by hand does not work, because their autoscalers are removed along with them. The RabbitMQ broker is still deployed in this release, which is what makes this rollback possible.

New Features

  • Header mapping in the Agentic Table Extractor: a new Enable Header Mapping switch in the Agentic Table Extractor settings makes each extraction also report which source column in the document every requested field came from. This helps when you review an extraction or trace a value back to the original table. It is off by default. Each reported column is checked against the columns the document actually contains, so a field with no matching column is left blank rather than pointing at a column that doesn't exist.
  • Text extraction time in execution metrics: when you request metrics for an API deployment execution, the response now includes how long text extraction took, alongside the indexing time it already reported.
  • Look up the organization behind a platform API key: the Platform API has a new endpoint, /api/v1/unstract/whoami/, that returns the organization ID and name for a platform API key, along with the key's name and permission tier. Scripts no longer need to copy the organization ID out of a browser URL. The OpenAPI specification now also includes the endpoint that lists an organization's API deployments.
  • Less database load from dashboard metrics: hourly dashboard figures still refresh every 15 minutes. Daily and monthly totals are now recomputed once an hour, and monthly totals are built from the daily totals, so they can lag the newest activity by up to an hour. A once-a-day pass at 04:40 UTC re-checks the last 7 days so short gaps repair themselves. After upgrading, run a one-time backfill so the daily totals are complete — see Helm Configuration Changes below.

Fixes & Improvements

  • Long multi-page tables extract more accurately in the Agentic Table Extractor:
    • A row that continues over a page break is now merged back into a single row.
    • Summary and totals pages outside a table's own page range are no longer skipped.
    • Very dense pages that previously came back empty are now retried.
    • Rows from nested sub-tables keep the link to their parent row.
    • A malformed nested entry is now skipped instead of stopping the whole extraction.
  • Webhook addresses are validated in one place: the same check now covers notification webhooks and post-processing webhooks. Webhook URLs must now resolve to publicly routable addresses — loopback, private-range (10.x, 172.16–31.x, 192.168.x), and link-local addresses are refused. Notification webhook URLs are checked when the notification is saved and again on every delivery. Post-processing webhook URLs are checked at delivery time, when the extraction runs. Webhooks no longer follow redirects. Before upgrading, check whether any existing notifications point at in-cluster services or internal hostnames and update them to public endpoints.
  • Prompt Studio records stay inside their organization: when a request refers to a Prompt Studio document, prompt, profile or output by its identifier, the platform now confirms the record belongs to the caller's organization before acting on it.
  • Markup is rejected in names and descriptions: names, descriptions and similar short text fields now reject HTML markup and script-like content when they are submitted. Prompt text and model responses accept such content as before. Existing stored values are not changed.

Helm Configuration Changes

  • global.celeryWorkerFleet.enabled now defaults to false, which removes all thirteen Celery worker Deployments and their autoscalers. Leave it unset. Set it to true only for the temporary rollback described in the danger notice above. The log-consumer worker does not depend on this switch and keeps running.

  • Resources for the PostgreSQL executor worker (workerPgExecutor.resources) change from 4Gi request / 8Gi limit to 7Gi request / 10Gi limit. The old limit was routinely exceeded under load. If you override these values, compare your override against the new defaults.

  • The PostgreSQL API file-processing worker (workerPgApiFileProcessing.resources.limits.cpu) no longer has a CPU limit (it was 2), matching the other PostgreSQL workers. Its memory request and limit are unchanged.

  • Run the dashboard-metrics backfill once after the upgrade. Monthly totals are now built from the daily totals, so the daily totals must be complete first. From a backend pod on the new version, run:

    kubectl exec -n <namespace> <backend-pod> -- .venv/bin/python manage.py backfill_metrics --days 62 --skip-hourly --skip-monthly

    Don't use the chart's optional backend.backfillMetrics Job for this. It runs a fixed older image with different arguments.

  • No other values.yaml or secret.yaml changes are required.


v0.180.0 — September 8, 2026​

Consolidates changes from v0.179.0 and v0.180.0 since the previous on-prem stable release (v0.178.0). Platform OSS version: v0.187.2 (from v0.186.2).

Plan your upgrade path, and check the queues before you leave this release

Task processing moves from RabbitMQ to PostgreSQL. The release itself needs no configuration changes, but the path you take to it decides whether queued work survives — review these before you start:

  • v0.180.0 is the only release that runs both systems. The PostgreSQL workers take all new work from the moment you upgrade, while your existing Celery workers stay running to finish anything already queued. That overlap is what removes the need to stop submitting work while you upgrade — the pods still roll as any upgrade does, but you do not have to announce a window and drain first. RabbitMQ is still required here and is removed in a later release.
  • Going from v0.179.0 or earlier straight past v0.180.0 strands queued work. Releases after this one have no Celery workers, so anything still in RabbitMQ at that moment is lost — no error, nothing fails, the work simply never runs.
  • Two supported paths, and both gate the move past v0.180.0 on the same check. Either take v0.180.0 on the way and let it drain in the background with no downtime, or take downtime — stop all new work, including your scheduled pipelines and any ETL integration, and confirm the queues are empty before upgrading. Taking v0.180.0 on the way is the safer default: the platform has no server-side switch that stops accepting work, so anything submitted during a downtime window after the check passes is stranded with no error. Steps, the RabbitMQ queue check and the mistakes that fail silently are in Migrating to the PostgreSQL Queue.
  • Scheduled pipelines move automatically. They are copied into the new scheduler and ownership is handed over during the upgrade, starting from their next due time — there is no catch-up burst for intervals missed while the upgrade ran.

New Features

  • Refreshed interface styling: buttons, labels and icons across Unstract now render with the platform's new visual design, so screens look consistent whichever part of the product you are in. Layouts, navigation and what each control does are unchanged — nothing has moved and nothing you use today works differently.

Fixes & Improvements

  • Every organization is reachable on the organization picker: for users belonging to more than about five organizations, the list on the organization selection screen was cut off at the edge of the screen with no way to scroll, leaving the remaining organizations unreachable, and the Unstract logo above it collapsed out of view. The list now scrolls and the screen stays intact however many organizations a user belongs to.
  • Image challenges can be completed inside dialogs: when a form opened in a dialog asked the user to solve an image challenge to prove they are not a bot, the challenge tiles could not be clicked, leaving no way to finish the verification. The challenge now responds to clicks as expected.

v0.178.0 — August 27, 2026​

Consolidates changes from v0.178.0 since the previous on-prem stable release (v0.177.0). Platform OSS version: v0.186.2 (unchanged). No stateful component is version-bumped, no persistent volume or on-disk format changes, and nothing in this release is irreversible.

New Features

  • Direct Microsoft Azure AD (Entra ID) sign-in, without Auth0: On-prem deployments can now authenticate users straight against a Microsoft Entra tenant, with no Auth0 application and no Auth0 in the login path — previously the only option was Entra brokered through Auth0. Users sign in with their Entra credentials, and their group membership (including nested groups) resolves to an Unstract role on every login. This is opt-in and off by default: existing installs keep authenticating through Auth0 with no change, and nothing new is rendered or mounted until you enable it. See the Microsoft Azure AD (direct) guide for setup, Helm Configuration Changes below for what to set, and the Unstract Roles Guide for how groups map to roles.

Helm Configuration Changes

  • To turn on direct Entra sign-in (Auth0 installs need no action — leave these alone): set backend.configMap.AUTH_PROVIDER: "azure_ad" and global.sharedConfigs.authAzureAd.enabled: true together, supply AZURE_AD_TENANT_ID, AZURE_AD_CLIENT_ID and AZURE_AD_CLIENT_SECRET in that group (or your own authAzureAd.existingSecret), and set ENABLE_ENTERPRISE_SSO_SETUP: "True" with ORG_NAME and ROLE_MAPPING filled in and ingress.hostLookup.unstract matching the host in global.host.baseUrl. The chart rejects a half-configured pair at render rather than letting it fail at first login. ROLE_MAPPING entries use the Entra group's Object ID with "provider": "waad". Setup, the Microsoft Graph permissions the app registration needs, and the optional AZURE_AD_* tuning values are covered in the Microsoft Azure AD (direct) guide.
  • ENABLE_ENTERPRISE_SSO_SETUP must now be a quoted string: the chart rejects the YAML boolean True/False at render. Unquoted, the value never matched the "True" the chart compares against, so the enterprise SSO setup Job was silently skipped with no error. Installs using "True" or "False" — including the shipped default — are unaffected; quote the value if you hand-edited it unquoted.
  • frontend.imagePullPolicy default changed from Always to IfNotPresent: the setting previously never reached the frontend Deployment and had no effect; it now does. If you deploy the frontend from a mutable tag and rely on a pod restart to pick up a new build, set it back to Always. Pinned tags need no action.

v0.177.0 — August 20, 2026​

Consolidates changes from v0.174.0, v0.175.0, v0.176.0 and v0.177.0 since the previous on-prem stable release (v0.173.1). Platform OSS version: v0.186.2 (from v0.179.1).

Plan a longer upgrade window, and check what reaches Redis

Three chart defaults change how this upgrade behaves. No stateful component (RabbitMQ, Redis, MinIO, Postgres, PgBouncer) is version-bumped and no persistent volume or on-disk format changes, so the upgrade is reversible — but review these before you start:

  • Executor worker drain raised 300s → 3660s. A rolling upgrade or scale-down now waits up to ~61 minutes per executor pod for in-flight extractions to finish before terminating it. This is a ceiling, not a delay — idle pods still exit in seconds — but a busy cluster's rollout can take far longer than previous upgrades. Size your maintenance window for the longest extraction you expect to be running.
  • Redis network access is now confined to the release namespace by default. The chart now ships redis.networkPolicy.enabled: true with allowExternal: false plus a namespace-local ingress rule. No pods restart, but anything outside the Unstract namespace that connects to this Redis will lose access on upgrade. See Restricting Redis Network Access — if your cluster does not enforce NetworkPolicy, the policy is accepted and silently ignored, so nothing changes.
  • The connection pooler restarts. TXN_POOL_SIZE doubles from 100 to 200, which rolls the db-proxy pod and briefly drops pooled connections. Confirm your PostgreSQL max_connections has headroom for the larger pool before upgrading.

New Features

  • MCP server for coding agents: Unstract now hosts a Model Context Protocol server alongside every API deployment, so agents can run document extraction as tool calls instead of hand-built HTTP requests. It is reached at the deployment's own URL with /mcp appended and authenticates with that deployment's existing API key, so there is nothing to deploy and no new credential to mint. See the MCP Server guide for setup.
  • Global API deployment keys: A single API key can now authenticate against several API deployments in an organization — either an explicit set or all of them — instead of minting and rotating one key per deployment. Managed under Settings, with create, edit, rotate and delete.
  • Grouped output for agentic table extraction: The agentic table extractor can now group extracted rows by a section value — nesting line items under each property or invoice, for example — with an optional summary line of totals per group. Grouping is driven by the shape of the project's output schema rather than a separate "Group Key(s)" setting (now removed), supports multiple group keys, and runs inside the main extraction pass instead of an extra pass over every page, so grouped extractions finish faster and cost less. Multi-sheet workbooks pick their sample sheets more accurately, and reasoning models that reject the temperature setting are now supported.
  • Lookups on agentic table prompts: You can now attach a lookup to an agentic table prompt to enrich its extracted table — previously not possible at all. The lookup runs once over the whole table by default; an "Enrich each row separately" option runs it per row, with an up-front cost warning since that means one call per row. Rows that fail to enrich keep their original values and are reported in a summary rather than failing the run.
  • Co-owners for shared resources: Agentic Prompt Studio projects and other shared resources can now have co-owners, so more than one person can manage and edit them. Co-owner addition and revocation send email notifications — see Helm Configuration Changes for the template IDs.
  • Unpublish an exported tool: An exported Prompt Studio tool can now be removed from the registry without deleting the project behind it. A tool still attached to a workflow, pipeline or deployment is refused, and the refusal names what is blocking it. Note that unpublishing is not reversible in place: re-exporting mints a new tool identifier and does not carry over its existing shares, so anything holding the old identifier (saved workflow JSON, API collections, internal docs) must be updated.
  • Paginated list pages: Workflows, Prompt Studio, adapter and connector lists now load a page at a time and search by name across all rows, so these pages stay fast as an organization grows. Adapter and Prompt Studio lists also show created and last-modified times, and the Agentic Prompt Studio project list is sortable with an owner column.
  • MiniMax LLM adapter: MiniMax models can now be connected as an LLM adapter.
  • Newer Amazon Bedrock model families: The OpenAI GPT-5.x, Google Gemma and xAI Grok families hosted on Amazon Bedrock now work — reported by an on-prem customer using openai.gpt-5.6-terra. Model IDs are still entered bare; the adapter picks the right endpoint itself. Guardrails and application inference profiles are unavailable for these models and are stripped with a warning rather than silently appearing to be enforced.
  • Documentation links on every adapter and connector screen: Every Add Connector and Add LLM / Vector DB / Embedding / Text Extractor screen now links to that item's setup page, falling back to its category page.
  • Opt-in LLM prompt caching: Prompt caching for Anthropic and Amazon Bedrock models can be switched on to cut cost and latency where a large document context is reused across many prompts on the same document. It is off by default and changes nothing until enabled — see Helm Configuration Changes.

Fixes & Improvements

  • Execution logs for group- and org-shared users: Teammates who receive a deployment or pipeline through a group share or an organization-wide share now see its runs on the Logs page, which previously came up empty for them. Run logs, log exports and per-file results are now restricted to people the resource was actually shared with, instead of being readable by anyone in the organization holding the link.
  • Shared Prompt Studio projects show model names: Output tiles now show the model name and icon for anyone who can open the project, not just its owner, and Prompt Studio ownership checks validate the person making the request rather than the profile creator.
  • Connector names in agentic project settings are now displayed instead of being left blank.
  • LLMWhisperer V2 line splitter strategy is applied: The strategy chosen on the LLMWhisperer Text Extractor-v2 adapter had never reached the service, so every extraction ran with the default. It now takes effect, and the document's file name appears in LLMWhisperer usage reports. Behaviour change: a stored value outside the supported choices now fails the extraction instead of being ignored — check any adapter configured with a non-standard value before upgrading.
  • Extended Thinking beyond Claude: The "Enable Extended Thinking" control now maps to the reasoning-effort setting for non-Anthropic model families, where it previously had no effect.
  • Single-pass extraction returns a clear error: A model that answers a single-pass extraction with prose or a list instead of structured output now produces an actionable error rather than an unexpected server error, both in the backend and at the internal worker API.
  • Prompt Studio export and deploy: Fetching a response now falls back to the project's default LLM profile instead of failing when the prompt has none; tools exported with LLM Challenge enabled no longer fail validation at deployment; and registry listings keep the back-reference to the Prompt Studio project that produced each entry.
  • Agentic table extraction robustness: Rows continuing across a page break are no longer split into separate records when the model returns the same identifier with different capitalization; single-group summaries fall back correctly; vision-mode output truncation is retried; and orphaned rows are adopted into their group instead of being dropped.
  • API Hub usage tracking: Usage had stopped being recorded, so subscription dashboards no longer reflected the pages processed, with no error surfaced. Header lookups now retry on a cache miss, the completion check no longer races the status write, and usage resolves correctly on shared products where the subscriber differs from the account owning the underlying deployment.
  • MCP requests are no longer blocked by subscription checks: Deployment-scoped MCP calls now pass through subscription validation instead of being rejected.
  • List table presentation: The "Owned By" and "Updated" columns line up across every row on the Prompt Studio, adapter, connector and workflow lists, list titles match the Agentic Prompt Studio project list, and noisy tooltips have been removed.
  • API keys no longer written to logs: The LLMWhisperer and API Hub portals stopped logging customer API keys in plain text — the bridge previously dumped the full request header set on every authenticated request, and the portal logged the decrypted key on the provisioning, rotation and billing paths. Logging-only change; no schema, config or API change.

Helm Configuration Changes

  • OpenTelemetry transport default changed to http/protobuf: otel.configMap.OTEL_EXPORTER_OTLP_PROTOCOL in sample.on-prem.values.yaml now defaults to http/protobuf instead of grpc, and the endpoint example is a full URL on port 4318 rather than host:port on 4317. Action required if you enabled tracing at v0.173.0 with grpc: gRPC does not work reliably with the prefork worker pool the Celery workers use, so switch to http/protobuf and update OTEL_EXPORTER_OTLP_ENDPOINT to the matching URL. See On-Prem Observability & Tracing.
  • Redis ingress confined to the release namespace (new default): redis.networkPolicy.enabled: true with allowExternal: false and a namespace-local extraIngress rule for ports 6379 and 26379. This closes an unauthenticated cross-namespace REPLICAOF path that can turn the instance read-only and flush its keyspace. No operator action is needed to adopt it; see the warning above and Restricting Redis Network Access if you need to widen it again. Note that enabling redis.metrics re-opens the port cluster-wide through the subchart's own metrics rule.

v0.173.1 — July 15, 2026​

Consolidates changes from v0.173.1 since v0.173.0. Platform OSS version: v0.179.1 (from v0.178.1).

New Features

  • Mistral embedding adapter: Added a mistral-embed embedding adapter for indexing and retrieval with Mistral's embedding model.

Fixes & Improvements

  • Newer Claude models no longer error on temperature: The deprecated temperature parameter is now stripped for Claude Sonnet 5 and other post-4.7 models that reject it, so prompts against these models run without adapter errors.
  • Output Analyzer shows the profile name: Output Analyzer tabs now display the LLM profile name instead of the underlying LLM name, making profiles easier to tell apart.

Helm Configuration Changes

  • No manual values.yaml changes are required for this release.

v0.173.0 — July 13, 2026​

Consolidates changes from v0.173.0 since the previous on-prem stable release (v0.172.0). Platform OSS version: v0.178.1 (from v0.177.7).

Helm Configuration Changes

  • OpenTelemetry tracing is now a single chart flag: The unstract-platform chart can enable OpenTelemetry tracing across all backend, web, and worker services by setting otel.enabled: true and pointing the exporter at your OTLP collector — previously on-prem had no built-in tracing option. The flag defaults to false and the disabled render is unchanged, so no action is required unless you want to turn tracing on. See On-Prem Observability & Tracing for setup.

v0.172.0 — July 6, 2026​

Consolidates changes from v0.171.2 and v0.172.0 since the previous on-prem stable release (v0.171.1). Platform OSS version: v0.177.7 (from v0.177.6).

New Features

  • Restrict adapter and connector creation to org admins: A new organization setting lets admins restrict who can create LLM adapters and connectors to organization admins only. When it's on, non-admin members work from the shared adapters and connectors an admin has already set up. The toggle lives in Platform Settings and is off by default, so existing behavior is unchanged until you enable it.
  • Rotate platform API keys via the API: Platform API keys on the full_access tier can now call the key rotation endpoint, so credentials can be rotated through automation instead of only from the admin UI.
  • See your running platform version: The profile page now shows the platform version you're currently on, making it easy to reference the exact version when reporting an issue.

Fixes & Improvements

  • API deployment runs no longer get stuck on staging failures: When an API deployment run fails while staging its input file, the execution is now marked as failed with the error reason instead of appearing to run indefinitely.

Helm Configuration Changes

  • No manual values.yaml changes are required for this release.

v0.171.1 — July 1, 2026​

Consolidates changes from v0.170.1, v0.170.2, v0.171.0 and v0.171.1 since the previous on-prem stable release (v0.170.0). Platform OSS version: v0.177.6 (from v0.176.3).

New Features

  • Excel support for agentic table extraction: The agentic table extractor now accepts Excel (.xlsx/.xls) files, including multi-sheet workbooks with per-sheet extraction and code generation.

Fixes & Improvements

  • Agentic table/content extraction robustness: The content extractor now handles LLM output truncation with a split-text retry, and code-generation prompts explicitly list allowed modules to prevent retries triggered by disallowed imports.
  • Structure tool non-object output: The structure tool no longer crashes when single-pass extraction returns a value that is not a structured object.
  • Lookups: An orphaned assignment no longer blocks lookup deletion, and switching the extractor now correctly re-extracts.
  • DRF security hardening: Django REST Framework bumped to 3.17 to address a vulnerability; the automatic UniqueTogetherValidator is dropped on upsert/catch serializers, and the central DRF error path now surfaces non_field_errors and names resources in 404 responses.
  • Long S3 presigned URLs: URLValidator max_length raised to 8192 so long Amazon S3 presigned URLs validate successfully instead of being rejected.
  • Frontend rendering and performance (UN-3185): Restored global Prism initialization for prismjs add-ons, fixing blank Prompt Studio detail and HITL pages; deterministic single-bundle CSS cascade with asset gzip; lazy-loaded verticals and LLMWhisperer route pages; deferred login-route chunks with fingerprinted-asset caching; and Edit LLM Profile modal/layout fixes.
  • LLMWhisperer adapter env knobs are now surfaced in the workers sample.env.

Helm Configuration Changes

  • MinIO object-storage credentials (fixes 403s): MinIO server credentials now follow the storage block, and the MinIO HA tenant boots correctly even when root credentials contain stray quotes — both resolving intermittent 403 errors on object storage.
  • INTERNAL_SERVICE_API_KEY and DJANGO_SECRET_KEY now ship as chart defaults and have been removed from the on-prem values file. Required: set your own secure values for both keys before deploying — the chart-bundled defaults are identical across every download and must not be used in any environment.
  • Opt-in Redis Sentinel cold-start guard overlay to harden Redis Sentinel HA start-up.
  • Opt-in PriorityClass for critical stateful HA components (Redis, RabbitMQ, MinIO), so they are scheduled ahead of lower-priority workloads under resource pressure.
  • Single global.nodeSelector knob: one node-selector value is now bridged to the Bitnami Redis/RabbitMQ/MinIO subcharts via Sentinel, replacing per-subchart node-selector configuration.
  • Enterprise SSO setup Job is now pinned to a fixed backend image tag instead of a floating tag.
  • Decommissioned services: prompt-service, rentroll-service, tool-structure, and the legacy SDK1 prompt module are removed — fewer images to mirror for air-gapped installs. On upgrade, remove any blocks referencing these services from your custom values.yaml overrides.

v0.170.0 — June 24, 2026​

Consolidates changes from v0.168.0, v0.169.0, v0.169.1, v0.169.2 and v0.170.0 since the previous on-prem stable release (v0.167.0).

New Features

  • User groups and group-based sharing: Users can now be organized into groups, and projects, adapters, and resources can be shared with an entire group instead of one user at a time. Group-based sharing works across Prompt Studio, Agentic Prompt Studio, and workflows, and adapters shared with a group can be used directly in Prompt Studio and workflows.
  • NVIDIA Build and OpenRouter adapters: New OpenAI-compatible LLM and embedding adapters for NVIDIA Build and OpenRouter, expanding the set of model providers you can connect.
  • Clearer adapter configuration forms: Adapter setup forms now display their fields in a defined order, with the Amazon Bedrock adapter surfacing its authentication fields more prominently.
  • Automatic default LLM profile in Prompt Studio: New Prompt Studio projects now start with a default LLM profile created for you, and the document-upload tooltip is clearer about what to do next.
  • Prompt Studio project transfer keeps per-prompt settings: Transferring a Prompt Studio project now carries each prompt's table and agentic extraction settings along with it, so a transferred project behaves the same as the original without manual reconfiguration.
  • Batched, failure-only notifications: Notifications can now be grouped per time window, with an option to be notified only when runs fail.
  • Quick access to execution logs: Running a workflow now shows an alert with a direct link to its execution logs, so you can jump straight to the run details.

Fixes & Improvements

  • Adapters in use are protected from deletion: You can no longer delete an adapter that is still used by a workflow tool instance, preventing workflows from breaking unexpectedly.
  • Google Drive connector: The Google Drive folder browser no longer breaks when a folder contains Google Docs files, and Google Drive connections now work reliably across all execution workers.
  • Correct LLMWhisperer adapter key label: The API key field on the LLMWhisperer adapter is now labeled "LLMWhisperer Key" instead of the misleading "Unstract Key".
  • Org admins and service accounts see all lookups: Organization admins and service accounts now have visibility into every lookup in the organization.
  • Cleaner sharing dialogs: Organization admins no longer show up as redundant entries in resource sharing lists or the share dropdown, and project shares now also apply to exported Prompt Studio tools.
  • Last org admin protection: The last remaining organization admin can no longer accidentally demote themselves.

Helm Configuration Changes

This is the largest chart-configuration window of the year — review before upgrading from v0.167.0.

  • global.sharedConfigs secret/configmap restructure (breaking): per-service secrets and configmaps are replaced by shared templates rendered as <release>-<config>, consumed via per-service additionalConfigs/envFrom. Values are consolidated into a single sample.on-prem.values.yaml (plus base values.yaml) and the old sample.on-prem.secret.yaml is removed. Migrate any custom secret overlay into global.sharedConfigs; each shared config still accepts an existingSecret override. A derived databaseAliases secret (PG_BE_*, DB_USERNAME, REDIS_USERNAME) now fails the render fast if its inputs are missing.
  • RabbitMQ bumped to 4.1.3-management (was 3.13.7-management): the broker rolls with a brief downtime on upgrade and cannot be downgraded once volumes are at the 4.x format. If you self-mirror images, pull the new tag before upgrading.
  • Single image registry knob — global.image.registry: set once to redirect every chart image (core services, all workers, init/tool images, redis, minio + minio-mc, rabbitmq, pgbouncer, libreoffice) to your private registry. Ensure the mirror is complete before upgrading air-gapped/ECR installs.
  • Image pull secrets consolidated onto global.imagePullSecrets: the gcr.registry block is removed (.Values.gcr.* no longer exists). global.sharedConfigs.imageRegistry.IMAGE_PULL_SECRET_NAME now defaults to null and is derived from the first global.imagePullSecrets entry — move any gcr.registry.name value there. The in-cluster RabbitMQ broker now also receives global.imagePullSecrets (fixes ImagePullBackOff on private-registry brokers).
  • Optional automated enterprise SSO group-to-role mapping: new backend configMap keys ENABLE_ENTERPRISE_SSO_SETUP (default "False"), ORG_NAME, and ROLE_MAPPING (default "[]") run a gated one-time Job that declaratively reconciles IdP group → Unstract role mappings on install/upgrade. An empty ROLE_MAPPING clears all mappings. See the Unstract Roles Guide for setup.
  • list-onprem-images.sh is no longer bundled in the chart: download the unified script from https://docs.unstract.com/unstract/files/list-onprem-images.sh and run it with unstract as the target argument (./list-onprem-images.sh unstract …) to enumerate the images to mirror. See the Helm Chart Container Images guide for full usage.

v0.167.0 — June 1, 2026​

Consolidates changes from v0.166.0 and v0.167.0 since the previous on-prem stable release (v0.165.0). Platform OSS version: v0.172.0.

New Features

  • AWS Bedrock Guardrails: The Amazon Bedrock LLM adapter now accepts a Guardrail identifier and version, applying the configured AWS Bedrock Guardrail to prompts and responses for content filtering and safety enforcement.
  • Full document text in API responses: API deployment responses can return the full extracted text of the input file alongside the structured output, removing the need for a separate call to fetch source text.
  • Frontend request ID propagation: The frontend now forwards a request ID through the request chain and surfaces it on error notifications, enabling end-to-end correlation of failures from UI to backend logs.

Fixes & Improvements

  • Adapter key persistence on tool instances: adapter_key is now stamped alongside adapter_id_key when a tool instance is PATCHed, fixing cases where an adapter change was not fully persisted on the tool instance.
  • Apostrophes in Platform API Key names: Platform API Key name and description fields now accept apostrophes, so values like Acme's key are no longer rejected at validation.
  • LLMWhisperer: portal/bridge image bumped to v0.26.0.

Helm Configuration Changes

  • helm-schema-gen plugin is now registered in the marketplace and an empty-anchor YAML issue in the chart values was fixed, so values.yaml schema generation works without manual anchor patching. No action required unless you maintain a fork of the chart values.

v0.165.0 — May 27, 2026​

Consolidates changes from v0.164.0 and v0.165.0 since the previous on-prem stable release (v0.163.0).

New Features

  • Agentic Prompt Studio onboarding: A sample project, guided empty states on each step, and a dashboard CTA accelerate first-run discovery of Agentic Prompt Studio. Onboarding template assets are bundled with the release and the stepper is gated sequentially.
  • OpenAI-compatible LLM adapter: A dedicated adapter for any provider that speaks the OpenAI API (self-hosted gateways and OpenAI's own gpt-5 / o-series models), separate from the standard OpenAI adapter. Zero-cost tracking is wired in for free-tier endpoints.
  • Prompt Studio HITL feedback indicator: Prompt Studio surfaces a change indicator when a prompt's output has been edited via the HITL feedback loop. A new plugin slot lets enterprise plugins customize the indicator.

Fixes & Improvements

  • Org admin access to all organization resources: Org admins now have full access to every resource in their organization — Prompt Studio projects, adapters, and shared ProfileManager profiles — without each resource being explicitly shared with them. The Python SDK exposes equivalent service-account-level access for automated org-to-org migration flows.
  • Large file uploads in Prompt Studio: File uploads stream directly to remote storage instead of being buffered in backend memory, removing the backend-memory ceiling on document size.
  • Default triad adapters for invited users: Invited users now inherit the organization's default LLM, embedding, and vector DB adapters on first login, removing the manual adapter-selection step.
  • Table extraction — cross-page orphan rows: Subtable values placed by the LLM into the main values payload are now merged into the parent row across page boundaries, fixing orphaned rows on multi-page tables.

Helm Configuration Changes

  • ENABLE_HIGHLIGHT_API_DEPLOYMENT is now enabled by default in the on-prem chart values, surfacing source-document highlighting for API deployments. Override in your values.yaml if you previously kept it off.
  • bulk-download worker: pinned to a single replica with HPA disabled. If your values.yaml previously enabled autoscaling for this worker, the override is now ineffective — review and remove it.

v0.163.0 — May 18, 2026​

New Features

  • Lookups V2 — post-extraction LLM enrichment for Prompt Studio: A new enrichment stage runs additional LLM lookups on already-extracted data, letting you cross-reference and normalize values without a second extraction pass. Includes lookup reference file upload and sharing-notification emails when a lookup is shared with another user. See Look-Ups for details.
  • AWS Bedrock bearer token authentication: Bedrock LLM and embedding adapters now support AWS_BEARER_TOKEN_BEDROCK authentication, an alternative to static keys and IRSA for environments that prefer a simpler, long-term API key over provisioning an IAM user. Note: short-lived/refreshing tokens are not supported.
  • Workflow execution log export: The workflow execution logs modal can now export logs as CSV or JSON for offline analysis and sharing.
  • full_access permission tier: A new full_access permission tier authorizes DELETE operations on the Platform API.

Fixes & Improvements

  • Lookups: fixed a 500 error on lookup reference file upload; the public share viewer now skips lookup probes and defaults to the Enriched view; restored Prompt Studio public sharing after the Lookups V2 wiring; fixed the empty Default tab in Prompt Studio Combined Output.
  • Tool-run logs: cloud plugin tool-run logs now stream to the workflow execution UI; log output was trimmed and clarified, and log_events_id is restored on tool-run dispatch so logs persist even without an active UI subscriber.
  • Adapters: deprecated sampling parameters are stripped for Claude Opus 4.7; fixed the Bedrock bearer token being lost on LLM.complete() re-validation.
  • Usage metrics: embedding usage records are flushed on the indexing path, line-item executor usage records propagate up the prompt chain, and single-pass lookup metrics are aggregated under a single lookup_llm list.
  • Observability: worker logs are now bound to request_id and trace context for end-to-end correlation.

Helm Configuration Changes

  • New REMOTE_LOOKUP_FILE_PATH backend config (# <REQUIRED>) — remote storage path for Lookups V2 data (e.g. <bucket-name>/lookups). Set this before upgrading.
  • Redis and MinIO now create dedicated ServiceAccounts by default (serviceAccount.create: true, automountServiceAccountToken: false), so the chart works out of the box on clusters whose admission policies prohibit the default service account.
  • The worker-executor-v2 baseline is now part of the chart defaults, with db-proxy PodDisruptionBudget alignment.
  • IRSA service accounts are now attached to S3-touching worker deployments.

v0.162.0 — May 11, 2026​

New Features

  • HITL audit logging, change tracking, and statistics: Comprehensive audit trail for Human-in-the-Loop reviews — captures per-leaf JSON diffs, classifies row add/delete operations on list-valued fields, and surfaces edit markers in the audit UI.
  • Agentic table extractor plugin: New multi-agent, LLM-powered table extraction plugin (agentic_table_settings_v2) for complex tabular documents.
  • Gemini embedding adapter for Google AI Studio: New embedding adapter with gemini-embedding-001 as the default model. See Gemini embedding adapter for details.
  • DISABLE_SSO_IDP_AUTHORIZATION flag: New configuration flag to control SSO IdP authorization behavior for user management. See Enterprise SSO — On-Prem for details.
  • Live tool-run log streaming: Tool-run logs now stream into the workflow execution UI with markdown rendering.
  • MinIO ILM lifecycle rules codified in Helm: Object lifecycle (ILM) rules for MinIO are now part of the Helm chart, enabling automated cleanup without manual mc commands.

Fixes & Improvements

  • HITL: workflow deletion is no longer blocked when audit logs exist; restored the change history drawer; fixed audit plugin CSS that broke the adapter modal layout.
  • S3 connector: lists only buckets the configured credentials can actually browse and drops cross-region buckets from the picker.
  • SharePoint connector: more reliable site_url/drive_id persistence and safer OAuth token refresh — fewer re-auth prompts on long-running pipelines.
  • LLM & embedding reliability: unified retry logic across LLM and embedding providers reduces transient failures during prompt runs and indexing.
  • CORS: SocketIO and Django now accept wildcard subdomain origins, making multi-tenant subdomain deployments work out of the box.
  • Observability: workerExecutorV2 is now wrapped with OpenTelemetry auto-instrumentation, so worker spans show up alongside backend traces.

Helm Configuration Changes

  • New plugin config agentic_table_settings_v2 added to on-prem configuration and Docker build (required to enable the agentic table extractor).
  • New DISABLE_SSO_IDP_AUTHORIZATION environment flag for SSO user management.
  • MinIO ILM lifecycle rules are now codified in the Helm chart — review existing manual ILM policies before upgrading to avoid conflicts.
  • Removed unused MODEL_PRICES environment variables from platform-service charts.

v0.159.4 — May 20, 2026​

Hotfix on the v0.159.3 line. Does not pull in features from v0.160.x–v0.163.x.

Security

  • litellm CVE-2026-42208 (UN — OSS HOTFIX): Bumps litellm from the Zipstack GitHub fork (1.82.3) to 1.83.10 from PyPI, clearing the SQL injection in litellm.proxy auth (affects 1.81.16–1.83.6). Unstract does not use litellm.proxy, but third-party scanners flag the installed package regardless.

Helm Configuration Changes

  • No new variables or required secrets.

v0.159.3 — May 7, 2026​

New Features

  • AWS Bedrock IAM Role / Instance Profile authentication: New Authentication Type selector on the Bedrock LLM and embedding adapters lets EKS-hosted deployments authenticate via IRSA, instance profile, or task role — no static AWS access keys required. When the IAM Role mode is selected, boto3's default credential chain takes over, picking up the pod's ambient identity. See the AWS IRSA Setup for EKS Deployments guide for end-to-end setup including OIDC provider association, IAM role + trust policy creation, and verification.

v0.158.4 — March 27, 2026​

New Features

  • AWS S3 IRSA authentication: Support for IAM Roles for Service Accounts (IRSA) on both S3 storage and S3 connectors, eliminating the need for static credentials in EKS deployments
  • HTTP session lifecycle management: Managed HTTP session pooling for workers API clients, improving connection reuse and reliability

Fixes & Improvements

  • Added TTL to API HITL settings and fixed NaN TTL display
  • Security hardening: cookie security attributes and XSS prevention headers
  • Added input validation and Content Security Policy (CSP) headers across backend and frontend
  • Frontend CSP adjustments for RJSF form rendering (unsafe-eval) and PDF viewer (blob:)
  • Switched litellm to Zipstack fork after PyPI quarantine
  • Upgraded litellm to 1.82.3 to fix Azure OpenAI connection errors
  • Monkey-patched litellm Cohere embed timeout for Bedrock embeddings
  • Added LLMCompat bridge class to fix retriever LLM compatibility with llama-index
  • Handle LLM refusal responses to prevent NoneType errors
  • Include adapter name in error messages for easier debugging

Helm Configuration Changes

  • Hardcoded image references now configurable via values.yaml — previously hardcoded container image paths can be overridden for air-gapped or custom registry deployments

v0.158.0 — March 19, 2026​

New Features

  • Platform API keys for programmatic access to the Unstract Platform API. Organization admins can create, list, update, rotate, and delete API keys via the UI under Platform > Platform API Keys. Keys provide Bearer token authentication for all Platform API endpoints. See Platform API Keys documentation for details.
  • Service account access bypass for pluggable apps, enabling automated integrations without manual permission grants
  • Agentic Prompt Studio (beta): new backend and frontend for agentic document extraction workflows. See Agentic Prompt Studio for details.
  • HITL enhancements: sidebar navigation, queue deletion, nested table support, fetch-specific for targeted document review, reviewer name display on in-review documents, and default TTL changed from unlimited to 90 days. See HITL documentation for details.
  • CSV, TXT, and Excel file support in Prompt Studio file converter
  • Dashboard metrics system with plan banner, welcome card, and subscription usage tab
  • Card-based layout for Pipelines and API Deployments listing pages
  • Profile page now displays role and organization info
  • 1M context support for Anthropic LLM adapters
  • Vertex AI vertex_location support for regional endpoint configuration. See Gemini Pro adapter for details.
  • total_pages_processed exposed in execution API response and worker destination metadata
  • SharePoint/OneDrive connector for filesystem integration. See Connectors for details.
  • Azure AI Foundry adapter for LLM access
  • Redis Sentinel HA support with dual-mode configuration for backend, Celery, cache, tool containers, sidecars, and manual review queue. See HA Deployment for details.
  • RabbitMQ HA with configurable quorum queues. See HA Deployment for details.
  • MinIO HA support via optional MinIO Operator. See HA Deployment for details.
  • OAuth product scope added to login/signup authorization requests
  • Dynamic plugin loading infrastructure for enterprise components, migrations, and rule engine
  • Sidebar expand-on-hover UX improvement
  • Documentation link popover for connectors in the UI
  • Workflow deletion errors now show specific pipeline/API deployment names

Fixes & Improvements

  • HITL reliability: PostgreSQL count mismatch and slow query optimizations, bulk queries with lrange, soft-delete for DB-synced records, TTL display in days, rule engine nested array flattening fix, API rules evaluation fix after removal, add-row race condition fix, and queue metadata backfill migration
  • Custom data support added to single pass extraction; fixed string values being wrapped in extra quotes. See Custom Data for details.
  • PostgreSQL race condition in concurrent table creation handled
  • Memory and resource leak fixes: database cursor closure in subscription usage handler, platform-service resource leaks
  • Ollama adapters fixed post LiteLLM migration. See Ollama adapter for details.
  • Packet processing final fetch response API fix
  • Role update failures for existing users resolved
  • LLMWhisperer API key lookup database fallback added; client retry backoff configuration added
  • SIGTERM trap handlers for graceful container shutdown
  • Worker API timeout increased to prevent stuck executions during cron storms
  • Vertex AI thinking config skip for pro models when disabled
  • Azure OpenAI cost tracking now uses actual model name
  • Worker query optimization and retry configuration improvements
  • fsspec directory listing cache fix on connectors (including Azure listings expiry regression)
  • SharePoint walk() now supports detail=True
  • Secure cookie settings and CSRF cookie secure attribute enabled
  • Forbidden email handling in Auth0 OAuth callback
  • PDF viewer error fallback when document fails to load
  • Frontend migrated from Create React App to Vite
  • Export reminder state persists across page reloads
  • HTTP 409 returned when tool image not found in container registry
  • Legacy Celery file processing workers and dead code removed

Helm Configuration Changes

  • Redis Sentinel HA: new REDIS_SENTINEL_MODE env var added to prompt, runner, and multi-az values for dual-mode (standalone/sentinel) support
  • RabbitMQ HA: configurable quorum queues support added
  • MinIO HA: optional MinIO Operator support (operator deployed separately)
  • HITL worker secrets added to on-prem secret template
  • Agentic Studio apps and URLs added to on-prem configuration
  • Backfill metrics enabled by default for on-prem deployments
  • MODEL_PRICES_TTL_IN_DAYS changed from 7 to 1
  • Legacy worker templates removed: useUnifiedWorkers toggle and workerLogging config no longer needed