Install Starlake CLI
Starlake CLI is the command-line interface for the Starlake data pipeline platform. It runs on Linux, macOS, and Windows, and is also available as a Docker image. The CLI requires Java 17 or higher; the setup script installs an embedded JDK automatically if none is found, and the Docker image includes all dependencies. Once installed, the CLI provides commands to bootstrap projects, load data, run SQL transformations, and start the Cockpit.
Install Starlake on Linux, macOS, Windows, or Docker
Choose the method that matches your environment. Docker is the fastest option because it does not require Java.
Step-by-Step Overview
- Choose an installation method -- Docker (no Java needed), Linux/macOS, or Windows (PowerShell 5.0+). If no Java 17+ is found, the installer provisions an embedded JDK for you.
- Run the installation command -- See the platform-specific tabs below.
- Verify the installation -- Run
starlake --version. The output should display the version number. - Start the Cockpit (optional) -- Run
starlake serveand openhttp://localhost:9900.
- Linux/MacOS
- Windows
- Docker
Prerequisites for Linux and macOS
- Java 17+ is recommended but not required: if
java -versionreports nothing or a version below 17, the installer downloads an embedded portable Temurin 17 JDK into the install directory (starlake/jdk), with no root rights needed. Thestarlakelauncher picks it up automatically wheneverJAVA_HOMEis not set.
Install Starlake on Linux or macOS
Run the one-line installation script:
bash <(curl -sL https://starlake.ai/setup.sh)
The script asks for an installation directory, then shows the most recent release versions to choose from.
To script the installation, both prompts can be answered with flags:
bash <(curl -sL https://starlake.ai/setup.sh) --target=$HOME/starlake --version=1.7.1
--version accepts any released version, not just the ones shown in the menu. The installer fetches every component (core JAR, connectors, Spark runtime) at that exact release's pinned versions, so there is no need to install the latest version first and downgrade afterwards.
The script creates the following directory structure:
starlake/
├── bin/
│ ├── deps/ # Extra dependencies (e.g., Oracle client)
│ ├── sl # Starlake CLI
│ └── spark # Embedded Spark runtime
Prerequisites for Windows
- PowerShell 5.0 or later
- Java 17+ is recommended but not required: if none is found, the installer downloads an embedded portable Temurin 17 JDK into the install directory (
starlake\jdk), with no administrator rights needed. Thestarlakelauncher picks it up automatically wheneverJAVA_HOMEis not set.
Install Starlake on Windows
Run in PowerShell:
Invoke-Expression (Invoke-WebRequest -Uri "https://starlake.ai/setup.ps1").Content
The script asks for an installation directory, then for the version to install among the most recent releases.
To install a specific version non-interactively, download the script first and pass --version=:
Invoke-WebRequest -Uri "https://starlake.ai/setup.ps1" -OutFile setup.ps1
.\setup.ps1 --version=1.7.1
--version accepts any released version, not just the ones shown in the menu, and the installation is fully pinned to that release exactly as on Linux/macOS.
Prerequisites for Docker
- Docker installed and running
- No other dependencies required -- everything is included in the container
Install Starlake with Docker
Pull the latest image and verify:
# Pull the latest stable image
docker pull starlakeai/starlake:latest
# Verify installation
docker run -it starlakeai/starlake:latest help
Custom Build Instructions
Build a specific version or branch:
# Clone repository
git clone [email protected]:starlake-ai/starlake.git
cd starlake
# Build with specific version
docker build -t starlakeai/starlake:VERSION \
--build-arg SL_VERSION=1.2.0 .
Run Starlake Commands with Docker
Mount your project directory to /starlake in the container and pass commands:
- Basic Usage
- AWS Credentials
- GCP Credentials
- Azure Credentials
- Advanced Options
# Mount current directory and run Starlake
docker run -it \
-e SL_ROOT=/starlake \
-v $(pwd):/starlake \
starlakeai/starlake:latest <command>
# Example: Run help command
docker run -it \
-e SL_ROOT=/starlake \
-v $(pwd):/starlake \
starlakeai/starlake:latest help
Pass AWS credentials as environment variables:
docker run -it \
-v $(pwd):/starlake \
-e SL_ROOT=/starlake \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \
-e AWS_REGION=$AWS_REGION \
starlakeai/starlake:latest <command>
Mount the GCP credentials directory:
docker run -it \
-v $(pwd):/starlake \
-v $HOME/.config/gcloud:/root/.config/gcloud \
-e SL_ROOT=/starlake \
-e GOOGLE_APPLICATION_CREDENTIALS=/root/.config/gcloud/application_default_credentials.json \
starlakeai/starlake:latest <command>
Pass Azure credentials as environment variables:
docker run -it \
-v $(pwd):/starlake \
-e SL_ROOT=/starlake \
-e AZURE_TENANT_ID=$AZURE_TENANT_ID \
-e AZURE_CLIENT_ID=$AZURE_CLIENT_ID \
-e AZURE_CLIENT_SECRET=$AZURE_CLIENT_SECRET \
starlakeai/starlake:latest <command>
Set custom JVM and Spark options:
docker run -it \
-v $(pwd):/starlake \
-e SL_ROOT=/starlake \
-e SL_ENV=production \
-e SL_METRICS_ACTIVE=true \
-e JAVA_OPTS="-Xmx4g" \
-e SPARK_DRIVER_MEMORY=4g \
starlakeai/starlake:latest <command>
Common environment variables:
SL_ROOT: Project root directory inside the containerSL_ENV: Active environment (dev, test, prod)SL_METRICS_ACTIVE: Enable or disable metrics collectionJAVA_OPTS: JVM options (e.g., memory allocation)SPARK_DRIVER_MEMORY: Spark driver memory allocation
Always mount your project directory to /starlake in the container to ensure proper file access.
For production environments, consider using mounted credential files or secret management services instead of environment variables.
Verify Your Starlake Installation
Run the following command to confirm the CLI is installed:
starlake --version
Expected output (the exact versions depend on the release you installed):
Starlake 1.8.1
Spark 4.1.3
...
The command also lists the versions of the bundled components (Spark, Hadoop, and the enabled connector drivers).
Start the Starlake Cockpit
Launch the Cockpit with:
starlake serve
Open http://localhost:9900 in your browser.
To use a different port, set the SL_API_HTTP_PORT environment variable:
SL_API_HTTP_PORT=11000 starlake serve
To access the Cockpit from a remote machine, set SL_API_DOMAIN to your server's domain or IP address:
SL_API_DOMAIN=your.domain.com starlake serve
When creating projects through the Cockpit, projects and the management database are stored in the starlake installation folder by default. To ensure they survive reinstalls and upgrades, configure an external location using these environment variables before creating any projects:
SL_API_PROJECTS_ROOT: path where projects are storedSL_API_JDBC_URL: JDBC URL for the user and project management database (PostgreSQL)
export SL_API_PROJECTS_ROOT=/path/to/my/projects
export SL_API_JDBC_URL=jdbc:postgresql://localhost:5432/starlake
Starlake VS Code Extension
Starlake provides an official VS Code extension for editing project configuration files.
Install the VS Code Extension
- Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for "Starlake"
- Install "Starlake Data Pipeline Tools"
The extension provides:
- Syntax highlighting for Starlake YAML configurations
- Schema validation for
application.sl.ymland domain files - SQL transformation snippets
- Pipeline visualization
- Starlake Skills for AI-assisted data pipeline development in Claude Code, GitHub Copilot, and other AI coding assistants
The VS Code extension requires the Starlake Cockpit to be running in the background. Start it with starlake serve before using the extension.
Upgrade Starlake to a Newer Version
Run the upgrade command to switch an existing installation to another version:
starlake upgrade
For scripted or CI usage, pass the version directly instead of using the interactive menu (the SL_UPGRADE_VERSION environment variable works too):
starlake upgrade --version 1.7.1
The upgrade process performs four steps:
- Version selection -- Retrieves the most recent release versions from GitHub Releases. You choose which one to install, or pass
--versionto skip the menu. - Launcher self-update -- Replaces the
starlakescript itself with the latest published one. - Runtime check -- Reads the target release's own version pins and replaces the embedded Spark runtime in
./bin/sparkwhen the target pins a different Spark; otherwise it is kept as-is. - Re-provisioning -- Downloads the target release's installer and lets it replace the core JAR, the API, and the connector JARs at that release's pinned versions, then regenerates
versions.sh(orversions.cmd) from scratch.
Upgrades work in both directions: selecting an older version downgrades the installation, including the Spark runtime (for example moving from a 1.8.x release on Spark 4 back to 1.7.x on Spark 3.5). Only the connectors that are already installed are refreshed; a selective installation stays selective.
All Starlake artifacts are distributed from GitHub Releases: each release tag vX.Y.Z carries the starlake-core assembly jar and the starlake-api zip with .sha256 checksum companions. Development snapshots are published the same way, as a rolling pre-release tagged v<version>-SNAPSHOT whose assets are overwritten on every snapshot build. Snapshots never appear in the upgrade menu; to install one explicitly, set SL_VERSION to the snapshot version (for example SL_VERSION=1.7.1-SNAPSHOT) before running the setup script. Nothing is published to Maven Central or Sonatype anymore.
Troubleshooting Starlake Installation
Common installation issues and solutions:
-
Java version mismatch
# Check Java version
java -version
# Install Java 17+ if needed from Oracle JDK or OpenJDK -
Permission issues on Linux/macOS
chmod +x bin/starlake -
Docker issues
# Verify Docker installation
docker --version
# Test Docker permissions
docker run hello-world
Any additional libraries (e.g., Oracle client) should be copied to the bin/deps folder.
Next Steps
The exhaustive list of configuration options can be found in the api-env-vars.md file.
Continue with the CLI by following the tutorials below:
Frequently Asked Questions
What are the prerequisites to install Starlake?
None beyond a shell: the setup script checks for Java 17 or higher and, if none is found, installs an embedded portable JDK inside the Starlake directory (no root or administrator rights needed). Windows additionally needs PowerShell 5.0 or later. The Docker installation requires only Docker to be installed and running.
Can I install Starlake using Docker?
Yes, Docker is the fastest way to get started with Starlake. Pull the image with docker pull starlakeai/starlake:latest and run commands by mounting your project directory to /starlake in the container.
Which Java version does Starlake require?
Starlake requires Java 17 or higher. If your machine has none, the setup script installs an embedded portable Temurin 17 JDK inside the Starlake directory automatically. You can also use your own Oracle JDK or OpenJDK; verify with java -version.
How do I upgrade Starlake to a newer version?
Run starlake upgrade and pick a version from the menu, or run starlake upgrade --version X.Y.Z non-interactively. The command works in both directions (upgrade and downgrade) and re-provisions the core JAR, connectors, and the Spark runtime when the target release pins a different Spark.
How do I install a specific (older) version of Starlake?
Pass the version to the setup script directly, for example bash <(curl -sL https://starlake.ai/setup.sh) --version=1.7.1 on Linux/macOS. On an existing installation, starlake upgrade --version 1.7.1 switches to that version. In both cases every component (core JAR, connectors, Spark runtime) is installed at that release's pinned versions; there is no need to install the latest version first.
Can I install Starlake without Java?
Yes. Use the Docker installation method. The Docker image includes all dependencies, so you do not need to install Java separately.