# 2026.08 Infrastructure Changes

## Changes on Application environment

| **Change** | **Environment Variable Name** | **Application Default Value**<br>**(if env variable unset)** | **Example** | **Required** | **Applications** | **Short Description** |
|:----------:|:-----------------------------:|:-----------------------------------:|:----------:|:-----------:|:-------------------:|:--------------------|
| Added     | `ZITADEL_WEBHOOK_ENDPOINT`   | -                                 | [http://backend-service-scope-management.chat.svc/webhook/zitadel-events](http://bs-scope-management.chat.svc/webhook/zitadel-events) | false      | - `backend-service-scope-management` | Enables real-time user sync via Zitadel Actions v2 webhooks.<br>⚠The scope-management service user must now have the `Iam Owner` role to be able to register the webhook target for receiving Zitadel events.<br>Before enabling: [See documentation](https://docs.unique.ai/it-operators/identity-and-access-management-iam/real-time-user-sync-via-zitadel-webhooks-actions-v2) for prerequisites and setup. |
| Modified   | `FEATURE_FLAG_ENABLE_ADVANCED_FORMATTING_UN_9758` | false                            | `true`    | false      | - `web-app-chat`   | Allows advanced formatting such as HTML in the frontend. |
| Added     | `FEATURE_FLAG_ENABLE_HTML_RENDERING_UN_15131` | false                            | `true`    | false      | - `web-app-chat`<br>  <br>- `assistants core` | Enables HTML rendering in the chat. Requires `FEATURE_FLAG_ENABLE_ADVANCED_FORMATTING_UN_9758` to be set as well. |
| Added     | `REFLECTOR_BACKEND_API_URL`   | -                                 | `https://reflector.unique.app`    | false      | - `web-app-chat`   | URL of the Code Reflector service. Required for the new HTML Store secure iframe rendering feature. See [Code Reflector Infrastructure](https://docs.unique.ai/it-operators/installing-and-upgrading-unique/infrastructure/code-reflector-infrastructure). |
| Added     | `ZITADEL_ISSUER`               | -                                 | `https://zitadel.unique.app`      | true       | - `web-app-chat`<br>  <br>- `web-app-admin`<br>  <br>- `web-app-knowledge-upload`<br>  <br>- `web-app-theme` | Zitadel issuer URL for frontend apps. Replaces `ZITADEL_PROJECT_ID` for authentication on frontend services. |
| Added     | `SOURCE_AVAILABLE_TOOLS_REMOTELY` | `false`                         | `true`    | false      | - `backend-service-chat` | When set to `true`, fetches available tools from the Python service instead of using the hardcoded list in node-chat. |
| Added     | `HTML_STORE_MAX_SLOTS`         | `50`                             | `50`     | false      | - `code-reflector` | Maximum number of concurrent HTML store slots. |
| Added     | `HTML_STORE_TTL_MS`            | `10000`                          | `10000`  | false      | - `code-reflector` | Time-to-live for stored HTML entries in milliseconds. |
| Added     | `HTML_STORE_MAX_SIZE_BYTES`    | `2097152`                        | `2097152` | false      | - `code-reflector` | Maximum HTML content size in bytes (default 2MB). Content exceeding this shows a download button instead of rendering inline. |
| Added     | `HTML_STORE_MAX_WAIT_MS`       | `5000`                           | `5000`   | false      | - `code-reflector` | Maximum time to wait for an available slot in milliseconds. Returns 503 if exceeded. |
| Added     | `HTML_STORE_SLOT_WAIT_INTERVAL_MS` | `500`                        | `500`    | false      | - `code-reflector` | Interval between slot availability checks in milliseconds. |
| Added     | `HTML_STORE_CLEANUP_INTERVAL_MS` | `1000`                         | `1000`   | false      | - `code-reflector` | Cleanup interval for expired HTML entries in milliseconds. |
| Added     | `FEATURE_FLAG_ENABLE_FILE_BASED_ACCESS_UN_12660` | `false`                  | `true`    | `false`    | - `backend-service-ingestion`<br>  <br>- `web-app-knowledge-upload`<br>  <br>- `backend-service-scope-management` | Enables file-access-based control. |
| Added     | `FILE_ACCESS_REBUILD_MERGE_EXISTING_FILE_ACCESSES` | `false`                  | `true`    | false      | - `backend-service-ingestion` (cron: node-ingestion-file-access-rebuild) | Enables merging of existing file accesses during the file access rebuild cron job. |
| Added     | `FILE_ACCESS_REBUILD_UPDATE_INDEXER_CONCURRENCY_LIMIT` | `45`                  | `45`     | false      | - `backend-service-ingestion` | Concurrency limit for updating indexers when merging file accesses. |
| Removed   | `ZITADEL_PROJECT_ID`           | -                                 | -        | -          | - `backend-service-chat`<br>  <br>- `backend-service-ingestion`<br>  <br>- `backend-service-configuration`<br>  <br>- `backend-service-event-socket`<br>  <br>- `backend-service-app-repository`<br>  <br>- `client-insights-exporter` | No longer needed on specified backend services. Frontend apps now use `ZITADEL_ISSUER` instead. |
| Added     | `FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411` | `false`                  | `true`    | `false`    | - `web-app-chat` | This environment variable enables the new UI for the chat input

## Chat backend Timeout Change

When using the `backend-service` [chart version](https://artifacthub.io/packages/helm/unique/backend-service?modal=changelog&version=10.1.0)`>= 10.1.0` the Kong service annotations (`konghq.com/read-timeout`, `write-timeout`, `connect-timeout`) have been replaced with `routes.timeout: 1h`. Self-hosted customers using Kong can update their timeout configuration accordingly.

## File based access migration update

Only relevant if enabling file-based access. Do NOT add the data migration if file-based access is not being enabled.

A new data migration hook has been added to the `backend-service-ingestion`. The migration command in the migration hook in the default values of the service need to be adjusted.

```
// search for
cd /home/node/app/services/node-ingestion/prisma; npx prisma migrate deploy --config ../prisma.config.ts;

// replace with
cd /home/node/app/services/node-ingestion/prisma; npx prisma migrate deploy --config ../prisma.config.ts; cd /home/node/app/services/node-ingestion/dist; RUNNING_MODE=data-migration  node /home/node/app/services/node-ingestion/dist/main.js;
```

The final result should look like this in the default values of `backend-service-ingestion`:

```
hooks:
  migration:
    command: |
      cd /home/node/app/services/node-ingestion/prisma; npx prisma migrate deploy --config ../prisma.config.ts; cd /home/node/app/services/node-ingestion/dist; RUNNING_MODE=data-migration  node /home/node/app/services/node-ingestion/dist/main.js;
    enabled: true
```

| **Author** | Solution Engineering |
