Only this pageAll pages
Powered by GitBook
1 of 79

6.1

Loading...

Version 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Version 5

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Changelog

Welcome to the Appmixer changelog! 👋 Explore comprehensive release notes and detailed migration guides to keep your Appmixer instance up to date and running smoothly.

Latest version

6.5.3

Other versions

Version 6Version 5

Helm Chart latest version

1.2.1

6.5

Migration guide

Version 6.5 is compatible with 6.4. It operates on the same stack and custom components should function without modification.

The Insights Chart Editor and Insights Dashboard SDK widgets (appmixer.ui.InsightsChartEditor, appmixer.ui.InsightsDashboard) were in this version. If your embedded application uses these widgets, remove them before upgrading. The Charts REST API remains available for existing chart data.

Flow validation now reports components that require authentication but have no connected account. When validation before flow start is enabled (FLOW_VALIDATE_BEFORE_START), flows with unauthenticated connectors are rejected at start instead of failing at runtime — previously such flows started and failed with "Missing access token".

Appmixer widgets now render thin, theme-coloured scrollbars instead of native ones. If your host application styles ::-webkit-scrollbar inside Appmixer widgets, those rules are ignored in Chromium from 6.5 onwards — the SDK's standard scrollbar-width / scrollbar-color properties switch Chrome and Edge to the standard scrollbar rendering path. Migrate them to the standard properties, or restore the native scrollbars. See .

6.5.36.5.26.5.16.5.0
removed
Custom Theme → Scrollbars

6

Explore the new features in version 6.0 that make automation easier once again for your customers and internal teams.

Migration Guide

Appmixer 6 operates on the same stack (Node.js version, MongoDB version, etc.), so all custom components should function without modification.

There are no breaking changes in the API. However, one small change worth noting is that if a flow is running, its database document cannot be updated unless ?forceUpdate=true is added to the request. You can read more about this in the changelog.

An important database change in Appmixer 6 is the introduction of a flow type. A new property, type, is now present on each flow document, and a migration script will automatically execute when Appmixer 6 is deployed to assign a type to each flow in the system. More information about the types can be found in this section of the changelog. While this change isn’t breaking, SDK widgets now use this by default to display certain flow types. For instance, the appmixer.ui.FlowManager widget shows flows with type: automation. This default behavior can be modified using the customFilter, as described in the Appmixer SDK documentation. Similarly, the appmixer.ui.Integrations widget uses type to distinguish integration templates from integration instances.

The most significant update in the main UI (not the SDK) is the split of all flows into two categories: Automations and Integrations. More details can be found in.

Appmixer 6 introduces several new garbage collectors, with additional information available in. Be sure to review the garbage collector for continuity scopes (the continuity scope feature is described in). These scopes are now deleted after 100 days by default (modifiable). If you’re using flows with continuity scopes and expect a webhook after 100 days, then you have to increase the value. For any custom components that rely on this feature, you can use the new context.setMaxWait function to set a specific expiration time, as explained in.

Finally, please review the, as several settings now have new default values.

  • The main menu has been redesigned and a Dashboard page with links to the most important tutorials has been added:

  • Automations and Integrations. The biggest change in Appmixer 6. Automations (internal business process/workflow automations) and Integrations (integration templates for end-users) are split into two separate views for better navigation.

  • Expandable main menu.

  • New menu options in Automation Designer, Integration Designer, Automations, and Integrations pages.

  • Integration designer now displays a magic wand button next to each field. You can now easily add any field to the integration wizard for your end-users simply by clicking on the magic wand button.

  • Go to “Edit Wizard” to see the live preview of the final wizard as your end-users would see it:

  • A new test flow has been added allowing you to test integration templates before publishing:

  • Starting a test opens the end-user Wizard allowing you to see and test how the integration configuration would look for your end-users:

Explore logs of a running test and repeat stop/edit/start/delete cycle until you’re ready to publish your integration template to your end-users.

  • Publishing popup has been redesigned and simplified:

  • You can now update all existing integration instances running for your end-users when publishing an update to your integration templates:

  • Log panel automatically opens when the flow starts.

  • The log panel toggle button is now visible in Designer:

  • The log panel can be extended to full screen.

  • A search bar was added to the log panel allowing a full-text search in logs.

  • Correlation ID added to each log. You can now copy this correlation ID, add it to the search bar to see logs from the same flow “run”.

  • Expression expand option in the source.

  • Show a hint to the user, guiding them to create a new flow in Flow Manager if no flows are found.

  • New trigger and action marker icons have been added to the component selector in the Inspector panel to make it easier to differentiate triggers from actions.

  • A new trigger selector popup automatically opens by default when a new flow is created or the last trigger is deleted. This guides the user to select a trigger first. This behaviour can be optionally turned off when using the SDK. See

  • A new icon for variables makes it more visually clear that a variable can be modified by clicking on it.

  • Render brackets [] at the end of all array type of variables (for variables with JSON schema defined in the component manifest file):

  • Silent sign-in when passing the access token in the URL.

  • The active tab is highlighted in the appmixer.ui.Integrations widget.

  • Support Native Web Components in Custom Inspector Fields.

  • Font size increased in the Studio for better readability.

  • Introduce the email argument as the third optional argument in api.signupUser(username, password, email).

  • New options for the appmixer.ui.InsightsLogs widget (customFilter, showHistogram, filterLayout, logFilter).

  • New appmixer.api.sendAppEvent(). This allows you to trigger automations and integrations from your apps using a “named” event as opposed to using a generic webhook. See for more information.

  • Timeouts (created by context.setTimeout()) are automatically deleted after they are processed. In the previous version, timeouts might not have been correctly garbage collected in some cases (their consumption by components failed 30 times in which case they moved into the unprocessedMessages collection). In Appmixer 6.0 timeouts are correctly deleted in this scenario.

  • Garbage collector for continuity scopes (Mongo collection continuityScopes). Newly, continuity scopes are deleted after 100 days. This can be changed by GARBAGE_COLLECTOR_CONTINUITY_SCOPES_TTL (default value 100) and GARBAGE_COLLECTOR_CONTINUITY_SCOPES_TTL_UNIT (default value "days"). A component can increase the TTL of the continuity scope with context.setMaxWait()

  • POST|GET /logs API supports a new searchAfter query parameter, an example in

  • A running flow cannot be updated via the API without ?forceUpdate=true in the query parameter.

  • You can now inject a PWD-type account via API.

  • New options to control the webhooks sent to the WEBHOOK_FLOW_COMPONENT_ERROR URL.

    • WEBHOOK_FLOW_COMPONENT_ERROR_INCLUDE_RETRY (false by default). If a message fails and is scheduled for a retry, a webhook is not sent by default to the WEBHOOK_FLOW_COMPONENT_ERROR URL.

    • WEBHOOK_FLOW_COMPONENT_ERROR_INCLUDE_QUOTA (false by default). If a message cannot be processed due to insufficient quota, a webhook is not sent by default to the WEBHOOK_FLOW_COMPONENT_ERROR URL.

  • Incoming webhooks are not counted in the telemetry.

  • Added type property to flows. There are now 5 types of flows:

    • automation … Automation.

    • integration-template … Final published integration template.

The appmixer.ui.FlowManager shows only the flows with type:automation, for example. The Integrations page displays flows with type:integration-draft. Once a draft is published, an integration-template flow is created, and then every instance of the integration-template has type:integration-instance.

  • Context Quotas and a Slow Queue are described in

  • AuthHub. Appmixer now features a central Authentication Hub, functioning as an authentication proxy, which simplifies the setup process by eliminating the need to register your own OAuth credentials with third-party services. The Authentication Hub is enabled for all hosted Appmixer tenants. In self-managed installations, the Authentication Hub has to be explicitly set. See for more details.

  • Older (but compatible) versions of a connector can now be installed.

  • A custom scope can now be assigned to users in the Backoffice.

  • A connector that has been side-loaded from a filesystem can now be downloaded, same as connectors installed via the Appmixer marketplace.

  • Showing the installed version of a connector.

6.5.3

2026-08-31

  • Fixed every log query failing against an OpenSearch cluster — On OpenSearch, all log reads returned HTTP 400 with "The client noticed that the server is not Elasticsearch and we do not support this unknown product". From 7.14.0 onwards the Elasticsearch client performs a product check before its first request and then refuses to talk to a server that does not identify itself as Elasticsearch, so every request was rejected by the client itself before it ever reached the cluster. The client had been pinned below that version deliberately; a dependency sweep lifted the pin, which shipped in 6.5.0. It is pinned again, with the reason recorded next to it. This restores the log APIs, log deletion, flow insights, Automation Hub analytics, the Designer's example variables (which also feed AI Copilot) and the test-mode log fallback. Only deployments backed by OpenSearch were affected, and only on 6.5.0 through 6.5.2 — 6.4.11 and earlier are unaffected. A cluster that forbids anonymous GET / also masked the problem, because the client skips its product check when that request is rejected.

6.4.11

2026-08-28

  • Fixed log records being dropped by Elasticsearch when they carried an _id field — Log extras are flattened into the top level of the log record, and Elasticsearch reserves leading-underscore keys there for its own metadata, so any log call passing _id had its whole document rejected with a 400 and never indexed. The MinIO GridFS migrator was doing exactly that in its Skipping file with missing metadata warning (which fires on every plugin start for interrupted uploads), so those warnings were lost. The field has been renamed, and log record creation now moves any reserved key under a prefixed name (_id → extra_id) instead of letting the record be dropped — this also protects log calls in customer-written system plugins.

6.3.4

2026-02-05

  • Refactored ElasticSearch indices usage for multitenant AWS deployments, improving index organization and isolation.

  • Introduced multi-tenancy support with prefixed Redis keys, ensuring proper data isolation between tenants.

  • Added folder support for S3 files, enabling better file organization and management in object storage.

