Install Specific Plugins for a Lightweight Kestra Build
For the complete documentation index, see llms.txt. For a full content snapshot, see llms-full.txt. Append.mdto anykestra.io/docs/*URL for plain Markdown.
Install a selection of Kestra plugins in the open-source version.
Pick and choose Kestra plugins to create lightweight builds and achieve a faster startup. This guide explains how to:
- Install specific plugins when using the
-no-pluginsDocker image - Understand plugin versioning across Open Source and Enterprise
- Automate plugin installation using Docker Compose
- Link to plugin documentation and versioning support
See also: Versioned Plugins in Kestra Enterprise.
To download plugins for a standalone worker or local development environment, use kestractl plugins download.
Plugin basics in Kestra Open Source
Kestra plugins are distributed as individual JAR files and loaded at runtime. Plugins are not embedded by default in -no-plugins Docker images. You can:
- Download specific plugin JARs manually or via
kestra plugins install. - Mount them into
/app/plugins/in your Docker Compose setup.
Install plugins via kestra plugins install
You can install any plugin using:
kestra plugins install io.kestra.plugin:plugin-dbt:LATESTThis will download the plugin JAR from Maven Central into /app/plugins. Just replace plugin-dbt with whichever plugin you’d like to download (e.g., plugin-script-python, plugin-aws, etc.)
You can run this inside a container (interactively or as part of Dockerfile) to build custom plugin bundles.
Automate plugin selection with Docker Compose
If you’re using the kestra/kestra:*-no-plugins image and want to add only selected plugins:
Option 1: Use kestra plugins install inside the container
services: kestra: image: kestra/kestra:latest-no-plugins entrypoint: /bin/sh -c " kestra plugins install io.kestra.plugin:plugin-dbt:LATEST && \ kestra plugins install io.kestra.plugin:plugin-scripts:LATEST && \ kestra server standalone" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./storage:/app/storageOption 2: Preload plugin JARs locally
You can copy only the JARs you need from a full Kestra image:
docker run --rm -d --name kestra-temp kestra/kestra:latestdocker cp kestra-temp:/app/plugins/. ./local-pluginsdocker rm -f kestra-tempThen remove unwanted plugins:
rm ./local-plugins/*unwanted-plugin*.jarAnd mount your plugin folder:
volumes: - ./local-plugins:/app/pluginsYou may also use a scripted alias to automate this process. Below is an example for reference:
alias dl="rm -rf ./jar-plugins/* && docker run -d kestra/kestra:develop server local \| xargs -I {} sh -c 'docker cp {}:/app/plugins ./jar-plugins && docker rm -f {}'"Plugin versioning in Enterprise
In Kestra Open Source, plugins must be installed at the latest compatible version. In Kestra Enterprise, you can:
- Pin specific plugin versions
- Upload custom plugin binaries per tenant
- Enable version-aware workflows
Learn more about versioned plugins in Enterprise: Versioned Plugins
Best practices
| Use Case | Recommendation |
|---|---|
| Minimal runtime image | Use kestra/kestra:*-no-plugins with mounted JARs |
| Dynamic plugin setup | Use kestra plugins install in entrypoint |
| Controlled plugin versions | Use Enterprise with versioned plugins |
| Custom plugin development | Build and copy plugins into /app/plugins/ manually |
Was this page helpful?