Skip to content

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: run an open data stack on your machine, with its services already
 connected, from one command.

 Commands list the profiles, start and stop them with Docker Compose, and show
 what is running.

╭─ 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 and whether Docker is reachable.  │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ 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 kafka-lite 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 (for example, `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      <str>  The target profile to inspect (for example,         │
│                          '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.                                                  │
│ --yes    -y        Answer yes to the confirmation prompt, for scripts and    │
│                    CI.                                                       │
│ --help             Show this message and exit.                               │
╰──────────────────────────────────────────────────────────────────────────────╯

 Examples:

   # Initialize a new workspace in ./.odctl/

   $ odctl init


   # Recreate workspace, overwriting any local changes

   $ odctl init --force


   # The same, without the prompt, as in a script

   $ odctl init --force --yes

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 for fetching a tag that changed in the registry before launching.

╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│   profiles      <str>  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 Kafka

   $ 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      <str>  One or more profiles to launch (for example,       │
│                           'ch-lite', 'kafka-lite').                          │
│                           [required]                                         │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --dry-run          Preview the execution plan without actually starting      │
│                    anything.                                                 │
│ --pull             Pull the images again before starting, to fetch a tag     │
│                    that changed in the registry.                             │
│ --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


   # Pull the images again 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. Data kept inside a container is removed
 with it.
 Unnamed volumes stay on disk, unused.
 Use --volumes to also remove the volumes, such as the shared jar volume.

╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│   profiles      <str>  Specific profiles to stop.                            │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --all      -a        Stop ALL running profiles.                              │
│ --volumes  -v        Also remove named volumes, including the shared jar     │
│                      volume once no other profile uses it.                   │
│ --dry-run            Preview the teardown plan without actually stopping     │
│                      anything.                                               │
│ --yes      -y        Answer yes to the confirmation prompt, for scripts and  │
│                      CI.                                                     │
│ --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


   # The same, without the prompt, as in a script

   $ odctl down --all -v --yes

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      <str>  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

1
2
3
4
5
6
7
Usage: odctl info [OPTIONS]

 Show the installed odctl version and whether Docker is reachable.

╭─ 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      <str>  Profiles to fetch logs for. [required]             │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --service     -s      <str>  Filter to a specific compose service (Use       │
│                              'odctl ps' to find names).                      │
│ --follow      -f             Follow log output in real-time.                 │
│ --tail        -n      <str>  Number of lines to show from the end of the     │
│                              logs.                                           │
│                              [default: all]                                  │
│ --timestamps  -t             Show timestamps.                                │
│ --since               <str>  Show logs since timestamp or relative (for      │
│                              example '42m').                                 │
│ --until               <str>  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      <str>  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      <str>  Profiles to recreate. [required]                   │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --pull          Pull images before recreating.                               │
│ --help          Show this message and exit.                                  │
╰──────────────────────────────────────────────────────────────────────────────╯