Kestra Open-Source Edition Changes
Changelog
π Features
ai
ai_copilot
cli
core
- d9144c8 introduce KV Metadata in-repository storing (#12342), closes #12341 #12342
- efac416 force telemetry when license requires it (#12512), closes #12512
- a27348b add support for single datetime as well (#12471), closes #12471
- 6361a02 add prefill prop to input to allow nullable value (#11819), closes #11819
- 4cd369e add type validation to file inputs (#12176), closes #11266 #12176
- 24e2f5a add unit tests for flowable task attempts( If and Sequential)
- 1771955 handle flowable task attempts state transitions
- 7c7d606 add attempts for flowable tasks
- 154f380 fetch blueprints directly from the API (#12197), closes #12197
- 12fd7f8 make the right sidebar usable in offline mode (#12022), closes #12022
- 9e2ea00 add new execution kind filter to support playground execution listing
- b628c3a add support for brazilian portuguese localization (#11596), closes #11527 #11596
- 151c56f add new findMetadataAndValue to KVStore
- 8aba863 introduce close all panels functionality (#11225), closes #10785 #11225
- 3d306a8 add extra date format options (#10237), closes #10237
- ef193c5 add a new date format option with milliseconds (#11108), closes #11028 #11108
documentation panel
editor
execution
- 263882c add secure variable renderer factory for debug mode
executions
- 71e49f9 add IN, NOT_IN, CONTAINS LABELS #11916, closes #11587 #11916
- e5b3bea consolidate buttons in the execution header component (#11693), closes #8965 #11693
- 6ee910a improve performance of PurgeExecutions by batch deleting executions, logs and metrics, closes #11680
- d0f4616 make the id field a link that can be opened in a new tab (#10963), closes #10906 #10963
- 108f8fc nicer exception message for the HttpFunction
filter
flows
- 893e8c1 add human task (#12276), closes #12276
- ff11ff9 add truncate parameter for log shipper (#12131), closes #12131
- d12a33e add days rendering to the duration picker (#11987), closes #11987
- e63d6d1 add Pebble nanoId function
- 68e6fa2 save editor panel layout after creation (#11276), closes #9887 #11276
frontend
- 4fc690b convert DurationPicker component to TypeScript with Composition API (#11724), closes #11724
- b593c51 convert LabelFilter component to TypeScript with Composition API (#11726), closes #11726
plugin
- 8a30e46 add support to split a file with a regex (#11780), closes #11780
- 799500d introducing breadcrumb based plugin doc in multipanel flow view (#11544), closes #11544
plugins
- caffb3b enhance documentation request handling to prevent unnecessary reloads (#11911), closes #11911
retry
runners
- b41025c add
syncWorkingDirectoryproperty to remote task runners (#11945), closes #11945 - af8051c add
syncWorkingDirectoryproperty to remote task runners (#11602), closes #11602
script
system
- 9920d19 add an administration page for concurrency limit, closes #11250
- c06ffb3 set taskrun attempt to resubmitted when a taskrun is resubmitted to a worker, closes #12481
- b704a55 Add Gauge Metric to Kestra Metrics System (#12138), closes #12138
- b43fd14 allow to skip an indexer record
tasks
tests
- 4909af9 add E2E on Executions view (#11556), closes #11556
- ff18fc4 add annotation and modify CI to handle flaky tests, play⦠(#11914), closes #11914
- 194ea1f add comprehensive tests for SecureVariableRendererFactory to ensure secret masking functionality
- 3346f3a add test coverage for cli commands with no repo config (#11742), closes #11742
- 83b4d28 introduce JUnit test support for triggers (#11579), closes #11579
- b294457 rework runner utils to not use the queue during testing (#11380), closes #11380
triggers
- 78c0199 add inputs property to webhook trigger
- 4227ce8 introduce stateful behaviour for triggers (#11978), closes #11978
- 6fd91a9 allowing webhook to send only outputs (#11867), closes #11867
- 3ee647b show dialog when clicking the backfill button (#11445), closes #11433 #11445
ui
- a3195c8 add concurency limit page and route
- 3984e92 Redesigned the No Execution Flow Page to align with the rest (#12357), closes #12357
- c2ab63c convert Curl.vue to TypeScript using Composition API #12079 (#12261), closes #12079 #12261
- 0b5e6c2 convert SubFlowLink.vue to TypeScript with Composition API (#12146), closes #12146
- dd7892e scrollable editor tabs with VS Codeβstyle wheel scrolling and rightβaligned close icon (#12152), closes #12152
- 50f412a Redesign blueprint browser cards #11534 (#11947), closes #11534 #11947
- 25284df Add multiselect filter for blueprint tags (#11907), closes #11907
- aa039c7 migrated Metrics.vue in TS (#11820), closes #11820
- 804a123 including running executions in last executions (#11784), closes #11784
- 3893ddf Convert Toc.vue component to TS (#11865), closes #11865
global
- e116186 make charts default duration configurable, add kestra.ui.charts⦠(#12599), closes #12599
- c60be5c add error feedback and validation to login form Fixes #12361 (#12472), closes #12361 #12472
- d3d14a2 add cloud formation template to deploy Kestra (#12412), closes #12412
- 2c024c2 add global secret search controller (#12036), closes #12036
- 86a1fa7 add ts and js workers to monaco editor (#11979), closes #11979
- 9958e49 add multipanel and no-code to dashboards (#11752), closes #11752
- 296fb2f implement Flows as a DataSource for dashboards (#11439), closes #11439
- 6b0c190 added test case covering ForEach Iteration
- ec235b9 add fix with AI button for error tasks (#11416), closes #11416
π Subtasks
build
ci
- 43e3591 fail-safe update-plugin-kestra-version.sh
- 438dc9e create branch if not exist on update-plugin-kestra-version.sh
- 7292837 add LTS tagging (#11131), closes #11131
core
- 4365a10 enhance github issue templates (#12572), closes #12572
- c3f34e1 localize to languages other than english (#12555), closes #12555
- ca70743 clarify usage of vite environment variables in docs (#12520), closes #12520
- 5d2c93b localize to languages other than english (#12550), closes #12550
- a3ff8f5 localize to languages other than english (#12423), closes #12423
- 5b3ebae update the color of addition line highlight for light mode in monaco editor (#12149), closes #11956 #12149
- 516b1fb update design details on news panel (#12155), closes #12032 #12155
- 80befa9 remove the top pagination from table views (#12335), closes #12293 #12335
- 70ad7b5 clean code for "Warning: [text blocks] will remove trailing spaces" (#10511), closes #10511
- 4c63657 pass prop as a boolean to resolve console warning (#12339), closes #12339
- 0d1ccb2 add use button to the system namespace blueprints tab (#12336), closes #12169 #12336
- edc4abc introduce stronger repelling forces in the dependency view graph (#11910), closes #11583 #11910
- ddf5690 prevent blinking on the dependencies page during loading (#11902), closes #11125 #11902
- 920c614 update copilot button styles for accept and decline actions (#12277), closes #12057 #12277
- 832378a update StorageContext to use FlowId class
- e9c96d4 update icon colors and spacing in the top header (#12137), closes #12033 #12137
- 693f582 amend blueprint page translation key (#12207), closes #12193 #12207
- b23fdc2 hide video container if there's no network access (#12166), closes #12166
- 2cc6adf make plugin icon in left menu appear as outline (#12143), closes #12143
- 4f7d762 introduce fallback fonts for air-gapped environments (#11448), closes #11305 #11448
- 2c5f34a amend coloring of blueprint tags (#12058), closes #12024 #12058
- cbb57ec improve dashboard table scrollbar coloring (#11952), closes #11750 #11952
- 68993ac localize to languages other than english (#11880), closes #11880
- 7c32dba reset copilot prompt on unmounted lifecycle of component (#11767), closes #11707 #11767
- ad3d29e align re-order and delete icons in task array to the vertical middle (#11822), closes #11422 #11822
- 478276b prevent visual glitch before showing the welcome page (#11520), closes #10978 #11520
- 777bc36 localize to languages other than english (#11760), closes #11760
- 6fad3eb separate page size values for each route (#11692), closes #11568 #11692
- 824a759 localize to languages other than english (#11754), closes #11754
- fa5108a add a drop shadow behind the ai copilot prompt dialog (#11740), closes #11424 #11740
- 5542aee improve the namespace files and folders deletion process (#11747), closes #8423 #11747
- 104d1c8 localize to languages other than english (#11711), closes #11711
- e20da7d set a fixed width for the state column in the table (#11702), closes #11697 #11702
- f6a496f make the table's select-all functionality reactive within the mixin (#11674), closes #11654 #11674
- 612e17a make the table's select-all functionality reactive within the composable (#11672), closes #11654 #11672
- 279442b update cursor style of the validation button in flows (#11664), closes #11382 #11664
- 4b9de17 amend highlight colors of the monaco diff editor (#11458), closes #11429 #11458
- 4f05198 ensure chart labels are responsive on smaller screens (#11387), closes #10507 #11387
- 9066063 add back star icon for bookmarks in the left menu (#1146 ...
Breaking Changes
All Editions: Required Metadata Migration for KV Store and Secrets
Kestra 1.1 introduces backend improvements to how KV Store and Secrets metadata are indexed and queried in the UI. To complete the upgrade, make sure to run dedicated metadata migration commands to rebuild the new indexes.
What changed:
The backend now indexes KV Store and Secrets metadata to optimize search. This replaces the previous logic that fetched all stored values directly from the storage backend.
Impact:
If the migration is not executed after upgrading to 1.1, the KV Store and Secrets pages in the UI will appear empty. This affects only the UI; flows and tasks will continue to function normally in the backend even without the migration.
Migration:
Run the following commands once after upgrading to version 1.1.0 (or later):
/app/kestra migrate metadata kv
/app/kestra migrate metadata secretsFor Docker Compose deployments, replace the server standalone --worker-thread=128 startup command with the migration commands as follows:
kestra:
image: registry.kestra.io/docker/kestra:latest
commands:
- /app/kestra migrate metadata kv
- /app/kestra migrate metadata secretsAfter the migration completes, revert to the standard startup command to run the server, e.g. server standalone --worker-thread=128.
For Kubernetes deployments, create a one-time pod to run the same migration commands before restarting your regular Kestra server pods.
Note:
Running the migration after the upgrade is safe and will restore the missing UI data immediately.
Enterprise Edition: Task Runs UI Page Removed
The Task Runs page has been removed from the Enterprise Edition UI.
Reason for removal:
- The page presented confusing granularity (task-level runs displayed on execution-level detail pages)
- Filters were incomplete, and performance degraded when handling large datasets
- The feature was only available on the Kafka & Elasticsearch backend, causing confusion among other customers
- Customer interviews confirmed the page was not being actively used.
Impact:
- No replacement is required, as all relevant execution and task run details remain accessible through the Execution detail view.
- If you previously accessed Task Runs, use the Executions page and drill down into individual task runs through Gantt and Logs views for task-level information.
All Editions: Webhook Execution API Return Type Changed
The return type of the Webhook Execution API endpoint has been updated from a typed response to a generic response to support broader use cases and improve extensibility.
What changed: The API method previously returned a strongly typed WebhookResponse object. It now returns a generic HTTP response body (HttpResponse<?>).
Impact: Any custom integrations, SDK consumers, or extensions that previously relied on the WebhookResponse type in the response body will need to adjust their handling logic:
- Direct access to
WebhookResponsemethods or fields will no longer compile. - You must handle the response body dynamically and verify its type at runtime if necessary.
Migration:
- Treat the HTTP response body as a generic object.
- Add runtime type checks before casting if your code depends on specific response fields.
- Update any logic that assumes a fixed
WebhookResponsestructure.
This change ensures greater flexibility in future webhook response handling but requires updates to any consuming code that previously depended on a fixed response type.
Reference: https://github.com/kestra-io/kestra/pull/11867/files
All Editions: New prefill Property for Inputs
A new prefill property has been added to input definitions to let users start with an initial value that can be cleared or set to null when the input is not required.
What changed:
Inputs can now define a prefill value, which works like an editable default. Unlike defaults, a prefill value does not persist if the user removes it. This allows workflows to support optional inputs that start with a suggestion but can still be reset to null at runtime.
Impact:
While not a breaking change, this update clarifies how required, defaults, and prefill behave together:
prefillanddefaultscannot be used on the same input.- Use
prefillwhenrequired: falseand the user should be able to clear the value. - Use
defaultswhenrequired: trueor when the value must always have a non-null default. - If
defaultsis used withrequired: false, the value will still reset to the default when cleared, which may not be desired; useprefillrather thandefaultsfor those scenarios.
Example:
inputs:
- id: nullable_string_with_prefilled_default
type: STRING
prefill: "This is a prefilled value you can remove (set to null if needed)"
required: falseMigration: No migration is required. For optional inputs that previously used defaults but need to allow clearing or null values, switch to using prefill.
All Editions: ForEachItem Iteration Starts at 0
ForEachItem now starts iteration at 0 instead of 1, aligning its behavior with ForEach.
What changed:
Previously, ForEachItem iteration indices began at 1. This has been updated to start at 0 for consistency across iteration constructs.
Impact:
If your flow references {{taskrun.iteration}} inside a ForEachItem, note that the first iteration now returns 0 instead of 1.
Migration:
- Review any logic, conditions, or expressions that depend on the iteration index.
- Adjust Pebble expressions that assume a 1-based index.
Reference: #11452 (comment)
Kestra Enterprise Edition Changes
Changelog
π Features
API
ai
- 4a945cd add PEM Certificate handling to most AI Copilot providers (#5367), closes #5342 #5367
- e976e87 add open-router implementation for AI Copilot, closes #5101
apps
- 0f9e810 improvements of apps catalog configuration
- ce72349 improvements of apps catalog configuration
- 46a20ec improvements of apps catalog configuration
- 8cbd6b5 improvements of apps catalog configuration
- 07a22af improvements of apps catalog configuration
- 834264e add API to delete apps catalog logo (#5634), closes #5634
- 2308a8e add titleColor for apps catalog API (#5634), closes #5634
- e29d7a1 amend design and location of app catalog configuration settings (#5624), closes #5622 #5624
- 3565950 improve the look and feel of apps catalog configuration page (#5619), closes #5606 #5619
- 4445e36 add thumbnail images to the catalog view (#5615), closes #4737 #5615
- 83867b2 introduce custom branding on apps catalog page (#5503), closes #4983 #5503
auditlogs
- d05e984 add logs for disabled/backfill op on triggers (#5070), closes #5070
- 9ffb812 add auditlogs for KV stores (#5055), closes #5055
- 31a6806 support custom blueprints auditlogs (#5059), closes #5059
ci
cli
core
- be3046a force telemetry when license requires it (#5609), closes #5609
- 7227c07 make the right sidebar usable in offline mode (#5452), closes #4810 #5452
- 2514c01 add support for brazilian portuguese localization (#5335), closes #5335
executions
- d65baeb add IN, NOT_IN, CONTAINS LABELS #5617, closes #5617
- 0e3a0d4 add attempts to flowable tasks
- 790b2f2 support listing executions by kind
- 1ffd20b improve performance of PurgeExecutions by batch deleting executions, logs and metrics
filter
flows
- 9bbce35 add human task icon (#5581), closes #5581
- 90db34d add truncate parameter for log shipper (#5480), closes #5480
kv
plugins
runner-kafka
system
- 66272ac add an administration page for concurrency limit
- b6e323d allow to skip an indexer record, closes #5263
- 2dab703 use nb available core stream threads
test
tests
triggers
- 3337f42 allowing webhook to send only outputs
ui
- b0c29a5 add authenticated concurrency limits admin page
- fa8a9a1 including running executions in last executions
global
- 529467a updated license for tests (#5649), closes #5649
- 2ab1bdf add global secret search controller + secrets metadata storing(#5456), closes #3476 #5130 #5132 #5456
- 9f65501 export on instance.auditlogs view (#5491), closes #4572 #5491
- 5113007 add multipanel and no-code to dashboards (#5359), closes #5359
- 8891881 implement Flows as a DataSource for dashboards (#5219), closes #5219
π Subtasks
apps
- 9f86e40 add reset functionality to catalog configuration fields (#5644), closes #5644
- 79b593d show custom fields in apps catalog only if they exist (#5616), closes #5616
- 06a56dd amend label on table column header (#5199), closes #5196 #5199
build
- 1244ff8 use remote actions for java report
- 7abbf67 use remote actions
ci
core
- 7b16792 localize to languages other than english
- 2ea4bed localize to languages other than english
- 4cff47d update tenant icon on the instance users page (#5413), closes #5211 #5413
- 1a6d1da remove unused property mentioning oss version (#5373), closes #5373
- 8b3de16 remove unused decompress library (#5156), closes #5156
- b57a8ec improve coloring scheme for dependencies graph (#5135), closes #5135
deps
- 1a9e51d regular dependency update (#5598), closes #5598
- 2dc2549 regular dependency update (#5558), closes #5558
- 7e7b240 regular dependency update (#5538), closes #5538
- dc13092 regular dependency update (#5410), closes #5410
- 405ef69 change com.lowagie package to org.openpdf
- 68fe08d revert monaco-editor update (#5057), closes #5057
- 9e08946 regular dependency update (#5049), closes #5049
namespaces
- a32c831 remove the superfluous edit button shown in the header (#5412), closes #5350 #5412
- 7d501a7 disable all other tabs during namespace creation (#5202), closes #4726 #5202
secrets
system
- 1c2f307 executionRunning queue is only used by Kafka queues
- 335c62a add the unused MultipleConditionEvent queue, closes #4602
- 8ba1802 move the SkipExecution service to the services package
- ce42e4d remove the task run page, closes #5174
- 954aac1 share the application.yaml config file between OSS and EE, closes #4887
tests
- 00de1cc set human task tests as flaky
version
- 3d5b216 update to version 'v1.1.0'.
- f41edcc bump ui-libs for a fix. (#5579), closes #5579
- caedc37 bump ui-libs version (#5361), closes #5361
- 64a415e update snapshot version 'v1.1.0-SNAPSHOT'.
global
- 36d4bfd add utility script to index plugins post 1.0.0
π Bug Fixes
CLI
Core
admin
- 7e00f3f show the system overview in admin and search (#5115), closes #5115
- 321d3f5 add license type and remove redundant. (#5074), closes #5074
ai
- f8970a1 remove thoughts return from AI Copilot (#5424), closes #5422 #5424
- ed4eca4 map OpenRouterAiService to OpenRouterConfiguration properly
- 240d32a introduce
maxOutputTokensfor Azure OpenAI AI Copilot (#5355), closes #5355 - 428db6f remove some unsupported parameters on some models for OpenAI, closes #5265
- 9663064 increase maxOutputToken default
apps
- 0cd228a catatlog overflow was hidden and better filter look (#5638), closes #5638
- c3b4e77 show apps in catalog by default when no access defined
- aaead91 apps with access group not visible (#5454), closes #5454
- 1660ef5 make public apps accessible without login (#5434), closes #5426 #5434
- aa3128c add required 'flow' variable for pebble function (#5220), closes #5220
- 52bdaad ensure app preview retains some side margin (#5204), closes #5100 #5204
- 851681e add flow id of the app and its route. (#5200), closes #5200
- 6f7b57d return execution ID on fallback layout (#5003), closes #5003
- d58621f hide the revision and view flow when creating app. (#5126), closes #5126
- 5532e7a allow to view flow in new tab from context menu (#5112), closes #5112
audit-logs
- 05dd5bc restore resources filter, closes #4910
auditlogs
- f33378e add actor for user login event (#5308), closes #5308
- 14777f8 detect update of NS files as UPDATE (#5210) (#5213), closes #5210 #5213
- 8760514 add auditlogs for namespace files (#5056), closes #5056
- f662437 fix missing auditlogs on execution purge (#5061), closes #5061
- b68a94b rework resource snapshots computation (#4727), closes #4727
backup
- 01041a4 backup flow as Map to avoid stackoverflow at restore, closes #5409
- 343d134 full backup should use instance-level storage methods
ci
- 5f3ae4b rename and change params to indexing workflow
- 3772b74 add proper secrets to indexing workflow (#5225), closes #5225
- a918383 place indexing process after docker release (#5224), closes #5224
- 5a9af29 add on pull request for release branches
cli
core
- c4f7d2b use correct valuetype (#5643), closes #5643
- bf4b12d CrudEvent should not be done on the repository side for secret metadata
- fc3c7f9 CrudEvent should not be done on the repository side for KV
- 20a8ea3 rename back secret metadata migration
- 12927c8 rename back secret metadata migration
- bd7308e add indices to secret metadata tables (#5541), closes #5541
- d75fd57 ACLs for Secret metadata repository
- ed9cc0d add dynamic rowKey for selection handling (#5580), closes #5580
- f0a27fe bring export audit logs in navbar (#5537), closes #5537
- 998146c avoid having
deletedfield check in SecretMetadata repository calls (#5536), closes #5536 - 765d6ed allow rendering for ns upstream and also kv from another ns. (#5494), closes #5494
- 131ca4e bring back validation and save (#5408), closes #5408
- ef1a3eb create a main tenant if oss main tenant has flows. (#5271), closes #5271
- c176a2c fully collapsed sidebar (#5262), closes #5262
- f87ff35 add padding on test result (#5216), closes #5216
- 333d0b6 redesigned workergroups detail. (#5212), closes #5212
- 640f00c keep the Add at end. (#5209), closes #5209
- 2a05fd0 properly cast label values to strings in audit logs listing (#5203), closes #4908 #5203
- c0b54f8 sidebar rendering fix
- 4c967be update the title (#5164), closes #5164
- c38c8be update menu generation logic (#5161), closes #5161
- 02b70ca fix import path (#5157), closes #5157
- 2fb78be fix black text in light mode on purple bg. (#5096), closes #5096
- 847b0dd add ability to remap sort keys (#5087), closes #5075 #5087
- 7b55c94 extra container space (#5077), closes #5077
- 88f85d8 use axios composable to start EE (#5071), closes #5071
- 75ce0ac no extra space when embed (#5053), closes #5053
docs
executions
- ec2051e remove errors and finally tasks when restarting
- 3132e76 reliable fetchById on executions for Elasticsearch (#5334), c ...