CLI reference
This page holds the output of odctl --help and of odctl <command> --help, captured when the site was built.
odctl
Usage: odctl [OPTIONS] COMMAND [ARGS]...
ODCTL CLI - Orchestrator for the Open Data Stack.
Manage your local data engineering and MLOps infrastructure effortlessly.
Provides commands to inspect, provision, and tear down curated Docker Compose
stacks.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy │
│ it or customize the installation. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Global Options ─────────────────────────────────────────────────────────────╮
│ --verbose Enable debug-level logging across all commands. │
│ --workspace -w PATH Path to the ODCTL workspace directory (default: │
│ ./.odctl). │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Inspection & Info ──────────────────────────────────────────────────────────╮
│ list List all available profiles and their capabilities. │
│ explain Explain the details, services, images, and dependencies of a │
│ profile. │
│ ps List Docker containers managed by the Open Data Stack. │
│ info Show the installed odctl version, its workspace and the images it │
│ uses. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Workspace ──────────────────────────────────────────────────────────────────╮
│ init Initialize a local .odctl workspace for custom configurations. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Cluster Lifecycle ──────────────────────────────────────────────────────────╮
│ pull Pre-fetch Docker images without starting the containers. │
│ up Launch Open Data profiles. │
│ down Stop and remove profile containers and networks. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Management ─────────────────────────────────────────────────────────────────╮
│ logs Fetch the logs of containers managed by specific profiles. │
│ restart Restart one or more specific profiles. │
│ recreate Replace one or more profiles' containers, applying compose file │
│ changes. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# View all profiles and exposed ports
$ odctl list -d
# See exactly what the airflow profile provisions
$ odctl explain kafka-lite
# Launch specific profiles and their dependencies
$ odctl up flink-lite kafka-lite spark-lite
# Complete teardown and wipe all data
$ odctl down --all --volumes
odctl list
Usage: odctl list [OPTIONS]
List all available profiles and their capabilities.
A profile is a specific capability or technology (e.g., `kafka-lite`,
`spark-lite`, `airflow`)
provided by the Open Data Stack. This command lists them alongside their
parent stack.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --details -d Inspect docker-compose files to show exact services and │
│ exposed host ports. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# View all basic profiles
$ odctl list
# View profiles, underlying services, and ports
$ odctl list -d
odctl explain
Usage: odctl explain [OPTIONS] PROFILE
Explain the details, services, images, and dependencies of a profile.
Displays a detailed breakdown of what a profile provisions, its container
images,
exposed host ports, and any prerequisite profiles it depends on.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * profile TEXT The target profile to inspect (e.g., 'airflow', │
│ 'kafka-lite'). │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# See what the Spark profile provisions
$ odctl explain spark-lite
odctl init
Usage: odctl init [OPTIONS]
Initialize a local .odctl workspace for custom configurations.
Copies the bundled docker-compose files, configs, and `.env` template into a
local `./.odctl/` directory. You can then edit these files directly to
customize the stack.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --force -f Wipe out the existing workspace and recreate it from │
│ scratch. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# Initialize a new workspace in ./.odctl/
$ odctl init
# Recreate workspace, overwriting any local changes
$ odctl init --force
odctl pull
Usage: odctl pull [OPTIONS] [PROFILES]...
Pre-fetch Docker images without starting the containers.
Useful for downloading heavy images (like Spark, Flink, Kafka) ahead of time
or ensuring you have the latest versions before launching.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ profiles [PROFILES]... Specific profiles to pull images for. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --all -a Pull images for ALL available profiles in the registry. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# Pre-fetch images for all profiles
$ odctl pull --all
# Pre-fetch images just for Flink and Spark
$ odctl pull flink-lite kafka-lite
odctl up
Usage: odctl up [OPTIONS] PROFILES...
Launch Open Data profiles.
Resolves dependencies for the requested profiles and brings up the required
Docker Compose stacks in the correct topological order.
Refuses to start if the images for the resolved TAG are not published,
naming the tag rather than leaving Docker to report a missing manifest.
Warns about any service whose declared profile belongs to another compose
file, since the planner will never start it.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * profiles PROFILES... One or more profiles to launch (e.g., │
│ 'ch-lite', 'kafka-lite'). │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --dry-run Preview the execution plan without actually starting │
│ anything. │
│ --pull Force pull the latest images from the registry before │
│ starting. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# Launch Clickhouse, Flink, and their dependencies
$ odctl up ch-lite flink-lite
# Preview what would be launched for Airflow
$ odctl up airflow --dry-run
# Force pull latest images before launching
$ odctl up kafka-lite --pull
odctl down
Usage: odctl down [OPTIONS] [PROFILES]...
Stop and remove profile containers and networks.
Tears down the requested profiles. By default, data volumes are preserved.
Use --volumes to completely wipe the data.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ profiles [PROFILES]... Specific profiles to stop. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --all -a Stop ALL running profiles. │
│ --volumes -v Remove named volumes (⚠️ Destroys database/storage │
│ data!). │
│ --dry-run Preview the teardown plan without actually stopping │
│ anything. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# Stop specific profile(s)
$ odctl down kafka-lite
# Stop all running profiles
$ odctl down --all
# Complete teardown and wipe all data
$ odctl down --all -v
odctl ps
Usage: odctl ps [OPTIONS] [PROFILES]...
List Docker containers managed by the Open Data Stack.
Filters out system containers and only shows those belonging to requested
profiles.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ profiles [PROFILES]... Specific profiles to inspect. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --all -a Show all containers managed by ODCTL. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# Show all running containers managed by ODCTL
$ odctl ps --all
# Show containers just for specific profiles
$ odctl ps kafka-lite spark-lite
odctl info
Usage: odctl info [OPTIONS]
Show the installed odctl version, its workspace and the images it uses.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
odctl logs
Usage: odctl logs [OPTIONS] PROFILES...
Fetch the logs of containers managed by specific profiles.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * profiles PROFILES... Profiles to fetch logs for. [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --service -s TEXT Filter to a specific compose service (Use 'odctl │
│ ps' to find names). │
│ --follow -f Follow log output in real-time. │
│ --tail -n TEXT Number of lines to show from the end of the │
│ logs. │
│ [default: all] │
│ --timestamps -t Show timestamps. │
│ --since TEXT Show logs since timestamp or relative (e.g. │
│ '42m'). │
│ --until TEXT Show logs before a timestamp or relative. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Examples:
# Tail the last 50 lines of all Flink containers and follow live
$ odctl logs flink-lite -n 50 -f
# View logs strictly for the JobManager service
$ odctl logs flink-lite -s jobmanager
# Show logs with timestamps for the last 10 minutes
$ odctl logs kafka-lite --since 10m -t
odctl restart
Usage: odctl restart [OPTIONS] PROFILES...
Restart one or more specific profiles.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * profiles PROFILES... Profiles to restart. [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
odctl recreate
Usage: odctl recreate [OPTIONS] PROFILES...
Replace one or more profiles' containers, applying compose file changes.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * profiles PROFILES... Profiles to recreate. [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --pull Pull images before recreating. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