Overview
flytectl demo manages a fully standalone local Flyte environment. The demo cluster runs as a single Docker container and includes FlyteAdmin, FlytePropeller, the Flyte console UI, MinIO (object storage), and PostgreSQL.
flytectl demo <subcommand> [flags]
Subcommands
| Subcommand | Description |
|---|
demo start | Start the local demo cluster |
demo teardown | Remove the demo cluster and its config |
demo status | Check the status of the demo container |
demo exec | Run a non-interactive command inside the container |
demo reload | Reload the demo cluster |
demo start
Start a local Flyte demo cluster in Docker.
# Start with default settings
flytectl demo start
# Start with a different Kubernetes API port (default: 6443)
flytectl demo start --port 6443
# Start a specific Flyte version
flytectl demo start --version v1.13.0
# Start with the latest pre-release
flytectl demo start --pre
# Mount source code into the cluster
flytectl demo start --source $HOME/flyteorg/flytesnacks
# Use a custom Docker image
flytectl demo start --image docker.io/my-override:latest
# Set the image pull policy
flytectl demo start --image docker.io/my-override:latest --imagePullPolicy Always
# Pass environment variables to the container
flytectl demo start --env FLYTE_TIMEOUT=700
# Pass multiple environment variables
flytectl demo start --env USER=foo --env PASSWORD=bar
# Dev mode: start only MinIO and PostgreSQL (no Flyte services)
flytectl demo start --dev
# Print the Docker commands without running them
flytectl demo start --dryRun
flytectl demo requires Flyte >= v1.0.0. Older versions are not supported.
After the cluster starts, flytectl writes ~/.flyte/config.yaml automatically pointing to the local endpoint.
Accessing the UI:
Once started, the Flyte console is available at http://localhost:30080/console.
Default port mappings:
| Service | Port |
|---|
| Flyte console (UI) | 30080 |
| FlyteAdmin gRPC | 30081 |
| Kubernetes API | 6443 (configurable via --port) |
| MinIO | 30002 |
Flags:
| Flag | Description |
|---|
--version | Flyte release version to use (from GitHub tags) |
--image | Fully qualified Docker image to use |
--imagePullPolicy | Pull policy: Always, IfNotPresent, or Never |
--pre | Use the latest pre-release |
--source | (deprecated) Mount local source code |
--env | Environment variables in KEY=VALUE format (repeatable) |
--dev | Start only MinIO and PostgreSQL |
--dryRun | Print Docker commands without executing them |
--force | Remove an existing sandbox before starting |
--port | Kubernetes API port (default: 6443) |
--disable-agent | Disable the agent service |
--disable-connector | Disable the connector service |
demo teardown
Remove the demo cluster and delete the flytectl config created by demo start.
All data stored in the demo cluster (workflows, executions, MinIO objects) is deleted when you run demo teardown.
demo status
Check whether the demo container is running.
The command inspects the local Docker environment and prints the container status.
demo exec
Execute a non-interactive command inside the running demo container and return the output immediately. By default, commands run from /root inside the container.
# List files in the container's working directory
flytectl demo exec -- ls -al
# Check the working directory
flytectl demo exec -- pwd
Pass arguments after -- to ensure they are forwarded to the container rather than interpreted by flytectl.
Quick start with demo
Start the demo cluster
Wait for the cluster to become healthy. The config file at ~/.flyte/config.yaml is written automatically. Register example workflows
flytectl register examples -d development -p flytesnacks
Open the Flyte UI
Navigate to http://localhost:30080/console in your browser.
Launch an execution
flytectl get launchplan -p flytesnacks -d development \
core.flyte_basics.hello_world.my_wf --execFile exec.yaml
flytectl create execution --execFile exec.yaml \
-p flytesnacks -d development
Stop the cluster when done