Streamlit is a Python framework that transforms data scripts into interactive web applications with minimal code. It is the fastest way to build data apps in Keboola, perfect for rapid prototyping and internal tools.
When to Use Streamlit:
Key Advantages:

There are two ways to deploy a Streamlit data app:
For simple use cases where your Streamlit code fits on one page, paste the code directly into a text area. This deployment type is ideal for simple apps or for testing. Check out our Titanic Demo App or this example from Streamlit docs.


To use additional Python packages that are not already included in the base image, enter them into the Packages field.

If you have a complex application, push your app sources into GitHub and link the repository in this section. Provide the Project URL, choose the right branch, and finally, select your main entrypoint file.

If you are using a private repository, you have two options to authenticate:
Follow these steps to authenticate using your GitHub username and personal access token:
Private option, and enter your GitHub username and the personal access token you generated in step 1.To authenticate using your SSH private key, follow the instructions in the GitHub manual. After generating your key, enter your SSH private key into the appropriate configuration field and click Save.

To provide your app with environment variables or sensitive information like credentials, API keys, etc., use the Secrets section. These secrets will be injected into the secrets.toml file upon deployment of the app.
When you upload secrets.toml using the direct secrets upload UI, Keboola imports secrets as flat, top-level keys. Sections (TOML groups) are not preserved as nested structures. This means keys in the file become st.secrets["your_key"] after upload - you cannot access them as st.secrets["group"]["key"]. If your app expects nested secrets, use repo-based secrets.
Read more about the Streamlit secrets.
You can upload a secrets.toml file directly through the UI when developing an app from code. The upload process:
aws_key = "YOUR_AWS_KEY"
aws_secret = "YOUR_AWS_SECRET"
openai = "YOUR_OPENAI_KEY"
By default, there are two environment variables available that make it easy to access Keboola Storage from your application:
KBC_URL: This represents the URL of the current Keboola project.KBC_TOKEN: This represents the Storage token with full read-write access to Keboola Storage.To securely access Storage, we recommend creating a dedicated Storage token with limited permissions and passing it to your Data App as a secret. You can generate such a token following the guide here.
Important:
Do not name your secret KBC_TOKEN, as this name is reserved.
These environment variables can be accessed within your Streamlit data app code. Here is an example of how to initialize the Keboola Storage token:
# Constants
kbc_token = os.environ.get('KBC_TOKEN')
kbc_url = os.environ.get('KBC_URL')
# Initialize Client
client = Client(kbc_url, kbc_token)
These variables represent the project where the application is deployed. To map data from a different project, you need to configure the appropriate secrets.
To load data from the Storage of a Keboola project into the app, use the input mapping section. Just select your table in the input mapping section and navigate to that by /data/in/tables/your_data.csv or /data/in/files/fileID_FileName.* in your code. Note that the app needs to be redeployed to fetch up-to-date data. Or you can use the Keboola Storage Python Client in the app to load the data as needed.
For writing data back to Keboola Project Storage, use the Keboola Storage Python Client.
To configure theming in your data app, you can select from predefined themes or create a custom theme. Predefined themes include Keboola, Light Red, Light Purple, Light Blue, Dark Green, Dark Amber, and Dark Orange. Each theme has a specified primary color, background color, secondary background color, text color, and font. Users choosing Custom can manually set these values.

For Custom, users can select colors using the color pickers and choose the desired font from a list.

#1F8FFF#FFFFFF#E6F2FF#222529#FF5D5D#FFFFFF#FFE6E6#222529#9A6DD7#FFFFFF#F2E6FF#222529#0000B2#FFFFFF#E6E6FF#222529#4CAF50#222529#3D4F41#FFFFFF#FFC107#222529#4A3A24#FFFFFF#FFA500#222529#4A3324#FFFFFFWhen the app is deployed, the code specified in one of the deployment methods will be injected into the Streamlit base Docker image. You can select a specific backend version when deploying your app. Each version defines the Python version, Streamlit version, and a set of pre-installed packages.
The following packages are pre-installed in all backend versions:
streamlit, pandas, numpy, matplotlib, plotly, scikit-learn, seaborngraphviz, deepmerge, python-dotenv, tomlkeboola.component, streamlit-aggrid, streamlit-keboola-api, streamlit_authenticatorStarting with backend version 1.15.0, each release is available with multiple Python versions (3.10, 3.11, 3.13). Python 3.10 is the default.
For the full list of available versions, pre-installed packages, and a changelog of what changed in each release, see the Backend Versions page.
The AgGrid Enterprise License is available for Streamlit Data Apps in Keboola, offering enhanced data manipulation capabilities, including:
Ensure your data app is configured to use the AgGrid component to take advantage of these enhanced features.
The enterprise license is pre-configured for all Keboola stacks, so no additional setup is required for supported applications.
To access the license key in your Streamlit app, use the following code:
import streamlit as st
from keboola_streamlit import KeboolaStreamlit
URL = st.secrets["kbc_url"]
TOKEN = st.secrets["kbc_token"]
keboola = KeboolaStreamlit(URL, TOKEN)
license_key = keboola.aggrid_license_key
You can use this license_key directly in AgGrid.
Reference Implementation: Keboola Streamlit Integration