Skip to main content

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

SubcommandDescription
demo startStart the local demo cluster
demo teardownRemove the demo cluster and its config
demo statusCheck the status of the demo container
demo execRun a non-interactive command inside the container
demo reloadReload 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:
ServicePort
Flyte console (UI)30080
FlyteAdmin gRPC30081
Kubernetes API6443 (configurable via --port)
MinIO30002
Flags:
FlagDescription
--versionFlyte release version to use (from GitHub tags)
--imageFully qualified Docker image to use
--imagePullPolicyPull policy: Always, IfNotPresent, or Never
--preUse the latest pre-release
--source(deprecated) Mount local source code
--envEnvironment variables in KEY=VALUE format (repeatable)
--devStart only MinIO and PostgreSQL
--dryRunPrint Docker commands without executing them
--forceRemove an existing sandbox before starting
--portKubernetes API port (default: 6443)
--disable-agentDisable the agent service
--disable-connectorDisable the connector service

demo teardown

Remove the demo cluster and delete the flytectl config created by demo start.
flytectl demo teardown
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.
flytectl demo status
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

1

Start the demo cluster

flytectl demo start
Wait for the cluster to become healthy. The config file at ~/.flyte/config.yaml is written automatically.
2

Register example workflows

flytectl register examples -d development -p flytesnacks
3

Open the Flyte UI

Navigate to http://localhost:30080/console in your browser.
4

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
5

Stop the cluster when done

flytectl demo teardown

Build docs developers (and LLMs) love