Kestra Open-Source Edition Changes
Changelog
π Features
API
ai
build
- 9b5c4b0 allow skip test on main ci
ci
- a7d6dbc allow to run github release ci on dispatch
core
- 2c94922 add thread http client, deadlock and virtual thread metrics
- 85ac124 add netty metrics on micrometer
- 21c43e7 implement improved graph for namespace dependencies view (#10909), closes #10634 #10909
- ab99514 implement tab tracking on editor events (#10781), closes #10781
- 543bed4 changes to introduce Namespace Context (#10750), closes #10750
- 94aa628 implement different graph type for dependencies view (#10240), closes #5350 #10240 #10446 #10484 #10563
- d8a3e70 add animated edges to topology graph (#10616), closes #10614 #10616
- 2126c88 π¨ validate URL configuration - app won't start due invalid
kestra.url
dashboard
executions
- 3d80602 allow changing the value of input before replaying an execution (#11010), closes #11010
- 357d4e0 allow flow trigger on concurrency limit
- 78a4898 add
autoselectFirst
property to select inputs (#10919), closes #9691 #10919
flow
flows
- 0e2863e update DEFAULT_ACTIVE_TABS to follow settings (#11095), closes #11095
- 37ea7f3 add pebble expression support for all input defaults (#9762), closes #9762
- 1fd6e23 Flow SLA out of beta
- 673b5c9 add upstream dependencies in flow dependencies, closes #10638
- 2679b0f warn on runnable only properties on non-runnable tasks, closes #9967 #10500
namespaces
plugin
plugins
releases
storage
storages
- a3b0512 #10636 add tenant id to mock trigger (#10749), closes #10636 #10749
- a2c3799 #10636 add get path without tenant id (#10740), closes #10636 #10740
stores
system
- 6182015 report additional server events
- 3929bf6 add distinct server-events for reporting
- 0319f3d set the default number of worker threads to 8x available cpu cores
- d3e661f improve performance of computeSchedulable
ui
global
- e3d2b93 export auditlogs through a streamed file (#10569), closes #10569
- 3f9a2d9 add action to merge release note between OSS and EE (#10882), closes #10882
- 399446f disabled the preview button in output tabs for zip files (#10535), closes #10535
- 85f9070 Trigger Initialization Method Performance Optimization
π Subtasks
ci
- 986a2b4 don't run docker PR image workflow on forks
core
- 810579b amend dependency graph coloring scheme (#11107), closes #11107
- 4a3c6ee remove empty lines at the end of translation files (#11089), closes #11089
- af1e2e3 localize to languages other than english (#11074), closes #11074
- 6a0344a improve dependency graph user experience (#10994), closes #10925 #10994
- d92cc09 localize to languages other than english (#11012), closes #11012
- cf301a1 fix border color of validation btn and add loading state in Action button (#10982), closes #10982
- b872223 localize to languages other than english (#10933), closes #10933
- d60ec87 align flow options in tour to the top of the page (#10920), closes #10915 #10920
- 98534f1 localize to languages other than english (#10904), closes #10904
- 04a3978 localize to languages other than english (#10901), closes #10901
- 2d34878 added closing button for horizontal panel in playground (#10777), closes #10660 #10777
- 041a31e make playground feature enabled by default (#10891), closes #10891
- 94dc62a prevent running the invalid flow in playground (#10869), closes #10659 #10869
- 95ac5ce localize to languages other than english (#10697), closes #10697
- 42b01d6 reload number of dependencies on flow save action (#10663), closes #10484 #10663
- 9edfb01 uniform dependency table namespace label (#10655), closes #10655
- 49b6c33 amend edge color scheme in execution dependency graph (#10648), closes #10639 #10648
- e409fb7 lower the wheel sensitivity on zooming of dependency graph (#10647), closes #10639 #10647
- 114669e add padding around user image in left sidebar (#10553), closes #10553
- 1748b18 remove variable and directly assign. (#10554), closes #10554
- 5fb6806 localize to languages other than english (#10494), closes #10494
- 1b1aed5 localize to languages other than english (#10489), closes #10489
- 93b2bbf localize to languages other than english (#10471), closes #10471
deps
- 03f256c follow platform on com.microsoft.playwright:playwright
- 70c1621 update most of js deps
- 8fe1bae remove unrequired deps from MakeFile
- 9ef59fd upgrade some platform deps
- c659599 add langchain4j version to platform (#11027), closes #11027
- 59e3ae5 use a common http5 client
- 4fbaed7 bump micronaut to 4.9.3
- e3f9d0f bump org.sonarqube from 6.2.0.5505 to 6.3.1.5724
- 55c8924 bump com.gradleup.shadow to 9.1.0
- af6d15d bump Micronaut platform to 4.9.2, closes #10626 #10788
- 2e7d714 bump ui-libs from 0.0.237 to 0.0.238
- de160c8 regular dependency update (#10607), closes #10607
- 133315a hardcode vue override version
executions
- 04a6adf make dependency graph table links navigate to execution pages (#10988), closes #10988
- 63659ec optimize dependency graph state updates (#10985), closes #10795 #10985
- 83e98be add parent execution link to execution overview page (#10810), closes #10745 #10810
flows
namespaces
system
- 2498398 move the standalone runner to the cli module
- 97ec24f merge Indexer with the IndexerInterface
- be5e242 extract the scheduler to its own module
- a5724bc extract the executor to its own module
- f3057d2 extract the worker to its own module
- 194ae82 add WorkerJobQueueInterface to properly pass workerId on subscribe
- da180fb add a note on MapUtils.nestedToFlattenMap() method
- 693d174 provide a more useful Either utility class
- d6b8ba3 provide a MapUtils.nestedToFlattenMap() method
version
- ccb6a1f update to version 'v1.0.0'.
- 88acc91 update @kestra-io/ui-libs to version 0.0.244 (#11088), closes #11088
- 46a294f upgrade to v1.0.0-SNAPSHOT
- a229036 update to version 'v0.24.0-rc0-SNAPSHOT'.
global
- 2aafe15 add JacksonMapperTest.toMap()
π Bug Fixes
ai
- 46ec0ae move maxOutputToken default from 50000 to 4000
- ba0615b add some properties to Posthog events
- fedddcd move back to Gemini as default
- f9beb0f add model-name to configuration example when Copilot is not configured
- 0ae9374 optional flowYaml in generateFlow endpoint (#10974), closes #10974
- dd3829c enhance FlowYamlBuilder prompt (#11027), closes #11027
- fa18790 remove @requires on API key as it's already done transitively (#11027), closes #11027
- 6f8044f make sure accept / decline AI banner doesn't hide code editor (#10835), closes #10835
- b3b7596 AI Copilot instructions for better results (#10835), closes #10835
- 36b1c14 add instructions for AI Copilot configuration if not enabled yet (#10835), closes #10835
ai-agent
- c7bd592 add prompt suggestion
build
ci
- a3c9b35 no more RC semver check on plugins
- 2c03101 no more RC semver check on plugins
- 7ee2cca no more RC semver check
- ddb48a4 no more RC semver check
- e4f9b11 workflow build artifact doesn't need the plugin version
- 9a45f17 do not run github release on tag
- 12cf41a don't publish docker in build-artifact
- 6abe7f9 add missing build artifact job
- cf82109 correctly pass GH token to release workflow
core
- f887f53 allow triggering the task from playground again after a 422 error (#11112), closes #11109 #11112
- 7c5b531 export flow from settings (#11111), closes #11111
- a0e7c50 show inherited kv pairs button only on kv tab (#11104), closes #11104
- 0a26098 add method to DefaultPluginRegistry to override of plugin registration
- ea6daf3 Multipanel layout fixes (#11092), closes #11092
- 1699262 allow removal of block items from no code editor (#10992), closes #10992
- bc08fc7 disable useless health check
- 8021257 align open source & ee configuration
- 0e2ddda allow some left menu methods inheritance
- 7d4d163 do not overflow the version selection on release notes (#10903), closes #10903
- 0b555b3 return URI as string (#10892), closes #10892
- 6ed4c5a show the logs for the task from topology graph. (#10890), closes #10890
- 09c79f7 show the proper origin in webhook curl command (#10878), closes #10878
- 086fd2a scope the styling to fix overflow of trigger render. (#10880), closes #10880
- 795f9c9 add missing equals/hashcode methods on UnitTest
- cf27827 when refreshing a multipanel editor, sizes are not kept (#10858), closes #10858
- d57753e Choose File button and hover on btn text in light theme (#10857), closes #10857
- 1bce0d6 update params for flow navigation (#10847), closes #10847
- 6a07e3c truncate the overflowing text from button when zoomed #10775, closes #10775
- fe1ae29 show validation button icon
- 6ae2fde truncate the overflowing text from button when zoomed (#10775), closes #10775
- 1509ce9 change cache policy on files returned by webserver that needs to stay fresh, closes #7499
- 9818939 show flow graph inside blueprint de ...
Kestra Enterprise Edition Changes
Changelog
π’ Breaking Changes
auditlog
π Features
API
- f9c5211 add a new endpoint to replay and execution / task with new inputs (#4780), closes #4780
ai
apps
- 9dc80dc introduce no code editor for building apps (#4771), closes #4771
- 249a508 show app editor in multipanel layout (#4733), closes #4733
core
- e0b153b add thread http client, deadlock and virtual thread metrics
- 2bd39f9 add netty metrics on micrometer
- e65cfb6 add animated edges to topology graph (#4627), closes #4627
executions
- 7e011d0 allow flow trigger on concurrency limit
flows
- 39755c7 add support for pebble expression input defaults (#9762)
namespace
namespaces
plugin
plugins
- dbea8eb introducing versioning for Internal Storage and Secrets Manager plugins (#4767), closes #4767
- 3f277ef expose endpoints to list storage/secret plugins (#4688), closes #4688
serviceaccount
storages
stores
system
- d5fe584 add report for test suite (#3014), closes #3014
- b448162 add additional server events, closes #3014
- 522ad1d add distinct server-events for reporting (#3014), closes #3014
- 53f2cc4 remove jOOQ pro, closes #4585
tests
- 2e5755d introducing tab view for TestSuites (#4880), closes #4880
- dd06426 add search test suites results endpoint, closes #4874
- 8260f87 introducing multipanel editor and view for testsuite. (#4861), closes #4861
- 5af259f add run testsuites by query endpoint, closes #3693
- d71468c allow running specific testcase, fix openapi doc, closes #3693
ui
- fd8020e configuration to keep ui report on EE, closes #4831
global
- 2918936 export auditlogs through a streamed file (#4574), closes #4574
- 44e4886 add action to merge release note between OSS and EE (#4783), closes #3966 #4783
- 09ff1d2 changes on Auditlogs (#4662), closes #4662
- b688709 hide auth method if disabled in console
π Subtasks
core
- b2c851f amend dependency graph coloring scheme (#4974), closes #4974
- a6ead54 localize to languages other than english
- 9b27f1b allow non standard url from ui in dev
deps
- e0441db use playwright version from platform
- 6727df4 update most of js deps
- ed7e33a align apt package from oss and ee
- 5a0cb1f bump com.gradleup.shadow to 9.1.0
- 847a321 optimize way of importing shiki
- ae44d00 bump ui-libs from 0.0.237 to 0.0.238
- c1b8c2a regular dependency update (#4622), closes #4622
system
- 82d4182 refactoring of the runner
- 4f29eb4 refactoring of the indexer
- 8f86924 extract the executor and the scheduler on their own modules
- 9f61683 extract the worker in its own module
- 68a812b add WorkerJobQueueInterface to properly pass workerId on subscribe
ui
version
- eb71571 update to version 'v1.0.0'.
- d186a32 update @kestra-io/ui-libs to version 0.0.244 (#4956), closes #4956
- 478f98b upgrade version to 1.0.0-SNAPSHOT
π Bug Fixes
Apps
ai
- 0688d72 move back to Gemini as default
apps
- 0737666 improve pagination and tag selection (#4587), closes #4587
- edae7cb show tags properly and better style of tag (#4541), closes #4541
auditlog
auditlogs
autocomplete
- 18b07cd NPE in namespace autocomplete, closes #4923
ci
- 0633304 no more RC semver check
- 6217631 add blueprints to indexing to avoid manual step after release
core
- e04600e allow taskrun id and revision to be null like in OSS (#4973), closes #4973
- 2ac8241 add missing metrics for reporting (#3014), closes #3014
- 890f738 properly handle PRIMARY plugins in registry
- 0f84632 update panel size management (#4960), closes #4960
- 2ca4fb9 allow adding tags after creation of custom blueprints without any (#4949), closes #4926 #4949
- 5e9de15 disable useless health check
- eb21384 align open source & ee configuration
- 410f19c sidebars configuration (#4791), closes #4728 #4791
- aca4cad bring back the auditlogs for executions. (#4800), closes #4800
- 3755c7f ensure yaml fields are populated immediately (#4778), closes #4778
- 37bbb95 change cache policy on files returned by webserver that needs to stay fresh, closes #7499
- cc92873 date filters are now working on metrics (#4657), closes #4657
- a96e78a amend condition when the license banner is shown (#4593), closes #4588 #4593
dashboards
docs
- e5d5ca7 update plugin docs (#4902), closes #4902
- 9a0e258 move proxy target from
kestra
tolocalhost
and add UI README.md (#4802), closes #4802
executions
- 726cc6e loading the flow from a webhook should filter on deleted flows
- 1b7a1f0 SLA monitor should take into account restarted executions
- 3a845a2 concurrency limit exceeded when restarting an execution, closes #7880
- 6cb3b1c rename breakpoint param to breakpoints to match OSS (#4566), closes #4565 #4566
- dadfe4e fixes tabs logic to handle audit logs unlocking (#4568), closes #4568
flows
- e360299 pass proper namespace id on flow creation (#4909), closes #4909
- 12902e6 add
version
autocompletion (#4851), closes #4702 #4851 - a4ff495 properly import store into a component (#4643), closes #4643
- 4375a90 use the namespace query while creating flows (#4642), closes #4642
iam
- 95b2211 prevent UnsupportedOperationException on removeIf when no auths, closes #4953
- 42e7247 disable the save on any field is blank and do not show success toast if already the roleId exist. (#4916), closes #4916
- d57f2f2 encode email parameter before fetching invitations (#4912), closes #4900 #4912
- 2170f55 delete all deprecated/unused role permissions
- 7b809ec fix wrong data response returned from bindings API
- 1615465 table will show checked for specifc role created. (#4538), closes #4538
logs
namespace
namespaces
- 5c849c2 remove required attribute from worker group key (#4573), closes #4573
- 48c0aa4 fix autocomplete and remove duplicate namespace endpoint (#4283), closes #4283 #4548
plugins
- ab6096f fix exception when listing installed plugins (#4830), closes #4830
- ef0d601 allow upload of SNAPSHOT jar as well. (#4775), closes #4775
- f0b4554 fixes update btn showing loading for other secrets. (#4773), closes #4773
scim
system
- a7bc214 rename service EMPTY state to INACTIVE (#4838), closes #4838
- 3a9d4ec properly close the ScheduledExecutorService tasks
tenants
- 75d46c7 properly save the configuration for dedicated storage and secrets (#4948), closes #4948
- 059d652 fixes failing of sorting for name column (#4549), closes #4549
test
- a935c07 access the yaml lang for result. (#4766), closes #4766
- 9de1c0f disable kafka executor test (#4712), closes #4712
- 8052f0a disable kafka concurrency queue test (#4711), closes #4711
- a76ef66 add required kestra.url for tests
test-suite
- 8da01fa add sort mapping to avoid exception in Kafka ES, closes #4970
tests
- 07e642a fix failing test
- c51c67b disabling tests that pass locally but fail on CI, closes #4958
- 7970a85 prevent redirection if the route changed (#4951), closes #4920 #4951
- cc8f388 /tests/results/search/last was fetching all data (#4889), closes #4756 #4889
- eaaa736 #4852 kafka queue flaky test (#4868), closes #4852 #4868
- 195cca8 #4852 fix unit tests (#4853), closes #4852 #4853
testsuite
ui
webserver
global
- ff4f99e hide 'or' if basic auth is disabled
- 82da55c Remove SQL_CALC_FOUND_ROWS from AuditLogRepository for optimized SQL performance (#4784), closes #4784
- b1daab4 failing kafka tests (#4735), closes #4735
- e9b5c10 auth store should be registered if used (#4721), closes #4721
- 867ea5c increase the count of namespace displayed when creating an acces⦠(#4696), closes #4692 #4696
- a78dca8 pagination on invitations list is now working correctly (#4701), closes #4570 #4701
- f224269 display link for invitation and make take for roles & groups clickable (#4651), closes #4637 #4651
- 7fd224f role detail can not be fetched from admin view (#4654), closes #4654
- 76ab69f various fixes on default role (#4650), closes #4635 #4650
- fd6b713 handle empty flows list in lastExecutions correctly (#4554), closes #4554
- ee78d53 fix(): icons
π Dependencies
- 146903f Revert "chore(deps): bump com.gradleup.shadow to 9.1.0"
ποΈ Changes
core
jdbc
- 058bbdb Optimize SQL performance by replacing SQL_CALC_FOUND_ROWS with COUNT(*)
misc
namespaces
- 980f64d migration of namespace module to pinia. (#4641), clos ...
β οΈ Breaking Changes
All Editions: Input defaults
property is now dynamic
The defaults
property for inputs is now dynamically rendered. This impacts any flows that use Pebble expressions directly as default values.
Example before 1.0 (will fail from 0.24 onwards):
id: session
namespace: company.team
inputs:
- id: sessionId
type: STRING
defaults: "{{ execution.id }}"
tasks:
- id: log
type: io.kestra.plugin.core.log.Log
message: "This is my session id: {{ render(inputs.sessionId) }}"
Updated approach:
Given that theΒ defaults
Β are now dynamically rendered, the above flow will fail in Kestra 1.0 and higher, unless you move the expression to the task as follows:
id: session
namespace: company.team
inputs:
- id: sessionId
type: STRING
required: false
tasks:
- id: log
type: io.kestra.plugin.core.log.Log
message: "This is my session id: {{ inputs.sessionId ?? execution.id }}"
All Editions: Helm Charts Restructured
We reworked the Helm charts to distinguish between production, starter, and operator use cases:
kestra
β production-ready chart (no bundled dependencies).kestra-starter
β starter chart with PostgreSQL, MinIO, and other dependencies for development environment and PoC.kestra-operator
β Enterprise-only operator for custom Kubernetes resource management.
Key changes:
- Dependencies (PostgreSQL, MinIO, Kafka, Elasticsearch) are removed from the production chart.
- Deployment configuration is now organized under a
common
block anddeployments
overrides. - Custom configuration files are consolidated under a
configurations
entry. - Docker-in-Docker (
dind
) is now managed via a dedicateddind
block with support forrootless
mode (default).
See the Helm Chart Migration Guide for before/after examples.
All Editions: Singer Tap Plugin Removed
Singer support has been fully removed in 1.0 (deprecated since 0.24).
Why removed:
- Singer is no longer maintained, lacks ecosystem backing, and poses long-term compatibility and security risks.
Migration:
Use open-source alternatives using the following Kestra plugins:
- Airbyte for a large connector ecosystem.
- dlt for Python-based ingestion pipelines.
- CloudQuery for cloud asset and metadata syncing.
Refer to the Singer Migration Guide for a full checklist.
All Editions: Internal Package Structure Changes (Custom Plugins Only)
This change affects only users building custom plugins or using the Java library in tests.
io.kestra.core.runners.StandAloneRunner
β replaced byio.kestra.core.runners.TestRunner
.io.kestra.core.schedulers.AbstractScheduler
β replaced byio.kestra.scheduler.AbstractScheduler
.
For plugin tests using Scheduler or Worker directly, add new Gradle modules:
testImplementation group: "io.kestra", name: "scheduler"
testImplementation group: "io.kestra", name: "worker"
Tests using @ExecuteFlow
remain unaffected.
No impact for UI/API users.
All Editions: Debezium Plugin Requires Explicit Offset Storage Configuration
Starting with Kestra 1.0, Debezium triggers require an explicit offset.storage
configuration. If you use Debezium, update your flows as follows:
Example update in existing triggers:
properties:
offset.storage: org.apache.kafka.connect.storage.MemoryOffsetBackingStore
database.history: io.debezium.relational.history.MemoryDatabaseHistory # relevant for MySQL, SQL Server, Oracle, DB2
Recommended approach:
Set these as plugin defaults to avoid repeating them across multiple triggers:
pluginDefaults:
- type: io.kestra.plugin.debezium
forced: true
values:
properties:
offset.storage: org.apache.kafka.connect.storage.MemoryOffsetBackingStore
database.history: io.debezium.relational.history.MemoryDatabaseHistory # relevant for MySQL, SQL Server, Oracle, DB2
Enterprise Edition: Audit Log API and Task Changes
Audit logging has been aligned across APIs and tasks:
- API
/api/v1{/tenant}/auditlog/search
: filterpermissions
have been replaced byresources
. Note that searching by permission is still possible in the UI underdetail.permission
. - Task PurgeAuditLogs: property
permissions
replaced byresources
. AuditLogDetails
: fieldcls
removed (was previously collected byAuditLogShipper
).
Update all flows and API calls using permissions
to use resources
instead.