Replaced Bunyan logger with Pino.
  • Removed charts trace data feature when engine is in multitenancy mode to enhance security and reduce overhead in multi-tenant environments.

  • Bug Fixes

    Bug Fixes

    API Version Mismatch error is displayed only if the major or minor version of the API and SDK differs. Previously, it was shown even if the patch version was different.

    Garbage collector for message scopes (Mongo collection messageScopes). A message scope is deleted by a job if it is not used in a timeout or continuity scope and if it is older than 7 days. This can be changed by GARBAGE_COLLECTOR_MESSAGE_SCOPES_TTL (default value 168) and GARBAGE_COLLECTOR_MESSAGE_SCOPES_TTL_UNIT (default value "hours").

    STRICT_COOKIES default value is set to false.
  • API_USER_CREATE_SCOPE is editable through the Backoffice without the need to restart the engine. https://docs.appmixer.com/appmixer-backoffice/system-configuration#configuration-options

  • integration-draft … Integration template that’s being edited.

  • integration-test … Temporary integration instance created by the Test functionality.

  • integration-instance … Instance of an integration template that runs in the context of an actual end-user.

  • UI

    Main page

    Flow manager

    Integration Wizard Editing

    Logs

    Designer

    Miscellaneous

    SDK

    Core

    Garbage collectors

    API

    System configuration

    Miscellaneous

    Backoffice

    the changelog
    the changelog
    the Appmixer documentation
    the documentation
    System Configuration section
    https://docs.appmixer.com/component-definition/manifest/properties#expression
    https://docs.appmixer.com/v/6.0/appmixer-sdk/ui-and-widgets/designer#config.options.triggerselector
    https://docs.appmixer.com/getting-started/use-app-events
    https://docs.appmixer.com/building-connectors/behaviour#context.setmaxwait-timestamp
    https://docs.appmixer.com/api/insights#query-parameters-1
    https://docs.appmixer.com/api/flows#query-parameters-1
    https://docs.appmixer.com/v/6.0/api/accounts
    https://docs.appmixer.com/appmixer-backoffice/system-configuration#configuration-options
    https://docs.appmixer.com/appmixer-self-managed/configuration#context-quotas
    https://docs.appmixer.com/appmixer-self-managed/authentication-hub

    6.3.11

    2026-03-17

    • Added REDIS_PASSWORD environment variable support for Redis Sentinel authentication, fixing "NOAUTH Authentication required" errors. The ioredis library now properly authenticates to both Redis master/data nodes and Sentinel nodes. In typical Bitnami deployments, both use the same password from REDIS_PASSWORD. For special cases where passwords differ, REDIS_SENTINEL_PASSWORD can still be used.

    6.3

    Migration guide

    Version 6.3 is compatible with 6.2.

    6.3.136.3.126.3.116.3.106.3.96.3.76.3.66.3.56.3.46.3.36.3.26.3.16.3.0

    6.4.8

    2026-08-03

    Bug Fixes

    • Fixed the GridFS to S3 file migration retrying failed files indefinitely — A file that failed to migrate was retried in a loop, flooding the logs and preventing the migration from completing. Each file is now attempted once per run and retried on the next startup.

    6.3.1

    2026-01-20

    • Fixed discarded message log not being properly sliced, preventing excessive log accumulation and reducing disk space usage.

    6.4.10

    2026-08-25

    Bug Fixes

    • Fixed variable modifiers being lost on key-value rows — In the key-value style component fields, only one row's variable modifiers survived editing: the shared modifier map was bound through a single pass-through, so entering a variable with a modifier in one row could drop or overwrite the modifiers recorded for the others. Each row now keeps its own modifiers through the whole edit chain.

    6.2

    Migration guide

    Version 6.2 is compatible with 6.1.

    6.2.46.2.36.2.26.2.16.2.0

    6.2.3

    2026-01-19

    • Updated check assertions library.

    • Resolved an issue where accounts were not automatically connected when integrations were updated.

    • Enhanced the uploader lock mechanism to improve reliability and prevent race conditions.

    • Added support for RFC 6839 JSON variant content types in webhook routes, expanding webhook compatibility.

    • Fixed the missing Forgot Password button on the login screen.

    6.0.6

    What's new

    • Added APPMIXER_USERFLOW_TOKEN and APPMIXER_GOOGLE_TAG_MANAGER_ID Env variables to the frontend Dockerfile.

    6.3.13

    2026-07-27

    • Added a cluster-wide system drain mode for safe RabbitMQ migrations. When activated (POST /config with the key SYSTEM_DRAIN_MODE), external message entry points — webhooks, polling, store triggers and retry/timeout jobs — are blocked while in-flight messages cascade to completion, so the RabbitMQ queues can be drained to empty before a migration without data loss. The setting propagates to all nodes instantly, and the new GET /system/drain-status endpoint reports the drain progress.

    6.3.3

    2026-01-27

    • Fixed integrations update bug where the wizard would attempt to auto-connect non-existing components multiple times when updating integration instances.

    • Fixed icon caching issues where connector icons were being requested repeatedly without proper browser caching.

    • Fixed orphaned components in wizard account fields by pruning invalid component references when components are removed from integration templates.

    6.3.2

    2026-01-23

    • Added Pino logger integration and LOG_STDOUT_ONLY configuration option to enable direct stdout logging for seamless integration with Vector and other log aggregation systems.

    • Optimized search index building for dialogs, significantly improving UI performance when opening trigger and action selection popups.

    6.2.4

    2026-01-20

    • Fixed discarded message log not being properly sliced, preventing excessive log accumulation and reducing disk space usage.

    6.1.9

    2025-09-24

    • Fix for Unknown target: dispatcher error introduced in 6.1.0.

    6.3.7

    2026-02-23

    • Fixed uploader transaction failures when installing large modules.

    • Fixed flow synchronization. The issue could occur during flow start when a worker pod had an outdated cached version of a component.

    6.3.5

    2026-02-12

    • Added tenant ID prefix to getModuleIndexParam for improved multi-tenant ElasticSearch index isolation, ensuring complete data separation between tenants.

    • Implemented rate-limiting for NewRelic "invalid parent id" uncaught exceptions to prevent log flooding and improve monitoring stability.

    6.3.10

    2026-03-17

    • Fixed REDIS_SENTINEL environment variable parsing to properly handle Sentinel configuration.

    6.1.7

    2025-07-10

    • Axios library in the SDK upgraded to the latest version 1.8.2.

    • Allow non-admin users to publish and update integration templates (not the integration instances).

    6.4

    Migration guide

    Version 6.4 is compatible with 6.3.

    Some default values were changed (lowered to 2MB):

    LIMIT_MESSAGE_MAX_BYTES=2097152

    BROKER_SERVER_MAX_MESSAGE_SIZE_BYTES=2097152

    These affect the maximum size of a message that can be sent from a component. A message larger than the limit is rejected and dropped — it is not stored in the unprocessedMessages collection. The rejection is logged as a Message canceled

    The upgrade will create a new Admin user group, and all existing admin users will be added to it. When a new

    This upgrade introduces a new Admin user group. All existing admin users are automatically added to it.

    When an admin logs in, the Admin group is preselected in the Workspace switcher. Because this group starts empty, Appmixer will appear to have no flows or other content on first load. To access your existing work, switch to My workspace from the Workspace switcher.

    6.4.116.4.106.4.96.4.86.4.76.4.66.4.46.4.36.4.26.4.16.4.0

    6.1.6

    2025-06-26

    • Fixes a bug where, when a change to an integration draft is published to all integration instances, the integration's userId is overwritten with the userId of the integration template’s owner.

    • Fixes broken flow:validation even in the appmixer.ui.Wizard widget.

    • Fixes broken static variables with non-string values not detected by the

    6.0.13

    2025-03-26

    • The engine can load Component Plugins from both the file system and the database. The database now takes priority, and if the same plugin exists in both locations, it is loaded only once.

    • Added definition support to the GET /flows/{flowId}/validate API.

    6.4.7

    2026-06-23

    • Improved InputQueue circuit breaker resilience — The input-queue circuit breaker now stores all of its polling state directly in Redis as the single source of truth, so new or restarted pods automatically pick up the shared state with no manual sync or startup restore. The INPUT_QUEUE_STATUS job now runs on both worker and API nodes (a distributed lock ensures only one run per cycle), and the circuit breaker state (state, message count, bytes, reason) is now exposed via the /system/health API.

    • Fixed RabbitMQ consumer ack-timeout that could stall input-queue consumption — When many slow-running messages are being processed, messages prefetched from RabbitMQ could sit un-acked in the in-memory Throttle queue long enough to trip RabbitMQ's

    6.4.1

    2026-04-28

    • System Drain Mode for RabbitMQ Queue Migration — New cluster-wide SYSTEM_DRAIN_MODE config flag that blocks all external message entry points (webhooks, polling, store triggers, retry/timeout/slow-queue jobs) while allowing in-flight messages to cascade to completion through the flow DAG. Activate via POST /config with {"key": "SYSTEM_DRAIN_MODE", "value": "true"} — propagated to all nodes instantly, no pod restart needed. Monitor queue drain progress with the new GET /system/drain-status endpoint.

    6.3.9

    2026-03-05

    • Removed legacy classic RabbitMQ queues, improving stability and preventing connection breaks when Rabbit pods with classic queues go down.

    6.0.8

    • Handling PRECONDITION_FAILED - unknown delivery tag error. When the RabbitMQ was restarted and some messages were being processed, their acknowledgment failed with the PRECONDITION_FAILED exception, which resulted in a broken RabbitMQ connection.

    • Improved sandbox around the JavaScript modifier and the context.evalJavaScript function.

    6.1.5

    2025-06-02

    • New optional ENV variable INTERNAL_API_URL. If set, HTTP requests like will be sent to this URL, instead of the APPMIXER_API_URL.

    • In the Appmixer SDK, encode URI characters before sending requests to the . This fixes a bug when creating Storage keys failed with certain characters.

    6.0.10

    • The order of the Integration Wizard fields was reversed in the Firefox browser. This is fixed now.

    5.2.10

    • Handling PRECONDITION_FAILED - unknown delivery tag error. When the RabbitMQ was restarted and some messages were being processed, their acknowledgment failed with the PRECONDITION_FAILED exception, which resulted in a broken RabbitMQ connection.

    • Improved sandbox around the JavaScript modifier and the context.evalJavaScript function.

    5.2.4

    • MongoDB driver was updated to the newest version to support MongoDB up to version 7.0.

    • Fix for token refresh for the pwd authentication type https://docs.appmixer.com/appmixer/component-definition/authentication#password The username/password can be exchanged for a token that can have an expiration date. This update fixes the refresh of the token.

    • New redirectUri option for the Microsoft OneDrive module. If defined, the OneDrivePicker (used by UploadFile and ExportFile connectors) will use it instead of the default redirectUri (which is https://[your-appmixer-api-url] /plugins/appmixer/microsoft/onedrive/picker).

    6.1

    Version 6.1 is compatible with 6.0. However, there are some new , features you should be aware of before upgrading—namely, the new retry mechanism and the new garbage collector(s).

    text
    input type.
    consumer_timeout
    , causing it to close the channel and halt consumption from the input queue until reconnect. A message that waits in the Throttle queue longer than
    THROTTLE_QUEUE_TIMEOUT
    (default 5 minutes) is now re-published as a fresh copy and the original is acked, returning it to the broker before the channel can time out — with no message loss. A longer backstop guard (
    BROKER_MESSAGE_ACK_TIMEOUT
    , default 28 minutes) frees the channel as a last resort if a message is still unacked after processing begins.

    Features

    Bug Fixes

    Fixed missing confirmation dialog when performing certain actions in Studio.
  • Fixed Automation Hub settings tenant ID URLs not resolving correctly.

  • Fixed workspace context not persisting across tabs and browser sessions.

  • Fixed flow example data not appearing in the variable picker in multitenant mode.

  • Fixed missing return statement in the delete user account transaction, which could cause issues with the database session.

  • New Features

    Bug Fixes

    Breaking Change: If upgrading directly from version 6.0, you must upgrade through version 6.1 or 6.2 first to avoid data loss from legacy queues.

    What's new

    What's new

    What's new

  • context.loadOutputSchemaProperties function used by the Each component fixed. Did not work properly if a component with dynamic output port options was connected to the Each.

  • If a module has .npmrc file, it is now used for the automatic rebuild that is triggered if Appmixer is started with a newer version of Node.

  • UI.Wizard: The account is duplicated resulting in freezing UI, fixed.

  • Backoffice Insights range selector fixed (includes the last month now).

  • New in 5.2.4

    error and reported through the flow error system webhook, and the input message that produced it is not retried, because the component has usually already done part of its work before sending the oversized message.

    Note that the two values are not configured the same way. LIMIT_MESSAGE_MAX_BYTES is part of the cluster configuration and can be changed at runtime from the Backoffice. BROKER_SERVER_MAX_MESSAGE_SIZE_BYTES is read from the environment only and cannot be set from the Backoffice — it has to be provided as an environment variable. Keep the two in sync: the message limit is what rejects an oversized message before it reaches the broker, so raising it alone only moves the failure to the broker, where the message is dropped in the same way.

    configuration
    Admin user group

    What's new

    Component JSON Schema output port

    Migration guide

    backend
    6.1.6
    6.1.5
    6.1.4
    6.1.3

    6.0.9

    What's new

    • Axios library upgraded from 1.6.0 to 1.7.9

    5.2.12

    2025-03-25

    What's new

    • The engine can load Component Plugins from both the file system and the database. The database now takes priority, and if the same plugin exists in both locations, it is loaded only once.

    6.3.12

    2026-03-27

    • Fixed a bug introduced in 6.3.7 that blocked messages from being processed while a flow starts. This issue broke triggers such as microsoft.mail.NewEmail that require incoming webhook processing during flow startup.

    5.2.2

    New in 5.2.2

    • MongoDB driver was updated to the newest version to support MongoDB up to version 7.0.

    • Fix for token refresh for the pwd authentication type https://docs.appmixer.com/appmixer/component-definition/authentication#password The username/password can be exchanged for a token that can have an expiration date. This update fixes the refresh of the token.

    6.4.2

    2026-05-11

    New Features

    • Flow Image on Automation Hub Tiles — Automation Hub tiles now render a flow image when available, replacing the default connector icon strip. Tiles without a flow image continue to display the icon strip as before.

    • Sync Categories to Integration Templates on Save — Categories assigned in an integration draft are now propagated directly to the linked integration template when clicking Save Changes, without requiring a full Publish Changes.

    Bug Fixes

    • Fixed log search queries using the @timestamp field which only exists in Elasticsearch+Logstash setups but not in OpenSearch+Vector setups. All log search queries, sort parameters, and aggregations now use gridTimestamp — the application-level timestamp present in both infrastructures.

    6.2.2

    2025-12-12

    • Made logstash queue definition optional to provide more flexibility in deployment configurations.

    • Removed a global CSS rule affecting ordered lists (ol) in the frontend application to fix styling conflicts.

    6.4.4

    2026-05-25

    Bug Fixes

    • Fixed originalContent reconstruction from scope — When originalContent is stripped from messages (6.4+) and reconstructed from scope, getOriginalContent() could return undefined in several edge cases. Filter components (IsNotEmpty, Equal, Contains, etc.) would then fail with a "Missing JSON" error. The scope compression cache is now cleared before re-compressing in enqueueMessage to prevent source component scope entries from being lost, ensuring originalContent can always be reconstructed.

    • Fixed unprocessed messages not being saved on input port validation errors — When a message failed input port validation, it was not saved to the unprocessedMessages collection. This has been fixed so that failed messages are correctly persisted.

    Helm Chart

    Release notes for the Appmixer Helm chart (appmixer-helm).

    6.3.6

    2026-02-18

    • Fixed critical issue with uploading connectors that include packages and plugins, resolving deployment failures and ensuring proper connector installation.

    6.0

    6.0.136.0.126.0.116.0.106.0.96.0.86.0.66.0.4

    5.2.11

    2025-03-20

    What's new

    • Added Component JSON Schema output port definition support to the GET /flows/{flowId}/validate API.

    5.2.3

    New in 5.2.3

    • New redirectUri option for the Microsoft OneDrive module. If defined, the OneDrivePicker (used by UploadFile and ExportFile connectors) will use it instead of the default redirectUri (which is https://[your-appmixer-api-url] /plugins/appmixer/microsoft/onedrive/picker).

    • context.loadOutputSchemaProperties function used by the Each component fixed. Did not work properly if a component with dynamic output port options was connected to the Each.

    • If a module has .npmrc file, it is now used for the automatic rebuild that is triggered if Appmixer is started with a newer version of Node.

    5.2.9

    New in 5.2.9

    The system API POST /system/encrypt-tokens can encrypt API keys and passwords, too. In the previous version, it could encrypt only OAuth1,2 access tokens.

    5.0

    5.0.15.0.2

    6.2.1

    2025-10-13

    • Upgraded Axios from version 1.8.2 to the latest release to address a reported high-severity vulnerability.

    • Modified the MongoDB indexing script to run asynchronously in the background, ensuring it no longer blocks pod startup.

    • Removed the script that deleted an obsolete RabbitMQ polling queue (introduced in 6.2.0); the queue itself will be preserved to avoid unintended side effects during deployments.

    6.0.11

    What's new

    • Pin Elasticsearch client to version 7.13.0, as it is the last version compatible with AWS OpenSearch.

    6.0.12

    What's new

    • Publishing an Integration update no longer replaces the Webhook (or a FormTrigger, or any other component with a URL in the Inspector) URL in the Integration Template with the URL from the Integration Draft flow.

    • Added support to change the limit (page size) in the appmixer.ui.Integrations widget.

    const integrations = appmixer.ui.Integrations({ el: '#widget' });
    
    integrations.state('query', {
        ...integrations.state('query'),
        limit: 3,
    });

    context.callAppmixer

    6.4.9

    2026-08-14

    Features

    • Configurable MongoDB connection pool with idle-connection reaping — DB_POOL_SIZE once again sets only the maximum pool size, restoring the semantics that were in place before the MongoDB 7 driver migration (which had mapped the single value to both the minimum and the maximum, permanently pinning every Mongo-connecting process to exactly 5 open connections while also capping it at 5 concurrent operations). Three new options replace it:

      • DB_MAX_POOL_SIZE — maximum pooled connections. No default; takes precedence over DB_POOL_SIZE when set.

      • DB_MIN_POOL_SIZE — minimum warm connections, default 1.

      • DB_MAX_IDLE_TIME_MS — default 120000; pooled connections above the minimum that sit idle for longer than this are closed. The driver default of 0 (never close) is why pools never shrank before.

      DB_POOL_SIZE is deprecated but still honoured as a backward-compatible alias, with its default raised from 5 to 10. With all defaults, a process now keeps 1 warm connection, can burst to 10, and shrinks back within roughly 2 minutes. Set DB_MIN_POOL_SIZE higher for deployments where reconnect latency matters. This matters most in multitenant deployments against a shared DocumentDB, where the pinned pool wasted a large number of permanently idle connections.

    • node_modules is now reinstalled only on a Node.js major version change — The reinstall exists for native addons, whose ABI changes only across major Node.js releases, but the previous check compared the full version string. Every patch or minor image bump therefore triggered a cluster-wide npm install plus a GridFS re-upload of every plugin's and component's node_modules, and mixed-version clusters during a rolling deploy could ping-pong reinstalls. Only the major version segment is compared now; stored metadata keeps the full version, so no migration is needed.

    • Node.js upgraded to 24.19.0 — Base images across the engine, auth-hub, quota, frontend and Backoffice move from 24.6.0 to 24.19.0, and engines.node is raised to >=24.19.0. Beyond being the latest 24.x LTS, this fixes outbound TLS failures (UNABLE_TO_GET_ISSUER_CERT_LOCALLY) to endpoints whose certificate chains to Let's Encrypt's ISRG Root YR, which is absent from 24.6.0's compiled-in root CA store.

    • Fixed slow webhook retry lookups under load — The { url: 1 } index on the webhookRetries collection could serve the webhook circuit-breaker's half-open probe filter but not its due sort, forcing an in-memory sort over every retry recorded for that URL. It is replaced by a compound { url: 1, due: 1 } index, which serves both and — being a prefix superset — still covers every existing url-only query. The obsolete index is dropped automatically on startup, so no manual migration is required.

    • API warning alerts are no longer shown to non-admin users — Neither the

    6.1.4

    2025-05-05

    • Fixes a bug from 6.1.3 when a certain type of flow errors are not visible in the UI.

    • select-button-group input type can display larger content.

    • Links to docs in the Backoffice ACL section fixed.

    5.2.6

    New in 5.2.6

    • Backoffice Insights page - To Date fixed to include the last day of the month.

    • date-time picker fixed, when the selected date was cleared, it ended in an invalid state.

    • context.service functions (loadState, stateSet, …) are available in the Flow design phase (not only during the flow runtime), so they can be used in the auxiliary components called from component.json (using the source “static calls”).

    • If an OAuth2 refreshAccessToken function returns 400, 401, or 403, the token is marked as invalid (and no more attempts to refresh it will be executed).

    • Improved logs of Axios exceptions (size reduced).

    • The security of the component authentication pages (/auth-service and /auth-pre) have been improved by changing how the configuration was passed onto the pages. Previously, configuration was passed via URL query parameters. Newly, this configuration is rendered directly by the backend (Appmixer engine) making it impossible for external malicious injections.

    5.2.5

    New in 5.2.5

    • date-time picker fixed, when the selected date was cleared, it ended in an invalid state.

    • context.service functions (loadState, stateSet, …) are available in the Flow design phase (not only during the flow runtime), so they can be used in the auxiliary components called from component.json (using the source “static calls”).

    • If an OAuth2 refreshAccessToken function returns 400, 401, or 403, the token is marked as invalid (and no more attempts to refresh it will be executed).

    • Improved logs of Axios exceptions (size reduced).

    • The security of the component authentication pages (/auth-service and /auth-pre) has been improved by changing how the configuration was passed onto the pages. Previously, configuration was passed via URL query parameters. Newly, this configuration is rendered directly by the backend (Appmixer engine) making it impossible for external malicious injections.

    5.1.2

    New in 5.1.2

    • Fix for manifest markers in the component.json (https://docs.appmixer.com/appmixer/component-definition/manifest/marker).

    • Fix for checking the component’s output port message size. The output port message size is limited to 15MB, in certain cases, an input message for the component and its size was incorrectly covered in the limit, too.

    • Fixed bug in the context.loadOutputSchemaProperties() introduced in 5.1.1

    • Fixed a bug in clearing node cache before requiring component’s codes into memory.

    • Fix for UI/SDK code freeze in case of a large number of links/connectors in certain scenarios.

    • PUT /flows/{flowId} API endpoint was optimized and significantly improved performance (especially with large flows) by avoiding variables scopes check with each update.

    5.0.2

    New in 5.0.2

    • Fix for GET /variables under certain conditions resulting in - 500 - Maximum call stack size exceeded.

    • Wizard variables of descendants not reloaded when account changes:

    • Wizard Fieldset inputs did not work with variables.

    • Validation in Integrations Wizard did not work properly when using variables.

    6.4.6

    2026-06-16

    Features

    • Performance optimizations for the variables, auth, and coordinator APIs — A range of optimizations to component loading and execution:

      • Constructor module loading now avoids excessive filesystem exists checks and eliminates redundant require.resolve() calls, with improved findModulePath/require-cache handling.

      • The Loader now uses streaming zip extraction (yauzl) with batched directory creation instead of AdmZip, and no longer skips writing regular files on component re-upload.

      • The Variables Synchronizer can now batch sync() per component instead of per partial. This behavior is configurable via VARIABLES_SYNCHRONIZER_ENABLED (default off).

    • Fixed module cache miss that reloaded components from the database on every request — A caching bug caused components to be re-downloaded from the database on each request (most visibly on /auth); they are now served from cache, significantly improving response times.

    • Fixed OAuth account testing with custom credentials — Testing an account (POST /accounts/:id/test) that uses custom, user-level OAuth credentials now correctly resolves those credentials instead of falling through to missing system credentials. Auth module creation failures are now re-thrown during the auth callback so the user sees a real error instead of a false success, and componentIds is handled as both a string and an array.

    5.1.3

    New in 5.1.3

    • Fix for Googlepicker. It did not open if it was used in an Integration Wizard (bug introduced in 5.1.1).

    • Modifiers are now applied in static calls - source (in the flow design phase). An example:

    Consider a component with a dynamic input port inspector. The inspector definition is returned by calling the SourceWithModifiers component and sending it a few parameters. The entityType parameter is taken from properties and passed to the input in port of the source component. Based on the value of the user provided property entityType, the SourceWithModifiers component returns different input fields of the inspector. Now assume that the entityType value is defined with a variable and even a modifier can be applied to it.

    In this example, the entityType is taken from the flow’s custom fields (and a modifier JSONPath is applied to it). In the previous versions of Appmixer the value propagated to the source component (SourceWithModifiers in this case) was not resolved, i.e. the potential variables and modifiers applied to the propagated parameter where not correctly evaluated when they reached the source component (SourceWithModifiers).

    6.5.2

    2026-08-28

    • Copilot can be enabled for selected user scopes only — COPILOT_ENABLED_SCOPES (copilot.enabledScopes) is a comma-separated allow-list of the user scopes Copilot is available to. It lives in the live, DB-backed Copilot configuration, so an admin changes it from the Backoffice without restarting a pod. Unset or empty means enabled for everyone, so the upgrade is a no-op until the list is set.

    • Prompt caching on the direct Anthropic provider path — Copilot's stable prompt prefix (its tool definitions and roughly 20k tokens of system prompt) and its per-step conversation prefix are now marked with ephemeral cache_control breakpoints, so every agent step after the first reads them from the provider cache instead of re-processing them on each of up to

    6.0.4

    • messageId added to the context.getWebhookUrl(). This fixes scenarios such as the one shown in the picture below. In this scenario, a Continuity Scope webhook component (RequestApprovalEmail) is used behind Each component. All messages coming from the Each component have the same correlationId, but a different messageId. When a webhook arrives to the RequestApprovalEmail, the messageId and correlationId is used to find the exact scope and the flow can continue to the SendChannelMessage with the correct context (data/variables).

    • Admins can now see the sharedWith

    6.3.0

    2026-01-20

    • Introduced custom OAuth support, allowing users to create and manage named OAuth configurations that can be reused across multiple accounts and components within the same service.

    • Introduced custom OAuth configuration management UI with support for creating, updating, and deleting OAuth app configurations.

    1.2.1

    2026-03-24

    App version: 6.3.11

    • Self-hosted ECR setup simplified — The chart now includes a CronJob and an init Job that automatically create and refresh the ECR registry secret when selfhosted.enabled: true. Previously, users had to manually create ServiceAccount, Role, RoleBinding, CronJob, and related YAML. Now, only a single aws-ecr-credentials Secret needs to be created manually; everything else is managed by the chart.

    • ECR secret init Job — A new ecr-secret-init-job.yaml

    5.2

    • New optional query parameter for webhooks API - enqueueOnly. If true then the webhook will be enqueued and 202 returned immediately to the caller.

    • Possibility to override redirect/callbackUrl per service.

    5.0.1

    • Node version updated to 18.16.1 and the OS switched from Linux Alpine to Debian which resolved the DNS issues for some Salesforce sandbox URLs.

    • Fix for GET /files?filter=userId:XYZ and GET /files/count?filter=userId:XYZ. These endpoints did not return correct results if the userId was specified in the filter and the user was not admin.

    • Filepicker input type shows only files created by the signed-in user. Before this, the admin users saw all the files there, but when a file that does not belong to the owner (admin) is used in a flow, the component working with that file returns an error.

    5.1

    • Appmixer is now fully compatible with AWS managed services - tested with OpenSearch 2.7, DocumentDB 4.0.0, Amazon MQ 3.8.34, Amazon ElastiCache 6.2.6 and logstash 7.6.12 with OpenSearch plugin

    • Optional token (API keys, OAuth tokens, …) encryption (self-managed Appmixer only).

    • User files (files created in flows, or through the /files API) can be stored in MinIO/S3 storage (self-managed Appmixer only).

    5.1.1

    • Possibility to secure the create user (POST /user) API endpoint. This helps prevent external API calls (possibly malicious) from creating users without any authentication. Newly, a user scope can be defined using the API_USER_CREATE_SCOPE system variable which will be required when calling the POST /user endpoint. Typically, an “admin” scope is set so that only admin users can create new user accounts. See for more information.

    • New connector context function context.loadOutputSchemaProperties(), which is now used by the Each connector (Controls module version 1.4.4). This fixes a few issues:

    6.4.3

    2026-05-20

    • Security: Upgraded axios to 1.16.1 (CVE-2026-42044) — Bumped axios across all packages (engine, UI SDK, backoffice) to address a critical Prototype Pollution vulnerability (CVSS 9.1).

    • Removed read-write locks (RWLocks) from the component factory and uploader. The locks were no longer necessary and could cause contention under concurrent component operations.

    6.1.8

    2025-07-29

    • Added userId query parameter to the GET /stats/component-usage admin API, allowing filtering of component usage statistics for a specific user.

    • Fixed an issue that caused the counter to remain stuck in Redis under certain conditions.

    5.2.1

    • A memory issue is fixed. In some cases, the memory usage was going up and the engine had to be restarted regularly. This was caused by an upgrade (in Appmixer 5) of one of the libraries (Ajv) and the way that the library caches JSON schemas.

    • Storage.OnItem[Added|Removed|Updated] connectors had a critical bug preventing normal operation that was fixed.

    • A little change in the way the engine looks for a compatible connector version. This only applies to connectors located in the file system (not published/updated through the API/CLI/Backoffice). Before this change, when upgrading to a newer version of Appmixer (to a newer Docker image with connectors), you could have seen an error: &#xNAN;

    API Version Mismatch
    nor the
    API Validation Failure
    toast is raised for non-admins, who cannot act on a deployment concern. Both still reach the browser console and the SDK's
    api.on('warning')
    event for every consumer.

    Bug Fixes

    Bug Fixes

    Bug Fixes

    Context Quota
    Added includes parameter for logs query API, allowing retrieval of only specified fields for more efficient log data access.
  • Fixed missing session parameter in GridFS transaction operations, ensuring proper transaction context for all database operations.

  • Changed LOG_COMPONENT_INPUT_MESSAGES default value to reduce logging overhead and improve performance.

  • Updated New Relic agent to version 13.6.6 for improved monitoring capabilities.

  • Enhanced authentication UI with new icon presets (plug, key, plus) and improved visual hierarchy for connection options.

  • Fixed the missing Forgot Password button on the login screen.

  • Fixed theme popover label background color for improved visual consistency.

  • New Features

    Custom OAuth in Flow Designer

    Other improvements and fixes

    No compatible version of [component type] found for requested version [version].
    This happened if that newer Docker image contained a newer version of a connector that was not stored in DB (not published/updated through the API/CLI/Backoffice).

    New in 5.2.1

    COPILOT_MAX_TURNS
    steps. This cuts the input price of the cached prefix to about a tenth and substantially reduces time to first token. Controlled by
    COPILOT_PROMPT_CACHING
    (default
    true
    , live getter, Backoffice-editable), and cache effectiveness is logged per step and per turn. Direct Anthropic (and Anthropic-compatible) endpoints only — the Appmixer Cloud proxy path is unaffected.
  • Per-user AI context — The user object gains an optional aiContext string, so embedded customers provisioning virtual users through the admin API can attach context for Copilot: the user's timezone, or facts about the group or property that a single virtual user represents. Copilot injects it into its system prompt as a fenced, semi-trusted User AI Context section, framed exactly like the instance-level COPILOT_CUSTOM_CONTEXT — it can inform answers but cannot override Copilot's core role, its safety rules or its flow-building rules. The field is strictly optional: a user without it produces a byte-identical prompt to before.

    • Setting it via POST /user requires the admin scope, because that route is reachable unauthenticated in a default deployment and the value reaches the system prompt. PUT /users/{userId} is already admin-scoped.

    • USER_AI_CONTEXT_MAX_LENGTH (default 8000) caps the length. It is read at validation time, so it is tunable through the config API and can differ per tenant without a restart.

    • Read it back through GET /user or GET /users/{userId}.

    • Whitespace is trimmed from configuration writes — A configuration key or value set with surrounding whitespace through the Backoffice was stored verbatim, and the key was the damaging half: a padded key matches no entry in the configuration definitions, so the document was written under a type nothing ever reads and the setting was silently ignored while the Backoffice listed it as set. A padded value was forwarded to its consumer intact, where a trailing space on an API key comes back as an opaque 401. POST /config now trims both key and value and DELETE /config/{key} trims the key param, before any validator sees them; a key that is blank once trimmed is rejected with a 400. Already-stored values and environment variables are deliberately left alone.

    • A component type that cannot be resolved is now a validation error instead of a 500 — A flow containing a component whose type does not resolve — invented, malformed, or missing its action — crashed GET /flows/{flowId}/validate. That crash also silently disabled Copilot's save-and-validate loop, which is how flows with invalid variables could reach the Designer looking finished, and it broke the Designer's validation for such flows. The endpoint now reports each broken shape on the component itself with descriptorPath: "type": an unresolvable four-segment type as unknownComponentType ("could not be found" — the type may simply not be loadable on that node), a malformed type with the expected vendor.service.module.Component format, and a three-segment type as missingManifest, which covers both selecting an action and replacing an invented type. Components downstream of the broken one degrade to ordinary invalid-variable errors rather than taking the request down.

    • Fixed log records being dropped by Elasticsearch when they carried an _id field — Log extras are flattened into the top level of the log record, and Elasticsearch reserves leading-underscore keys there for its own metadata, so any log call passing _id had its whole document rejected with a 400 and never indexed. The MinIO GridFS migrator was doing exactly that in its Skipping file with missing metadata warning (which fires on every plugin start for interrupted uploads), so those warnings were lost. The field has been renamed, and log record creation now moves any reserved key under a prefixed name (_id → extra_id) instead of letting the record be dropped — this also protects log calls in customer-written system plugins.

    • Fixed variable modifiers being lost on key-value rows — In the key-value style component fields, only one row's variable modifiers survived editing: the shared modifier map was bound through a single pass-through, so entering a variable with a modifier in one row could drop or overwrite the modifiers recorded for the others. A row that lost its modifier rendered as an unopenable red pill showing a bare identifier, and the loss was persisted into the flow. Each row now keeps its own modifiers through the whole edit chain, removing a row takes only its own targets out of the map, and opening an already-affected field no longer writes the damage in deeper.

    • The canvas now says when Copilot has locked the flow — The Designer makes the whole canvas read-only while Copilot processes a request, but on a flow that already had steps nothing on screen said so: clicks and drags simply did nothing. Copilot now takes its place in the same badge slot at the top of the canvas that already announces a version preview or a running test, and clicking the badge opens the Copilot panel the run belongs to. The header's stage actions that a request disables — Test flow, Edit/Exit Draft, Publish Changes and Activate/Deactivate — now carry a tooltip explaining why, and the "add a step" chip goes read-only along with the stencil it opens.

    • The canvas is realigned after a Copilot turn that moved its steps — Flows Copilot built arrived with crossing links and overlapping steps once they had several branches or more than a handful of components, because the server-side layout pass positions by connected pairs alone and is blind to which out-port a connection leaves from. The Designer now runs its own port-aware align command at the end of a turn, on exactly the turns where the backend relaid the flow — a turn that only changed configs, labels or ports leaves the user's own arrangement untouched. The realignment waits until the run has released the canvas and the flow has finished loading, is skipped after a Stop (where a backend write may still be in flight), and is held rather than lost while the browser tab is hidden.

    • The toolbar configuration now decides whether the built-in logs panel exists — A host that leaves 'logs' out of config.options.toolbar because it renders logs in its own UI could not actually turn the panel off: only the View Logs button honoured the setting, while the toolbar's chevron toggle, the auto-open on a running flow and the test run's "View logs" links all opened the same panel anyway. Availability is now decided in one place that every open goes through, and the test-run links are hidden rather than left pointing at a panel that will not open. Closing the panel is never gated, and the chevron stays visible while a panel is open so a panel opened before the configuration changed can still be closed.

    New Features

    AI Copilot

    Bug Fixes

    A toolbar configured without a logs button now also suppresses config.options.autoOpenLogs. If your embedded application relies on the logs panel opening automatically, keep a logs button in config.options.toolbar.

    runs on every Helm install/upgrade to ensure the ECR registry secret exists immediately, eliminating the need to manually trigger the first CronJob run.
  • RBAC for ECR token refresher — ServiceAccount (ecr-token-refresher), Role (ecr-secret-manager), and RoleBinding are now created automatically by the chart when selfhosted.enabled: true.

    • New config variables — Added support for TENANT_ID, MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_REGION, MINIO_SECRET_KEY, MINIO_SESSION_TOKEN, MINIO_BUCKET_NAME, MINIO_FOLDER_NAME, LOG_STDOUT_ONLY, REDIS_SENTINELS, REDIS_MODE, and REDIS_SENTINEL_MASTER_NAME in the appmixer-config ConfigMap.

    • Redis URI handling — Removed hardcoded REDIS_URI environment variable from engine-api, engine-worker, and quota deployments. The Redis URI is now derived from the helpers template, with the default standalone host corrected from redis to redis-master.

    • Redis Sentinel defaults — REDIS_SENTINELS defaults to the in-cluster Sentinel endpoint, REDIS_MODE is automatically set to replica or standalone based on redis.sentinel.enabled, and REDIS_SENTINEL_MASTER_NAME defaults to the configured redis.sentinel.masterSet.

    • MongoDB image tag pinned — Updated MongoDB image tag from 8.0.13 to 8.0.13-debian-12-r0 for reproducible builds.

    • Redis image tag comments — Added comments noting that Redis and Redis Sentinel use latest tags with no pinnable version available.

    • Expose method typo fix — Corrected routes to route (OpenShift) in the expose.method documentation.

    • Admin password retrieval updated — The secret name for retrieving auto-generated admin passwords changed from appmixer-secrets to appmixer-helm-user-init, and the key from ADMIN_PASSWORD to password.

    Automated ECR Authentication

    Configuration Changes

    Other Changes

    When Each connector was used in a loop in the flow, it could cause a crash of an Appmixer engine.

  • Add variable discovery for nested props:

  • Given the following output schema, when applying Each on "main" it does show the properties of the items in the next step (the next connected connector) in the flow, but applying Each on "sub.subitems" does not display the properties nor Index/Value, as if it doesn't recognize it as an array at all.

    • Fixed a bug where the Appmixer SDK was slow with a large connector definition.

    • Fixed a regression in the DELETE /files API endpoint (bug introduced in 5.1.0).

    • Fixed a problem with a wrong connector token that was cached. If connector A used another auxiliary connector B in the component.json (typically connector A needs a list of dynamic items to be displayed in the UI and it uses a different connector to populate such a list) and the scope of the tokens for connector A and B - defined in the component.json - was different, then the engine could store the token for B in cache for the connector A. When such a flow was started, it resulted in an error, the cached token for B did not work when the connector A was called with a new message.

    • Fixed a bug in the Integration Wizard, creating an account did not work if the authentication file (auth.js) was on the module ([vendor]/[service]/[module]/auth.js) level and not the service ([vendor]/[service]/auth.js) level.

    New in 5.1.1

    https://docs.appmixer.com/appmixer/tutorials/appmixer-virtual-users
       "outPorts": [
            {
                "name": "out",
                "schema": {
                    "type": "object",
                    "properties": {
                        "main": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "prop": { 
                                        "type": "string", "title": "prop" 
                                    }
                                }
                            }
                        },
                        "sub": {
                            "title": "Sub",
                            "type": "object",
                            "properties": {
                                "subitems": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "subprop": { 
                                                "type": "string", 
                                                "title": "subprop" 
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        ]
    property of a flow. In the previous versions, the
    sharedWith
    property was available only to the owner of the flow. Now, a user with
    admin
    scope can see/edit that property too. This allows different admin users to manage Integration templates and mainly who are the templates published to.
  • Enable customFilter override in the appmixer.ui.FlowManager widget:

    https://docs.appmixer.com/appmixer-sdk/ui-and-widgets/flow-manager

    • New SDK method appmixer.api.authenticateWithEmailAndPassword(email, password)

      https://docs.appmixer.com/appmixer-sdk/api-module#api.authenticatewithemailandpassword

    • The POST /variables API endpoint did not work correctly for components that had outPorts defined completely using schema.

      https://docs.appmixer.com/appmixer/building-connectors/manifest/outports

    What's new

    Fix - updating a module through the API did not update shared service level files.

  • Fix - inspector groups were ignored in a dynamically generated inspector (through source call in component.json).

  • New context function context.evalJavaScript() which allows the connector to execute untrusted code. Example https://docs.appmixer.com/appmixer/v/5.2/component-definition/behaviour#context.evaljavascript-code-jsondata

  • Fix for the ADD USER RULES FOR INSTALLED CONNECTORS button in the Backoffice, it added an extra dot in the rule(s).

  • New in 5.2.0

    https://docs.appmixer.com/appmixer/v/5.2/api/flows
  • Two fixes for the new Output Port JSON Scheme definition introduced in 5.0.0.

    • Title not showing in the Inspector’s variables picker for attributes of nested objects.

    • Variables with iterable ancestors showing in Inspector’s variables picker.

  • Fix for Wizard’s input field - it was possible to get into an invalid state.

  • Authentication popup handling improved.

  • When a service (appmixer:microsoft for example) contained two plugins, it was possible that while loading such a plugin under a newer Node version (node_modules being re-installed), the plugin files could get corrupted.

  • Inspector Field max width overflow.

  • New in 5.0.1

    Configurable public files route. https://docs.appmixer.com/appmixer/v/5.1/appmixer-backoffice/system-configurationhttps://docs.appmixer.com/appmixer/v/5.1/appmixer-backoffice/public-files

    • Added DB index to fs.files.metadata.fileType.

    • APPMIXER_API_URL configuration support suffix. In the previous version, it was not possible to set the URL to https://acme.com/suffix, the suffix was removed.

    • OneDrive and GDrive picker fixes (did not work properly, when connected account was changed).

    • New context.job.lock() function in the component plugin contex (used in the latest Task module 1.0.2, instead of context.lock()).

    New in 5.1.0

    https://docs.appmixer.com/appmixer/v/5.1/appmixer-self-managed/configuration#token-encryption
    https://docs.appmixer.com/appmixer/v/5.1/appmixer-self-managed/system-plugins#minio-s3

    6.5.1

    2026-08-24

    New Features

    AI Copilot

    • Copilot now persists the flow while it builds it — Instead of assembling a flow descriptor and submitting it only at the end, Copilot saves the flow to the database as it goes and runs a save → validate → fix loop against the stored flow. The flow is an ordinary flow from the first save, not a draft, and later conversation turns update that same flow. Persistence goes through the platform's own API, so ACL, storage quotas, flow and component limits, payload schema validation and audit all apply exactly as they do to a flow built by hand. Running flows are never modified — the flow must be stopped first. Set INTERNAL_API_URL to the in-cluster engine URL so these self-calls do not route through the external load balancer; it falls back to APPMIXER_API_URL.

    • Copilot connects accounts and reads live variables while building — Copilot can connect a user's available account to a component and load real variable values during construction, rather than leaving accounts unconnected and variables unresolved until the user opens the flow. Sizing is bounded by COPILOT_VARIABLES_MAX_* limits.

    • Copilot is configurable from the Backoffice, with hot reload — The Copilot system plugin's configuration moves into the cluster configuration, editable via the Backoffice and applied without restarting a pod. This covers the LLM endpoint (COPILOT_LLM_URL), the customer prompt extensions below, and the variable size caps.

    • Custom context and tone of response — Two optional settings extend the Copilot system prompt: COPILOT_CUSTOM_CONTEXT for customer-specific use cases, connectors and data specifics, and COPILOT_TONE_OF_RESPONSE for the tone, vocabulary and register of replies. Both are unset by default. Values are injected as delimited, lower-authority operator configuration — they can refine behaviour and tone but cannot override Copilot's core role, its safety rules or its flow-building rules, nor reveal the system prompt.

    • aiDescription for connectors and components — component.json, module and service manifests accept an optional aiDescription field (up to 1000 characters) written for the model rather than for the Designer UI, where description is deliberately kept short. Copilot's discovery tools prefer it and fall back to description, so connectors without the field behave exactly as before. Useful for steering Copilot on custom connectors:

    • Dangling variable references are rejected before a flow is saved — Copilot validates the descriptor's variable references before anything is persisted: every {{{token}}} in a lambda must have a matching entry in that field's modifiers group, and a raw $.… path used inside braces or as plain lambda text is rejected with the exact correction to make. Legacy components carrying no modifiers object are only flagged when a reference is provably broken, so a Designer-built component re-submitted during an edit can never fail a save. Rejecting before persisting leaves the last valid save intact.

    • Opt-in account auto-connection on flow save and clone — A new autoConnectAccounts parameter connects the user's available account after a flow is saved or cloned. Copilot-built flows use it so they preselect an account exactly as manual flow building does, including when the user has more than one account available.

    • Reworked navigation menu — The main navigation is now a flyout in the collapsed rail, keeps a single group open at a time, and is visually unified with the workspace switcher.

    • Copilot: one request owns the flow it is changing — Concurrent Copilot requests could interleave writes to the same flow. A run is now owned by the Designer for its duration: the canvas is locked while a request is in flight, the target flow is nominated before the prompt is sent, the backend writes only that flow and only one write at a time, and the run is reconciled at its end rather than mid-stream. The composer explains why it is blocked instead of silently refusing input, a request survives the panel being closed, and the History button is visibly disabled while Copilot writes.

    • Copilot: a refused save is no longer hidden — The Designer now surfaces a save that Copilot refused instead of swallowing it, no longer re-saves a flow that Copilot has already persisted, and reports the backend's mid-turn write on every handoff route. The pre-Copilot snapshot is taken in the plugin and reported to the client, so it is no longer captured too late.

    • Copilot: an empty canvas is no longer versioned before the first write

    • Node.js upgraded to 24.19.0 — Base images across the engine, frontend and Backoffice move to Node.js 24.19.0. This also fixes outbound TLS failures (UNABLE_TO_GET_ISSUER_CERT_LOCALLY) to endpoints whose certificate chains to Let's Encrypt's ISRG Root YR, which is absent from the older image's compiled-in root CA store.

    • node_modules is reinstalled only on a Node.js major version change — Previously every patch or minor Node.js image bump triggered a cluster-wide npm install and a GridFS re-upload of every plugin's and component's node_modules. Only the major version segment is compared now, since that is what native addon ABI compatibility depends on.

    6.2.0

    2025-10-09

    Flow Designer Improvements

    Add Notes on the canvas

    You can add notes on the Designer canvas - just right click and select "Add new note". They support markdown, can be dragged around and resized. You can even place notes within other notes.

    Limit access to Modifiers and Variables in the Wizard Builder

    Ability to limit access to modifiers and variables in the Wizard Builder. This can be useful when you want to create Integration Templates and you want to prevent users from adding or removing variables or from using modifiers (our built-in data transformer functions) in the Template Wizard.

    Required fields and validations

    Validation messages shown for fields in the inspector panel (where you configure connectors) are transformed into a tooltip, which is less instrusive. Required fields are now clearly marked with an asterisk and a red higlight of the field outline. These improvements also apply to the interface of the Template Wizard - the form used to configure Integration Templates in the embedded marketplace.

    Zoom in and out

    You can now Ctrl/Cmd + scroll or use touchpad gestures to zoom in and out on the canvas.

    Clear app naming

    All components used on the canvas have the connector (app) name included for clarity.

    When a flow that contains connectors that are no longer available (were removed, or the ACL changed) is displayed, new placeholder connectors are shown in the UI instead of the unavailable connectors. Before, the unavailable connectors were just removed from the flow.

    The Appmixer SDK implements Trusted Types now, according to the , to secure DOM injection sinks.

    You can now configure SSO with OIDC or SAML protocols to manage access to Appmixer Studio. Read more about how to set up SSO for your organization:

    Audit logs capture all actions taken in the Appmixer Studio - creating, updating or deleting flows; installing or removing connectors; publishing templates and user logins - everything is logged. Access Audit Logs in the System settings in the Backoffice of Appmixer Studio.

    • Upgrade from Node 18 to Node 24.6.

    • Fully compatible with Mongo 8, ElasticSearch 9, Rabbit 3.13, and Redis 7.

    • The Engine can be started as an API node or as a Worker node. This allows you to create a separate cluster of API nodes and another cluster of Worker nodes.

    • Implemented local DNS cache for the Quota server requests.

    Uses package-lock.json if present in the module.zip file during the upload.

  • The PUT /users/{userId} API supports the email change https://docs.appmixer.com/6.0/6.2/api/user#update-user

  • Logs created by context.log() are sliced to limit the maximum size of a log.

  • Support Variables call without authentication https://docs.appmixer.com/6.0/6.2/building-connectors/manifest/inports#silentauth-true

  • Added support for {{componentId}} scope in the quota definition in component.json https://docs.appmixer.com/6.0/6.2/building-connectors/manifest/quota#quota.scope

  • Placeholder components

    Appmixer SDK improvements

    Security and User Management

    SSO (Single Sign-On)

    Note: SSO is only available on the Enterprise plan.

    Audit Logs

    Note: Audit Logs are only available on the Enterprise plan.

    Engine and Technical Improvements

    W3C specification
    https://docs.appmixer.com/appmixer-backoffice/system-configuration#configuring-single-sign-on
    https://docs.appmixer.com/appmixer-self-managed/configuration#api-and-worker-nodes
    — Starting a Copilot conversation on a blank canvas created a spurious flow version.
  • Copilot: an unvalidated flow is never shipped silently — When the validation call failed after a save round, the loop previously told the model to proceed, and the rest of the build ran with validation effectively off — which is how flows with invalid variables could reach the Designer looking finished. A failed validation is now retried once where a retry can plausibly succeed (5xx and network failures; deterministic 4xx failures fail the round immediately), and when validation stays unavailable the state is remembered, the user is warned once by the platform, and submitFlow reports a validationUnavailable flag on the flow-result event so clients can render a proper localizable warning. Existing clients are unaffected.

  • Designer stays alive when a template field hits a composite validation error — A composite validation error on a template field could take down the Designer.

  • Template field paths survive link reroutes — Template field paths are now carried across a link reroute instead of being lost, and the collision dedupe no longer removes wizard fields that name no input.

  • A supplied localization key is honoured whatever its value — Localization overrides passed through appmixer.set('strings', …), the instance options, or a widget's l10n factory option were resolved by truthiness, so a key deliberately set to an empty string, 0 or false was treated as absent and the shipped English default was rendered instead. Presence now decides: a key that is absent falls back to the default, and a key that is present overrides it whatever its value or type, with null and undefined normalized to an empty string and other non-strings converted rather than ignored. All three entry points behave identically.

  • Fixed only one action being removed per job run — The ActionsController queue event listener activated only once, so a single action was removed per job instead of all of them.

  • Flows

    Navigation

    Bug Fixes

    Performance & Technical Improvements

    {
      "description": "Creates a customer in Salesforce.",
      "aiDescription": "Use this component when the user wants to create a new Salesforce Account or Contact. It does not update existing records."
    }

    6.4.0

    2026-04-22

    New Features

    Automation Hub - New UI widget

    Simplified Embedding with an all-in-one widget

    New embeddable widget to offer automations to your users (formerly the integration marketplace). This simplified widget combines all automation hub functionality with easy configuration options, widget events, and streamlined embed code generation.

    Embed your own Hub to allow users to:

    • Browse and start Automations pre-built by your team

    • Customize pre-built Automations

    • Manage Logs and Accounts for their Automations

    Your team can easily manage the Hub:

    • Organize automations into categories (shown as tabs in the Hub)

    • Adjust the look and feel and instantly preview the Hub

    • Monitor health and statistics of Hub Automations

    • Define who can access specific automations

    .

    Automation Hub Categories

    Organize your integration templates using categories in the hub widget. Create and manage categories through the new Categories API, assign templates to multiple categories, and use them to create custom tabs and filters in your embedded automation hub. Categories are system-wide resources with admin-only management.

    Automation Hub Settings & Analytics

    Configure and customize your Automation Hub directly in Studio with the new Hub Settings page. Access theme settings, branding options, and generate embed code. The new Analytics Dashboard provides insights into template adoption, usage metrics, user engagement data, and performance through dedicated API endpoints.

    Shareable Links with Email Allow List

    Automation Hub now supports shareable links with OTP (One-Time Password) authentication and configurable email allow lists. This allows you to share your automation hub with specific users or domains while maintaining security through virtual user management and TTL configuration. Configure sharing options directly in Hub Settings, including regex patterns and wildcard domains for email validation.

    Introducing User Groups (Workspaces) - a major new collaboration system that enables shared resources and team collaboration. Create workspaces, add members, share flows, and integrations across your team. Manage groups through the new User Groups API, Studio UI workspace switcher, and Backoffice admin interface.

    Template Instance Updates

    Edit and update running integration template instances without stopping them. The new draft workflow allows you to make changes to live integrations while they continue processing data, then publish updates when ready.

    Account Sharing & Variable Restrictions

    Share connector accounts from templates to instances. Restrict which variables are exposed in the Template Wizard with a new checkbox option for component selection and validation.

    Integration Instance Drafts

    Work with integration drafts to create editable versions of running integrations without affecting the original. Make changes to integration instances while the original continues to run.

    Execution-Based Logs

    Completely redesigned the Logs interface with execution-based viewing. Browse logs by execution, view component inputs and outputs, use correlation IDs for tracking across components, and toggle between simplified and detailed views. All component logs now include correlation IDs and message IDs for comprehensive debugging.

    SDK Event System Modernization

    Support for custom event handlers: The SDK event system has been modernized to support custom event handlers. Events now use a new contract with .data and .next() pattern, allowing custom handlers while maintaining backward compatibility. Note that typeof checks now return 'object' instead of primitive types, and strict equality checks (===) no longer work with primitives.

    Designer Loading Event

    New loading-finished event in the Designer widget allows you to trigger actions when the designer has fully loaded and is ready for interaction.

    Dashboard & Navigation Redesign

    Refreshed dashboard design with reorganized navigation menu in the Build space. New Templates section layout and Flows section redesign improve the overall user experience and make it easier to find and manage your flows and automation templates.

    New panel dedicated to the Automation Hub with basic steps (can be minimized) and Preview and Share buttons.

    Automatic Flow Naming

    Flows are now automatically named based on the components they contain, making it easier to identify flows at a glance without manual naming.

    Wizard Builder Enhancements

    • Custom placeholder options for form fields in wizard builder

    • Custom tooltip support with auto-hide for empty tooltips

    • Drag and drop field reordering in wizard builder

    • Magic wand replaced with a checkbox for clearer UX when selecting fields for template wizard

    Additional UI Improvements

    • Published/Unpublished filter in Automation Templates section

    • Manage Categories option in the context menu of templates

    • Updated explainer panels explaining the Automation Hub and Templates

    • Confirmation dialog for revoking connections

    Comprehensive resource management system for controlling storage and flow limits. per user or scope, set capacity thresholds.

    • Waiting queues migrated from RabbitMQ to MongoDB for better performance

    • Redesigned the retry mechanism with improved

    • Default maximum message size (LIMIT_MESSAGE_MAX_BYTES) lowered from 15MB to 2MB.

    • RabbitMQ 4.x compatibility confirmed and tested

    API & Security Improvements

    • Rate limiting for the

    • Improved admin user validation in the admin API with token revocation

    • Dynamic CORS origin reflection support

    • Correlation IDs in all ERROR logs for better debugging

    Configuration

    • support scope-specific configuration

    5

    Explore the new features in version 5.0 that make automation easier once again for your customers and internal teams.

    • The Wizard configuration now offers enhanced flexibility, allowing the inclusion of the following new sections (as opposed to just inspector fields which was the case in the previous versions of Appmixer):

    • Account: allows you to add an account field manually. Previously, account fields were automatically added which made it easier to configure wizards but did not allow you to: add different account sections for different components (imagine you have a flow with 2 GDrive components to upload files. Previously, you could only create a wizard that uploads to one GDrive account. Newly, you can add 2 account sections allowing the end-user to upload files to two different GDrive accounts.

    6.1.3

    2025-04-22

    • New Studio Dashboard tiles.

    • Step selector on output ports.

    Which opens a new Component selector.

    Allow or Disable customization of pre-built templates by end-users

    Dotted grid background on canvas

    All logs can be output to for Vector and other log aggregation tools

    User Groups & Workspaces

    Please note that when upgrading to the 6.4 version, an admin group will be created automatically to allow you and your team to work together on all resources within our application. Use the workplace switcher in the menu to switch between the admin workspace and your personal workspace.

    Integration Template Management

    Logs & Debugging

    SDK & Widget Features

    Please verify your SDK event setup with the upgrade if you are using custom event handlers in your SDK implementation.

    Studio UI Improvements

    Engine & Technical Improvements

    Database Limits & Resource Quotas

    Infrastructure Updates

    Learn more
    Learn more
    Learn more

    Inspector Field: same as before, i.e. adding a field that represents a configuration field in the Inspector.

  • Inspector Fieldset: allows you to add aLL fields of a component automatically. In other words, you don’t need to add fields manually if you want the end-user to configure the entire component. This also applies to dynamic fields that you previously could not add to the Wizard (e.g. fields for adding all column values of the google.spreadsheets.CreateRow component - which are loaded dynamically based on the sheet/worksheet selected by the user and therefore are not known at design time).

  • Custom Field: allows you to add a completely custom field of any type (Text, Textarea, Number, Toggle, Color, Date-time, Select, Multiselect, Select button group) to collect your own custom data from the end-user:

    • You name your field in the “JSON path” input and then refer to it by adding the “Custom Fields” variable in your inspector fields:

    • And applying the “JSON path” modifier to it to select the field that you defined in the Wizard builder:

    • Text: add header/subheader or a paragraph of custom text to your Wizard. This is great to give additional textual information to your end-users.

    • Image: add any custom image to your wizards. This is great to give your end-users additional information about the integration, usually in the form of icons or infographics.

    • Connecting new accounts uses a minimal scope. For example, the appmixer.google.gmail module has several components. The NewEmail component requires Google authentication scopes:

      • "https://mail.google.com/",

      • ""

    And the SendEmail component requires scopes:

    • "https://mail.google.com/",

    • "https://www.googleapis.com/auth/gmail.compose",

    • "https://www.googleapis.com/auth/gmail.send"

    In the previous version of Appmixer, when any Google Gmail component was authenticated, the system joined all the Google Gmail scopes together. That means that even if the user used only NewEmail and not the SendEmail component, the system asked for permission to send emails. Newly, only the scope for the component that is being authenticated will be used. This allows the user to give Appmixer only the permissions it needs to execute the particular flow/integration.

    Note that if the user wants to use multiple components from the same module with different scopes, they will have to authenticate them all, and the system will create multiple tokens with the appropriate scopes.

    • Custom "Connect account" button in Inspector/Wizard: allows you to customize the button to authenticate to components. This is especially useful to make sure that connectors follow the developer guidelines of the vendors of the 3rd party apps, therefore making it easier for your own apps to pass the vendor’s verification procedures.

    • New Object Modifiers:

    • The JSON Path modifier now supports all JSON Path expressions. (https://github.com/dchester/jsonpath)

    • The Share dialog text changed:

    • Error message boxes now contain more information about the reason of the errors:

    • Authentication popups can be fully customized.

    • Upgraded to Node 18 (LTS). This also means that all the components need to be compatible with Node 18.

    • New function context.replaceFileStream(fileId, content). https://docs.appmixer.com/appmixer/v/5.0/component-definition/behaviour#async-context.replacefilestream-fileid-stream

    • New System Configuration options (https://docs.appmixer.com/appmixer/v/5.0/appmixer-backoffice/system-configuration):

      • COMPONENT_RECEIVE_TIMEOUT (defaults to 23 minutes). The receive() function should return within that timeout. Otherwise, an error will be thrown and the input message will be retried.

      • COMPONENT_FACTORY_TIMEOUT (defaults to 5 minutes). If the engine fails to create a component instance within this time, an error will be thrown. The input message will be retried.

      • BROKER_MESSAGE_ACK_TIMEOUT

    • Textarea input type added to the connector authentication popup (Used in MongoDB connector, for example).

    • Output port schema options. Newly, the component output options can be defined by using JSON schema. This is especially useful if your components return arrays and you want your end-users to be able to easily work with the properties of the array item objects. Before, there was no easy way for end-users to know what properties that can point to (e.g. by using the JSON Path modifier) inside array items. With the JSON schema defined for array items, the user can newly easily select the array item properties either in the variables picker of components following the “Each” utility (i.e. when looping over the array items) or in the modifiers (Map, JSON Path, …).

    • Error log from a component is by default limited to 51200 bytes. This can be newly controlled by the LOG_COMPONENT_ERROR_MAX_BYTES system configuration option.

    • GET /auth/flow/{flowId} response object structure has changed. More information in https://docs.appmixer.com/appmixer/v/5.0/migration-from-4.5#get-auth-flow-flowid

    • The GET /flows and GET /flows/count pattern option searches through flowId as well now:

    More in https://docs.appmixer.com/appmixer/v/5.0/api/flows

    • Modules were renamed Connectors.

    • New Actions for Flows. Logs link to the Insights page in the Appmixer Studio with the flow preselected making it possible for admin users to explore the flow logs and therefore provide better customer support for end-users. Metrics will show the number of messages this flow generated.

    • Upgraded to Node 18

    • context.setTimeout() supported

    • context.lock() supported

    Please visit https://docs.appmixer.com for full documentation.

    UI/SDK

    Core

    API

    Backoffice

    CLI

    Documentation

    Added custom fields edit dialog to the Designer.

    Edit Custom Fields directly from the Designer
    • Admin users can see plugin logs in the Insights.

    appmixer.hubspot plugin logs
    • Added search bar for multiselect input type.

    Search bar for multiselect input type
    • Added data types to variables.

    Variables data type.
    • Data types are displayed next to the input fields.

    Host url input expecting a text
    • The Variables picker displays data examples taken from logs. If the flow has already run and generated some messages, that data will be used and displayed in the UI.

    Data examples from a previous flow run
    • Added archive icon to archived files.

    Archived files
    • Authentication dialogs for API Keys and PWD have been redesigned to match the rest of the application.

    • A select input type support has been added to the auth.js files.

    select box in auth.js
    • Added key-value input type.

    • Space is used to split the camel case name of a component.

    • Enhanced Custom Dield selection in the Wizard. If the Integration has Custom Fields defined, the keys will be used for a select box.

    Choosing a custom field in a Wizard
    • Loading sample data to test modifiers.

    Sample data loaded in the Modifiery variable window
    • Added garbage collector for files. By default, the GC will remove files created by flows that are older than 30 days. When upgrading to Appmixer 6.1, a migration script will mark all existing files with archived: true flag. The GC will not remove any files with that archive. So the garbage collection will only apply to files created by flows after the upgrade to 6.1. The Garbage collector is configurable.

    • The default minimum password length increased to 12. Configurable via USER_PASSWORD_MIN_LENGTH.

    • Switch to RabbitMQ's quorum queues to support RabbitMQ in a cluster mode.

    • Request-response queues have a new default TTL set to 24 hours, instead of 10 minutes.

    • A webhook component can accept the method.

    • Added garbage collector for . By default, they are deleted after 3 months.

    • Optimized loading of Component manifests.

    • Support multiple URLs in the WEBHOOK_FLOW_COMPONENT_ERROR system configuration. Comma-separated.

    • New retry backoff strategy for failed . Now there are attempts instead of thirty, but spread over a similar time.

    • If are set on the integration draft/template, they are now published to the integration instances, too.

    • API for stopping a flow supports ?background=true option, which is used in the SDK. Then the Appmixer SDK polls for the results. This prevents timeouts in cases where stopping a flow took too long.

    • New context functions context.archiveFile() and context.saveFileStream(archived: true|false)

    • statistics added to the GET /system/health API.

    • Automatic handling of 429 without relying on Quotas. If a component does not use quota definition (quota server), but the receive() function throws an exception with status code 429, the message will be automatically retried without logging an error.

    • Added to auth.js context.

    • You can add a new user via the Backoffice.

    Adding new user

    What's new in Studio

    Build your first automation AI agent
    Step selector
    Component selector

    What's new in the Engine

    What's new in the Backoffice

    6.5.0

    2026-08-11

    New Features

    New Diagram

    A new, modern diagram for the flow builder canvas: more responsive, with new effects and animations, and new features such as auto-connect and auto-align. It also provides more visual feedback, especially when testing — you can see the status of each component and view its log data directly on the canvas by hovering over it.

    An empty canvas now shows a placeholder that guides you to the two ways of starting a flow: adding a trigger manually or building the flow with AI.

    The new diagram currently only supports the left to right layout. Customers using the top to bottom layout will automatically keep seeing the old diagram. We strongly recommend switching to the new diagram to get all of the new upgrades and features — after switching from top to bottom to left to right, the auto-align button (brush icon) in the lower left toolbar makes it easy to align your flows.

    Flow Versioning & Drafts

    Versioning Panel

    A new side panel in the Designer lets you manage the version history of a flow: save named snapshots, rename, restore, clone a version into a new flow, or delete versions. A status bar above the canvas shows which historical version you are browsing.

    Draft System for Running Flows

    Running flows can now be edited safely through drafts. Clicking Edit on a running flow creates a draft; the live flow keeps running unchanged while you make your changes. Publish Changes merges the draft back into the original flow and automatically creates a version snapshot of the pre-publish state.

    Restore for Running Flows

    Versions can be restored even while a flow is running — the version is restored into a draft (an existing draft is replaced), never directly into the live flow. Restoring a stopped flow without a draft restores it in place and creates an automatic restore point first.

    Flow Versions API

    The new Flow Versions API powers all of the above: version CRUD, draft-aware restore, cloning a version into a new independent flow, version types (manual, autosave, publish, restore-point) and automatic garbage collection with configurable retention.

    Test Flow in the Designer

    A new Test flow button executes a single test run of the current flow without starting it. Per-component progress is streamed live onto the canvas with status badges and connector colours; clicking a component's result badge opens its output, and the results link into the flow logs. Test runs never change the flow's stage and never touch production state.

    Trigger Test Inputs

    Dedicated test-input surfaces for common trigger types: a JSON payload dialog for Webhook triggers (with the option to load a recent live run), a conversational side panel for Chat triggers, and a form dialog for Form triggers rendering the trigger's configured fields.

    Test Data Resolution

    When no test data is supplied, the engine resolves the trigger's output using a fallback chain — the trigger's new test(context) method (real data), past runs from the flow logs, or a sample generated from the output port JSON schema — and reports which data source was used (real, logs, dummy, manual) so the Designer can inform the user.

    Test Runs API & Logs

    The test mechanism is available via a new SSE endpoint (POST /flows/{flowId}/test) with an abort endpoint. All log records produced by a test run — component outputs, context.log() output, static component calls and component errors — are marked with a testRunId, and the Logs API accepts a testRunId filter, so test executions are clearly marked and filterable in the Logs. In the UI, a consistent test-run indicator is shown in the Insights logs (in a dedicated column), the log detail, the Designer flow logs and the executions list.

    Connector developers can implement the new test(context) virtual method to provide real sample data for their triggers.

    • The validation sidebar in the Designer has been replaced with a floating validation panel attached to the Start flow / Test flow buttons.

    • The Flow Validation API now reports components that require authentication but have no connected account — such flows fail validation instead of failing at runtime with "Missing access token".

    • Required fields inside expression-type inspector fields are now validated as well.

    Each step in a flow can now define its own error handling (Designer: cogwheel → Error handling; API: the errorHandling component descriptor property):

    • Automatic retry toggle with a configurable number of retries.

    • On error action once retries are exhausted: route the error to a virtual error output port that can be wired to any downstream component (with error details and flow data available as variables), stop the flow, or store the message as unprocessed (the previous behaviour, still the default).

    A new AI assistant built into the Designer that builds, edits and explains flows from natural language. Copilot designs flows directly on the canvas — selecting connectors, wiring components and filling in parameters — and can read the open flow to modify, remap or explain it. For running flows, Copilot works on a draft.

    • Ships as an engine system plugin (SYSTEM_PLUGINS=copilot) with configurable LLM provider, model and base URL (COPILOT_LLM_URL) — so Copilot can also target an Anthropic-compatible LLM gateway or proxy.

    • Conversation is retained per flow and restored when the panel is reopened; replies render as Markdown.

    • The panel is resizable — drag its edge to change the width, double-click the resize handle to reset it.

    AI Usage Monitoring

    The Insights menu is now split into two sections: Flow activity (the flow execution logs) and AI usage (visible to administrators only). The AI usage dashboard shows Copilot spend: summary cards with an input/output token breakdown, a daily consumption chart, and a paged, searchable per-user / per-group / per-scope cost breakdown with drill-down into individual LLM requests — backed by new admin usage API endpoints.

    The usage API supports optional offset/limit paging with a totalCount in the response (totals always describe the whole reporting window). Cost computation handles multiple models correctly: requests made with models missing from the pricing table report their token counts but add zero cost instead of invalidating the total, and group/scope breakdowns include a per-user breakdown.

    Component behaviour files can now be written in TypeScript. The engine runs them using Node.js native type stripping — no build step required, upload .ts files the same way as .js files.

    Fields in a connector's authentication dialog can now declare a display precondition with the when property (eq/neq operators), so a field is only shown when another field has (or does not have) a specific value — for example, showing an AWS region field only when the Amazon Bedrock provider is selected. Hidden fields are excluded from validation and from the submitted credentials.

    Filters in the Flow Manager and Integrations manager now clearly indicate when they are applied and can easily be reset: each filter renders as a chip with a Group: value label that is highlighted when active, an × button clears a single filter group, and every filter menu offers an All option with a checkmark marking the active choice — in both grid and list layouts.

    Resource Transfer

    New admin endpoint PUT /resources/transfer transfers all resources (flows, accounts, tokens, data stores, files, ...) from a user or group to another user or group as a background task — for example when an employee leaves. Deleting a group that still owns flows is now rejected unless its resources are transferred first (or ?force=true is used).

    Progressive Component Loading

    GET /components accepts a selectors[] query parameter to request multiple component patterns in a single call, and the new GET /flows/{flowId}/components endpoint returns only the manifests used by a flow — so clients can load manifests progressively instead of fetching the full catalogue.

    AI Agent Tools Observability

    The static component call API accepts a new log flag that records the call in the execution logs (component identity, input/output, status, duration, correlation) — used to make AI Agent tool calls observable in the Logs UI.

    Automation Hub tiles now render a flow image in the card body when the flow's image field is set, instead of the connector icon strip.

    Opt-in OpenTelemetry instrumentation for HTTP, MongoDB, Redis and RabbitMQ across all engine services. Enable it by pointing OTEL_EXPORTER_OTLP_ENDPOINT at your collector; individual instrumentations can be toggled with env vars, with zero overhead when disabled.

    • Faster Designer load — the Designer loading sequence was reworked to significantly speed up opening flows.

    • Module preloader — API nodes prebuild the most recently used component module caches right after startup, removing cold-start latency from component and variables endpoints. Shared node_modules are loaded once per component version, and preloading recovers gracefully from individual module failures.

    • Faster GET /variables — eliminated excessive filesystem checks and redundant module resolution in component loading; component synchronization is now enabled by default with batched writes.

    • New diagram polish & performance — fixed theming regressions and dark-mode contrast issues, sped up flow thumbnail capture on larger flows, removed the canvas scrollbars, improved note editing focus behaviour, added fallback icons with proper loading states for connector images, and restored the full zoom-out range and unbounded Zoom to fit so large flows can be brought fully into view.

    • Flow thumbnails — thumbnails are now captured also for flows whose content is written on the server: flows built by AI Copilot, restored versions and published drafts previously ended up with a missing or stale thumbnail in the Flow Manager.

    • Component names without a manifest — components whose connector manifest cannot be resolved (a removed connector, or one hidden by an ACL change) now display a readable name derived from the component type instead of a raw component ID — most visibly in the Wizard Builder.

    • The Insights Chart Editor and Insights Dashboard SDK widgets (appmixer.ui.InsightsChartEditor, appmixer.ui.InsightsDashboard) have been removed, together with the histogram section of the Insights Logs widget. The Charts REST API remains available for existing chart data.

    Configurable example prompts via the Designer widget options (options.copilot.examplePrompts).

  • The Copilot button is automatically hidden when the plugin is not enabled.

  • Optimized connector manifest loading — component icons in GET /apps and GET /components responses are served as URLs instead of inline base64 data, dramatically reducing payload sizes.

  • Optimized GET /logs — limited projections for single-flow queries and cached user→shared-flows relationships to avoid repeated database requests.

  • Concurrency improvements — removed read/write locks from the component factory and uploader; concurrent component requests no longer serialize.

  • Poisoned message handling — messages that repeatedly crash their consumer are detected via the broker delivery count and moved to the unprocessed messages collection instead of being redelivered indefinitely.

  • Webhook retries index — added a missing { url: 1, due: 1 } database index on the webhookRetries collection, so webhook circuit-breaker probe queries no longer run unindexed.

  • Improved flow token validation — refactored authentication status resolution (getAuthStatus).

  • Dependency upgrades — ioredis upgraded to the latest 5.x release; axios, ajv, moment, adm-zip, the OpenTelemetry packages and other dependencies updated to their latest releases.

  • Slimmer SDK — the Plotly vendor library was removed and the SDK now uses a single vendored JointJS+ 4.2.4 runtime; redundant API calls from Designer Inspector input changes were eliminated.

  • Backoffice: Public Files upload errors — failed uploads (for example a file exceeding the maximum allowed size) now show an error message instead of failing silently with a stuck loading indicator.

  • API version mismatch alert shown to admins only — the Designer alert warning about an SDK/engine API version mismatch is now shown only to admin users; end users of embedded integrations no longer see a deployment concern they cannot act on. The SDK's warning event still fires for all consumers and now carries a stable code field (apiVersionMismatch, apiValidationFailure) for programmatic handling.

  • Flow Testing

    Flow Validation

    Per-Component Error Handling

    AI Copilot

    TypeScript Connectors

    Conditional Auth Fields

    Flow & Integrations Manager Filters

    New APIs

    Automation Hub

    OpenTelemetry Support

    Performance & Technical Improvements

    Bug Fixes

    Removed

    Learn more
    Learn more
    Learn more
    Learn more
    Learn more
    Learn more
    Learn more
    OPTIONS
    unprocessed messages
    component messages
    five
    custom fields
    Slow Queue
    context.log()
    Dynamic quota definitions based on the user's profile.
    Possibility to add user metadata.
    https://www.googleapis.com/auth/gmail.readonly
    Data Stores API
    Configure database limits
    configuration options
    create user API
    Context quotas
    stdout
    https://docs.appmixer.com/appmixer/v/5.0/component-definition/manifest/outports#json-schemadocs.appmixer.com
    https://docs.appmixer.com/appmixer/v/5.0/component-definition/authentication#custom-connect-account-buttondocs.appmixer.com
    https://docs.appmixer.com/appmixer/v/5.0/customizing-ui/custom-auth-popupsdocs.appmixer.com