Skip to main content

Command Reference

1. Global Options

FlagShortDefaultDescription
--output-otableOutput format: table, json, yaml, csv.
--quiet-qFalseSuppress informational output (errors still shown).
--verbose-vFalseEnable verbose/debug output.
--no-headersFalseOmit column headers from table and CSV output.
--field-selectorNoneComma-separated list of fields to include in output (e.g. name,status).
--version-VPrint version and exit.
$ ilum --version
$ ilum -v install
$ ilum --output json status
$ ilum --quiet --output json module list

2. ilum init

Interactive setup wizard for the Ilum CLI.

Synopsis

ilum init [OPTIONS]

Options

FlagShortDefaultDescription
--yes-yFalseNon-interactive mode with defaults.
--profile-pdefaultProfile name to create.

Wizard Steps

StepAction
1. PreflightCheck for helm (>= 3.12), kubectl (>= 1.28), and docker (>= 24.0). In interactive mode, offers to install any missing or outdated tool automatically using platform-appropriate methods (see Prerequisites). In non-interactive mode (--yes), raises an error if a tool is missing.
2. ClusterDetect kubecontexts or create a local cluster (k3d, minikube, kind). If creating a cluster, also checks for the cluster provider binary and offers to install it.
3. ProfilePrompt for profile name, release name, namespace.
4. ModulesInteractive checkbox grouped by category with dependency resolution.
5. ConfirmDisplay summary table and ask for confirmation.
6. SaveWrite the profile to config.yaml.

Examples

# Interactive wizard
$ ilum init

# Non-interactive with defaults
$ ilum init --yes

# Create a named profile
$ ilum init --profile staging

3. ilum quickstart

Install Ilum in one command with sensible defaults.

Synopsis

ilum quickstart [OPTIONS]

Options

FlagShortDefaultDescription
--providerminikubeLocal cluster provider if a new cluster is needed (minikube, k3d, kind).
--profile-pdefaultProfile name to create.
--module-mNoneAdditional module to enable (repeatable).
--presetNoneDeployment preset to apply (e.g. tiny, default, data-engineering, production).
--timeout15mHelm install timeout.

Steps Performed

StepAction
1. PreflightCheck for helm (>= 3.12), kubectl (>= 1.28), docker (>= 24.0). In interactive mode, offers to install missing tools automatically (see Prerequisites). In non-interactive mode, raises an error if a tool is missing.
2. ClusterProbe current kubecontext. If unreachable, create a local cluster with the dev preset (4 CPUs, 8 GB). Also checks for the cluster provider binary and offers to install it.
3. ProfileCreate a profile with default modules plus any extras from --module.
4. InstallRun helm install with --atomic, auto-resolve NodePort conflicts.

Cluster Auto-Detection

Quickstart probes the current kubeconfig context by listing namespaces. If the API server responds within 5 seconds, the existing cluster is used. Otherwise, a new local cluster is created using the provider specified by --provider (default: minikube).

Examples

# Install with all defaults (detects cluster, default modules)
$ ilum quickstart

# Create a k3d cluster instead of minikube
$ ilum quickstart --provider k3d

# Enable additional modules beyond defaults
$ ilum quickstart -m sql -m airflow

# Use a named profile
$ ilum quickstart --profile staging

# Increase Helm install timeout
$ ilum quickstart --timeout 20m

4. ilum install

Install the Ilum platform via Helm.

Synopsis

ilum install [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--version"" (latest)Chart version to install.
--values-fNoneValues file (repeatable).
--setNoneHelm --set flag (repeatable).
--module-mNoneModule to enable (repeatable).
--presetNoneDeployment preset to apply (e.g. tiny, default, data-engineering, production).
--atomicTrueUse --atomic for Helm install.
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Module Priority Rule

Modules are resolved in this order:

  1. Modules passed via --module flags.
  2. Modules saved in the active profile (get_enabled_modules).
  3. Default-enabled modules from the module registry.

NodePort Conflict Resolution

Before Helm install, the CLI checks for NodePort conflicts on the cluster. If a default NodePort (e.g. 31777 for ilum-ui) is already allocated, the user is prompted to select a free port. In --yes mode, a free port is auto-assigned.

Examples

# Install with defaults
$ ilum install

# Install a specific version with modules
$ ilum install --version 6.7.0 --module jupyter --module sql

# Install into a custom namespace, non-interactive
$ ilum install -n ilum-prod -r ilum-prod --yes

# Dry-run preview
$ ilum install --dry-run

# Install with custom values file and overrides
$ ilum install -f custom-values.yaml --set ilum-core.replicaCount=3

5. ilum upgrade

Upgrade an existing Ilum installation.

Synopsis

ilum upgrade [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--version"" (latest)Chart version to upgrade to.
--values-fNoneValues file (repeatable).
--setNoneHelm --set flag (repeatable).
--module-mNoneModule to enable (repeatable).
--atomicTrueUse --atomic for Helm upgrade.
--force-rollbackFalseRollback a stuck release before upgrading.
--reset-defaultsFalseReset to new chart defaults before applying user values (uses Helm's --reset-then-reuse-values). Enabled automatically when the chart version changes.
--reuse-valuesFalseForce reuse of previous values even when chart version changes. Overrides the automatic --reset-defaults behavior.
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Values Safety Pipeline

  1. Stuck release detection -- if the release is in pending-install, pending-upgrade, or pending-rollback state, the CLI blocks unless --force-rollback is passed.
  2. Auto-reset chart defaults -- when the chart version changes, the CLI automatically uses --reset-then-reuse-values so new chart defaults (e.g. updated image tags) take effect. Pass --reuse-values to opt out.
  3. Drift detection -- external changes made since the last CLI operation are displayed as a diff table and preserved during upgrade.
  4. Breaking change warnings -- version transitions are checked for known breaking changes.
  5. No-op detection -- if the target version matches the current version and there are no value changes or new modules, the CLI exits early with a success message.

Examples

# Upgrade to latest
$ ilum upgrade

# Upgrade to a specific version
$ ilum upgrade --version 6.8.0

# Recover a stuck release and upgrade
$ ilum upgrade --force-rollback

# Upgrade with additional modules
$ ilum upgrade --module airflow --module superset

# Dry-run preview
$ ilum upgrade --dry-run

6. ilum uninstall

Uninstall the Ilum platform.

Synopsis

ilum uninstall [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--delete-dataFalseDelete PersistentVolumeClaims after uninstall.
--delete-namespaceFalseDelete the namespace after uninstall.

Idempotent Behavior

If the release does not exist, ilum uninstall exits with code 0 and prints an informational message. It does not fail.

Destructive Flag Confirmation

When --delete-data or --delete-namespace is passed (without --yes), the user must type the release name to confirm.

Examples

# Standard uninstall
$ ilum uninstall

# Uninstall and delete all data
$ ilum uninstall --delete-data

# Uninstall, delete data, and delete namespace
$ ilum uninstall --delete-data --delete-namespace --yes

# Dry-run preview
$ ilum uninstall --dry-run

6b. ilum cleanup

Full environment teardown with tiered, opt-in destructiveness. Combines uninstall, cluster deletion, config removal, dependency removal, and CLI self-uninstall into a single command.

Synopsis

ilum cleanup [OPTIONS]

Options

FlagShortDefaultDescription
--clusterFalseAlso delete CLI-managed local k8s cluster.
--configFalseAlso remove CLI config/state/cache directories.
--depsFalseAlso remove dependencies (helm, kubectl, minikube, k3d, kind, docker).
--selfFalseAlso uninstall the CLI itself (always last, never included in --all).
--allFalseShorthand for --cluster --config --deps.
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--yes-yFalseSkip all confirmations.
--dry-runFalsePreview without executing.

Tiers

The command executes in order:

  1. Tier 1 (always): Uninstall Helm release + delete PVCs + delete namespace. Requires typing release name to confirm.
  2. Tier 2 (--cluster): Delete CLI-managed local cluster. Requires typing cluster name.
  3. Tier 3 (--config): Remove CLI directories and Helm repo. Requires typing DELETE.
  4. Tier 4 (--deps): Remove dependencies. Requires typing REMOVE per tool (or REMOVE DOCKER for Docker).
  5. Tier 5 (--self): Uninstall the CLI itself. Requires typing UNINSTALL.

Each tier is independent -- if one fails, the next still runs.

Examples

# Preview what would be removed
$ ilum cleanup --all --dry-run

# Uninstall release only (Tier 1)
$ ilum cleanup --yes

# Full teardown: release + cluster + config + dependencies
$ ilum cleanup --all --yes

# Full teardown including CLI itself
$ ilum cleanup --all --self --yes

# Just release + cluster, skip deps
$ ilum cleanup --cluster --yes

7. ilum connect

Connect the CLI to an existing Ilum installation.

Synopsis

ilum connect [OPTIONS]

Options

FlagShortDefaultDescription
--release-rNoneHelm release name (skips auto-detection).
--namespace-nNoneKubernetes namespace (scans all if omitted).
--contextNoneKubernetes context.
--profile-pdefaultProfile name to create or update.
--yes-yFalseSkip confirmation prompts.
--no-switchFalseDon't switch active profile after connecting.

Auto-detect vs Direct Mode

ConditionModeBehavior
--release and --namespace both setDirectValidate the specific release in the given namespace.
--release set, --namespace omittedScanScan all namespaces for the named release.
Neither setScanScan all namespaces for any Ilum releases.

When multiple releases are found in scan mode, a table is displayed and the user selects one. In --yes mode, the first release is auto-selected.

Post-connect Actions

  • Enabled modules are detected from live Helm values and synced to the profile.
  • A values snapshot is saved for drift detection.
  • Stuck releases produce a warning with recovery instructions.

Examples

# Auto-detect
$ ilum connect

# Direct mode
$ ilum connect --release ilum --namespace production

# Connect to a named profile
$ ilum connect --profile staging

# Non-interactive
$ ilum connect --yes

8. ilum status

Show the status of an Ilum installation.

Synopsis

ilum status [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--pods/--no-podsTrueShow pod readiness.
--modules/--no-modulesTrueShow enabled modules.
--wait-wFalseBlock until all pods are ready.
--wait-timeout300Seconds to wait when --wait is used (0 = unlimited).
--eventsFalseInclude recent Kubernetes events in output.
--events-typeNoneFilter events by type: Normal, Warning.
--events-since5mShow events newer than this duration (e.g. 10m, 1h).

Examples

# Full status
$ ilum status

# Status without pod details
$ ilum status --no-pods

# Status for a specific release
$ ilum status -r my-ilum -n staging

# Wait for all pods to become ready (up to 5 minutes)
$ ilum status --wait

# Wait with a custom timeout
$ ilum status --wait --wait-timeout 600

# Include recent warning events
$ ilum status --events --events-type Warning

# Show events from the last hour
$ ilum status --events --events-since 1h

8b. ilum values

View or export live Helm values for the current release.

Synopsis

ilum values [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--pathNoneDot-notation path to a specific key (e.g. ilum-core.replicaCount).
--all-aFalseShow all computed values (chart defaults + overrides), not just user-supplied.
--diffFalseShow a diff between user-supplied values and chart defaults.
--revisionNoneShow values from a specific Helm revision number.
--exportNoneExport values to a file path instead of printing to stdout.

Examples

# Show user-supplied values
$ ilum values

# Show a specific key
$ ilum values --path ilum-core.replicaCount

# Show all computed values
$ ilum values --all

# Show values from a previous revision
$ ilum values --revision 3

# Diff user values against chart defaults
$ ilum values --diff

# Export values to a file
$ ilum values --export my-values.yaml

# Combine path filter with JSON output
$ ilum values --path mongodb --output json

8c. ilum diff

Compare Helm values across different sources.

Synopsis

ilum diff [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--source-sdefaultsSource to compare live values against: defaults, file, revision, snapshot.
--values-file-fNoneValues file to compare against (required when --source file).
--revisionNoneHelm revision number to compare against (required when --source revision).
--pathNoneDot-notation path to limit comparison scope (e.g. ilum-core).

Source Modes

SourceDescription
defaultsCompare live values against chart default values.
fileCompare live values against a local values file.
revisionCompare live values against a previous Helm revision.
snapshotCompare live values against the last CLI snapshot (drift detection).

Examples

# Diff live values against chart defaults
$ ilum diff

# Diff against a local values file
$ ilum diff --source file --values-file custom-values.yaml

# Diff against a specific revision
$ ilum diff --source revision --revision 2

# Diff against the last CLI snapshot (detect drift)
$ ilum diff --source snapshot

# Limit diff to a specific path
$ ilum diff --path ilum-core

8d. ilum rollback

Roll back the Ilum release to a previous Helm revision.

Synopsis

ilum rollback [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--revisionNoneTarget revision number (defaults to previous revision if omitted).
--dry-runFalsePreview the rollback without executing.
--yes-yFalseSkip confirmation prompt.
--timeout10mHelm timeout.

Examples

# Rollback to the previous revision
$ ilum rollback

# Rollback to a specific revision
$ ilum rollback --revision 3

# Dry-run preview
$ ilum rollback --dry-run

# Non-interactive rollback
$ ilum rollback --revision 5 --yes

# Rollback with a longer timeout
$ ilum rollback --timeout 15m

8e. ilum exec

Open an interactive shell session inside a module's pod.

Synopsis

ilum exec MODULE [OPTIONS]

Arguments

ArgumentRequiredDescription
MODULEYesModule name (e.g. core, jupyter, sql).

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--shell/bin/shShell binary to use (e.g. /bin/bash).
--container-cNoneContainer name (auto-detected if omitted).
--podNoneSpecific pod name (auto-detected if omitted).
--commandNoneRun a single command instead of opening an interactive shell.

Examples

# Open a shell in the core pod
$ ilum exec core

# Use bash instead of sh
$ ilum exec core --shell /bin/bash

# Exec into a specific container
$ ilum exec jupyter --container ilum-jupyter

# Run a single command
$ ilum exec core --command "cat /opt/ilum/conf/application.conf"

# Exec into a specific pod
$ ilum exec core --pod ilum-core-0

8f. ilum top

Show resource usage (CPU and memory) for module pods.

Synopsis

ilum top [MODULE] [OPTIONS]

Arguments

ArgumentRequiredDescription
MODULENoModule name to filter (shows all modules if omitted).

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--sort-bycpuSort column: cpu, memory, name.
--watch-wFalseContinuously refresh the display.
--interval5Refresh interval in seconds when --watch is used.

Examples

# Show resource usage for all modules
$ ilum top

# Show resource usage for a specific module
$ ilum top core

# Sort by memory usage
$ ilum top --sort-by memory

# Watch mode with 10-second refresh
$ ilum top --watch --interval 10

# JSON output for scripting
$ ilum top --output json

9. ilum logs

Show logs for an Ilum module's pod.

Synopsis

ilum logs MODULE [OPTIONS]

Arguments

ArgumentRequiredDescription
MODULEYesModule name (e.g. core, jupyter, sql).

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--follow-fFalseStream logs in real time.
--tail100Number of lines to show (0 for all).
--container-cNoneContainer name (auto-detected if omitted).
--previous-pFalseShow logs from previously terminated container.
--max-duration0Stop --follow after N seconds (0 = unlimited).

Piping Note

Output is written to stdout via typer.echo, so logs can be piped to other tools:

$ ilum logs core --tail 0 | grep ERROR
$ ilum logs core -f | tee /tmp/core.log

Examples

# Last 100 lines from core
$ ilum logs core

# Stream jupyter logs
$ ilum logs jupyter --follow

# All logs from a specific container
$ ilum logs core --tail 0 --container ilum-core

# Previous container logs (after restart)
$ ilum logs core --previous

10. ilum doctor

Run health checks on the Ilum installation.

Synopsis

ilum doctor [OPTIONS]

Options

FlagShortDefaultDescription
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--release-rfrom profileHelm release name.
--check-cNoneRun a single check by name.
--failures-onlyFalseOnly show failed and warning checks.
--fixFalseAuto-fix simple issues (e.g., add missing Helm repo).

Checks Table

Check NamePhaseWhat it verifies
helm1 - BinariesHelm is installed and version >= 3.12
kubectl1 - Binarieskubectl is installed and version >= 1.28
docker1 - BinariesDocker is installed and version >= 24.0
helm-repo2 - Helm repoThe ilum Helm repo is configured (charts.ilum.cloud)
cluster3 - ConnectivityKubernetes cluster is reachable
namespace4 - Cluster-dependentTarget namespace exists
pods4 - Cluster-dependentAll pods are healthy (detects CrashLoopBackOff)
pvcs4 - Cluster-dependentAll PVCs are bound (detects Pending PVCs)
rbac4 - Cluster-dependentRequired RBAC permissions are granted
release4 - Cluster-dependentHelm release exists and is not stuck or failed
compatibility4 - Cluster-dependentKubernetes version >= 1.28
service-endpoints4 - Cluster-dependentService endpoints have ready addresses
health-endpoints4 - Cluster-dependentHealth check endpoints respond for core, airflow, superset, minio

Phase Gating

If the cluster check fails (phase 3), all phase-4 checks are skipped with status SKIP.

Examples

# Run all checks
$ ilum doctor

# Run a single check
$ ilum doctor --check pods

# Check against a specific release
$ ilum doctor -r my-ilum -n staging

11. ilum module

Manage Ilum platform modules.

11.1 ilum module list

List all available Ilum modules.

Synopsis

ilum module list [OPTIONS]

Options

FlagShortDefaultDescription
--category-cNoneFilter by category.
--enabled/--disabledNoneFilter by default-enabled status.
--search-sNoneSearch modules by name or description.

Examples

# List all modules
$ ilum module list

# List only notebook modules
$ ilum module list --category notebook

# List only default-enabled modules
$ ilum module list --enabled

# Search for modules matching a term
$ ilum module list --search kafka

11.2 ilum module show

Show detailed information about a module.

Synopsis

ilum module show NAME

Arguments

ArgumentRequiredDescription
NAMEYesModule name to inspect.

Examples

$ ilum module show sql
$ ilum module show hive-metastore

11.3 ilum module tree

Show the dependency tree for a module with resource estimates.

Synopsis

ilum module tree NAME

Arguments

ArgumentRequiredDescription
NAMEYesModule name to display tree for.

Examples

$ ilum module tree sql
$ ilum module tree langfuse

11.4 ilum module enable

Enable one or more modules on a running Ilum release.

Synopsis

ilum module enable MODULES... [OPTIONS]

Arguments

ArgumentRequiredDescription
MODULESYesModules to enable (one or more).

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--reset-defaultsFalseReset to new chart defaults before applying user values. Use when upgrading across chart versions with breaking changes.
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Enable a single module
$ ilum module enable jupyter

# Enable multiple modules
$ ilum module enable airflow superset

# Enable with additional Helm overrides
$ ilum module enable sql --set ilum-sql.replicaCount=2

# Dry-run preview
$ ilum module enable trino --dry-run

11.5 ilum module disable

Disable one or more modules on a running Ilum release.

Synopsis

ilum module disable MODULES... [OPTIONS]

Arguments

ArgumentRequiredDescription
MODULESYesModules to disable (one or more).

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--reset-defaultsFalseReset to new chart defaults before applying user values. Use when upgrading across chart versions with breaking changes.
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Disable a module
$ ilum module disable zeppelin

# Disable multiple modules
$ ilum module disable airflow superset

# Dry-run preview
$ ilum module disable kafka --dry-run

11.6 ilum module status

Show live module status on a running Ilum release.

Synopsis

ilum module status [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--category-cNoneFilter by module category.
--timeout10mHelm timeout.

Examples

# Show all module statuses
$ ilum module status

# Filter by category
$ ilum module status --category orchestration

12. ilum config

Manage Ilum CLI configuration.

12.1 ilum config show

Show the current configuration (or a specific key).

Synopsis

ilum config show [KEY]

Arguments

ArgumentRequiredDescription
KEYNoDot-notation key to display (e.g. active_profile).

Examples

# Show full config
$ ilum config show

# Show a specific key
$ ilum config show active_profile

12.2 ilum config set

Set a configuration value.

Synopsis

ilum config set KEY VALUE

Arguments

ArgumentRequiredDescription
KEYYesDot-notation key (e.g. active_profile).
VALUEYesValue to set.

Examples

$ ilum config set active_profile staging

12.3 ilum config path

Print the configuration file path.

Synopsis

ilum config path

Examples

# Linux / macOS
$ ilum config path
/home/user/.config/ilum/config.yaml

# Windows
PS> ilum config path
C:\Users\user\AppData\Roaming\ilum\config.yaml

12.4 ilum config init

Create a default configuration file.

Synopsis

ilum config init [OPTIONS]

Options

FlagShortDefaultDescription
--force-fFalseOverwrite existing config.

Examples

# Create config if it doesn't exist
$ ilum config init

# Overwrite existing config
$ ilum config init --force

12.5 ilum config edit

Open the configuration file in $EDITOR (falls back to vi on Linux/macOS, notepad on Windows).

Synopsis

ilum config edit

Examples

$ EDITOR=nano ilum config edit

12.6 ilum config use

Switch the active profile.

Synopsis

ilum config use PROFILE

Arguments

ArgumentRequiredDescription
PROFILEYesProfile name to switch to.

Examples

$ ilum config use staging
$ ilum config use production

12.7 ilum config list-profiles

List all configured profiles.

Synopsis

ilum config list-profiles

Examples

$ ilum config list-profiles

12.8 ilum config validate

Validate the configuration file for correctness.

Synopsis

ilum config validate

Examples

$ ilum config validate

12.9 ilum config backup

Create a backup copy of the configuration file.

Synopsis

ilum config backup

Examples

$ ilum config backup

12.10 ilum config export

Export a profile for team sharing.

Synopsis

ilum config export PROFILE [OPTIONS]

Arguments

ArgumentRequiredDescription
PROFILEYesProfile name to export.

Options

FlagShortDefaultDescription
--out-o<profile>.yamlOutput file path.

Examples

# Export to default filename
$ ilum config export production

# Export to a specific file
$ ilum config export production --out prod-profile.yaml

12.11 ilum config import

Import a profile from a file.

Synopsis

ilum config import FILE [OPTIONS]

Arguments

ArgumentRequiredDescription
FILEYesPath to the profile file to import.

Options

FlagShortDefaultDescription
--name-nfrom fileProfile name to use.

Examples

# Import with the name from the file
$ ilum config import prod-profile.yaml

# Import with a custom name
$ ilum config import prod-profile.yaml --name production

13. ilum cluster

Manage local Kubernetes clusters.

13.1 ilum cluster create

Create a local Kubernetes cluster.

Synopsis

ilum cluster create [OPTIONS]

Options

FlagShortDefaultDescription
--providerk3dCluster provider: minikube, k3d, kind.
--presetdevResource preset: dev, full.
--name"" (from preset)Cluster name.

Presets Table

PresetCPUsMemoryDefault Name
dev612gilum-dev
full818gilum

Examples

# Create with defaults (k3d, dev preset)
$ ilum cluster create

# Create a minikube cluster with full resources
$ ilum cluster create --provider minikube --preset full

# Create with a custom name
$ ilum cluster create --name my-ilum-cluster

13.2 ilum cluster delete

Delete a local Kubernetes cluster.

Synopsis

ilum cluster delete NAME

Arguments

ArgumentRequiredDescription
NAMEYesCluster name to delete.

Examples

$ ilum cluster delete ilum-dev

13.3 ilum cluster list

List tracked local Kubernetes clusters.

Synopsis

ilum cluster list

Examples

$ ilum cluster list

14. ilum preset list

List all available deployment presets.

Synopsis

ilum preset list

Description

Lists all available deployment presets with their names, descriptions, and module counts. Presets are curated collections of modules designed for common deployment scenarios. The output is a Rich table with three columns: Name, Description, and Modules.

Output Columns

ColumnDescription
NamePreset identifier used with --preset flags.
DescriptionShort summary of the preset's purpose.
ModulesNumber of modules included in the preset.

Examples

# List all presets
$ ilum preset list

15. ilum airgap images

List container images required by selected modules.

Synopsis

ilum airgap images [OPTIONS]

Description

Lists all container images required by the selected modules. Image references are extracted by running helm template against the chart and parsing the rendered manifests for container image fields. This is useful for pre-pulling images or preparing air-gapped environments.

Options

FlagShortDefaultDescription
--presetNoneDeployment preset to select modules from.
--module-mNoneModule to include (repeatable).
--version"" (latest)Chart version to template.
--formattableOutput format: table or plain.

Examples

# List images for default modules
$ ilum airgap images

# List images for a preset
$ ilum airgap images --preset production

# List images for specific modules
$ ilum airgap images -m core -m jupyter -m mongodb

# Plain output for scripting
$ ilum airgap images --preset tiny --format plain

# List images for a specific chart version
$ ilum airgap images --version 6.7.0

16. ilum airgap export

Export images and chart into a portable air-gapped bundle.

Synopsis

ilum airgap export OUTPUT_DIR [OPTIONS]

Description

Exports the Helm chart and all required container images into a portable bundle directory. The bundle includes a manifest.json file describing the contents, chart version, and image list. This bundle can be transferred to an air-gapped environment and imported with ilum airgap import.

Arguments

ArgumentRequiredDescription
OUTPUT_DIRYesDirectory to write the bundle to. Created if it does not exist.

Options

FlagShortDefaultDescription
--presetNoneDeployment preset to select modules from.
--module-mNoneModule to include (repeatable).
--version"" (latest)Chart version to export.

Examples

# Export default modules
$ ilum airgap export ./bundle

# Export a specific preset
$ ilum airgap export ./bundle --preset analyst

# Export specific modules and version
$ ilum airgap export ./bundle -m core -m jupyter --version 6.7.0

17. ilum airgap import

Import an air-gapped bundle into a private container registry.

Synopsis

ilum airgap import BUNDLE_DIR --registry URL

Description

Imports a previously exported air-gapped bundle into a private container registry. Reads the manifest.json from the bundle directory, loads the container images, re-tags them for the target registry, and pushes them. The Helm chart is also made available for installation from the bundle.

Arguments

ArgumentRequiredDescription
BUNDLE_DIRYesPath to the bundle directory created by ilum airgap export.

Options

FlagShortDefaultDescription
--registryrequiredTarget container registry URL (e.g. registry.internal:5000).

Examples

# Import bundle into a private registry
$ ilum airgap import ./bundle --registry registry.internal:5000

# Import from an absolute path
$ ilum airgap import /mnt/usb/ilum-bundle --registry harbor.corp.local/ilum

18. ilum history

View the operation audit log.

Synopsis

ilum history [OPTIONS]

Options

FlagShortDefaultDescription
--last-n20Number of recent operations to show.
--operationNoneFilter by operation type (install, upgrade, enable, disable, uninstall).
--release-rfrom profileFilter by Helm release name.

Examples

# Show recent operations
$ ilum history

# Show last 5 operations
$ ilum history --last 5

# Filter by operation type
$ ilum history --operation upgrade

# JSON output for CI/CD
$ ilum history --last 10 --output json

19. ilum deps

Manage CLI dependencies (helm, kubectl, docker, k3d, etc.).

ilum deps install

Install missing CLI dependencies.

Synopsis

ilum deps install [TOOL...] [OPTIONS]

Arguments

ArgumentRequiredDescription
TOOLNoOne or more tool names to install. If omitted, installs all core tools (helm, kubectl, docker) plus the selected provider.

Options

FlagDefaultDescription
--providerk3dCluster provider to install: k3d, minikube, kind.
--dry-runFalsePreview what would be installed without executing.

Examples

# Install all missing core tools + default provider (k3d)
$ ilum deps install

# Install only specific tools
$ ilum deps install helm kubectl

# Install with a different provider
$ ilum deps install --provider kind

# Preview without executing
$ ilum deps install --dry-run

ilum deps list

List CLI dependencies and their status.

Synopsis

ilum deps list

Examples

$ ilum deps list

19b. ilum access

Manage access to the Ilum UI via port-forward, NodePort, or ingress.

ilum access open

Open the Ilum UI in a browser.

Synopsis

ilum access open [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--access-afrom profileAccess method: nodeport, port-forward, or ingress.
--port-p9777Local port to forward to (port-forward mode).
--address127.0.0.1Local address to bind to (port-forward mode).
--no-browserFalseDon't open a browser automatically.

Examples

# Open UI with default access method (from profile)
$ ilum access open

# Open via port-forward on a custom port
$ ilum access open --access port-forward --port 8080

# Open via NodePort without launching browser
$ ilum access open --access nodeport --no-browser

# Open via ingress
$ ilum access open --access ingress

ilum access ingress enable

Enable ingress for the Ilum UI via Helm upgrade.

Synopsis

ilum access ingress enable --host HOSTNAME [OPTIONS]

Options

FlagShortDefaultDescription
--hostrequiredIngress hostname.
--tlsFalseEnable TLS.
--tls-secret""TLS secret name.
--class""Ingress class name.
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Enable ingress with a hostname
$ ilum access ingress enable --host ilum.example.com

# Enable ingress with TLS
$ ilum access ingress enable --host ilum.example.com --tls

# Enable with a specific ingress class
$ ilum access ingress enable --host ilum.example.com --class nginx

ilum access ingress disable

Disable ingress for the Ilum UI.

Synopsis

ilum access ingress disable [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Disable ingress
$ ilum access ingress disable --yes

ilum access ingress show

Show the current ingress configuration.

Synopsis

ilum access ingress show [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.

Examples

# Show ingress config
$ ilum access ingress show

# JSON output
$ ilum access ingress show --output json

19c. ilum auth

Manage authentication and OAuth configuration.

ilum auth setup

Interactive authentication setup wizard. Guides you through selecting an auth mode (internal Hydra, external OAuth2, or disable), choosing a provider, and collecting required parameters.

Synopsis

ilum auth setup [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Launch the interactive auth wizard
$ ilum auth setup

# Dry-run preview of auth changes
$ ilum auth setup --dry-run

ilum auth enable

Enable authentication with a specific provider non-interactively.

Synopsis

ilum auth enable PROVIDER [OPTIONS]

Arguments

ArgumentRequiredDescription
PROVIDERYesProvider name (e.g. google, hydra, oidc, okta, gitlab, keycloak, cognito, azure).

Options

FlagShortDefaultDescription
--client-idNoneOAuth2 Client ID.
--client-secretNoneOAuth2 Client Secret.
--domainNoneDomain (Hydra UI domain or Okta domain).
--protocolNoneProtocol — Hydra: http or https.
--urlNoneProvider URL (GitLab, Keycloak).
--realmNoneKeycloak realm name.
--regionNoneAWS region (Cognito).
--user-pool-idNoneCognito User Pool ID.
--tenant-idNoneAzure AD Tenant ID.
--issuer-uriNoneOIDC Issuer URI.
--scopeNoneOAuth2 scopes.
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Enable Hydra (internal) auth
$ ilum auth enable hydra --domain ilum.example.com --yes

# Enable Google OAuth2
$ ilum auth enable google --client-id MY_ID --client-secret MY_SECRET --yes

# Enable a generic OIDC provider
$ ilum auth enable oidc --issuer-uri https://auth.example.com --client-id MY_ID --client-secret MY_SECRET

ilum auth disable

Disable OAuth and revert to internal authentication.

Synopsis

ilum auth disable [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.
--setNoneAdditional Helm --set flag (repeatable).
--yes-yFalseSkip confirmation prompt.
--dry-runFalsePreview without executing.
--timeout10mHelm timeout.

Examples

# Disable OAuth
$ ilum auth disable --yes

ilum auth status

Show the current authentication configuration from live Helm values.

Synopsis

ilum auth status [OPTIONS]

Options

FlagShortDefaultDescription
--release-rfrom profileHelm release name.
--namespace-nfrom profileKubernetes namespace.
--contextfrom profileKubernetes context.

Examples

# Show auth status
$ ilum auth status

# JSON output
$ ilum auth status --output json

ilum auth list

List all available authentication providers.

Synopsis

ilum auth list

Examples

$ ilum auth list

20. Prerequisites

The CLI requires the following tools to be installed on your system. These are checked during the preflight step of ilum init, ilum quickstart, and before operations like ilum install and ilum upgrade.

Required Tools

ToolMinimum VersionPurpose
helm>= 3.12Deploys and manages the Ilum Helm chart
kubectl>= 1.28Communicates with the Kubernetes cluster
docker>= 24.0Container runtime for local clusters and image operations

Cluster Providers (optional)

One of these is required only if creating a local cluster via ilum cluster create:

ProviderDescription
k3dLightweight k3s clusters in Docker containers (default provider)
minikubeFull Kubernetes in a VM or container
kindKubernetes-in-Docker for testing

Automatic Installation

When running in an interactive terminal (TTY connected to stdin), the CLI offers to install missing or outdated tools automatically. This applies to:

  • ilum init (wizard preflight step)
  • ilum quickstart (preflight step)
  • ilum cluster create (cluster provider check)
  • Any command that calls ensure_tool() internally

The install methods are platform-specific:

PlatformMethodExample
LinuxOfficial install scripts or direct binary downloadscurl -fsSL https://get.docker.com | sh
macOSHomebrewbrew install helm
Windowswingetwinget install --id Helm.Helm

After installation, the CLI re-checks the tool version. If the check fails, it displays the tool's manual install URL.

Non-Interactive Behavior

In non-interactive environments (CI/CD, scripts, piped output, --yes mode without TTY), the CLI does not offer auto-installation. Instead, it raises a PrerequisiteError (error code ILUM-001) with a manual install link:

Error: kubectl is required but not available [ILUM-001]
Suggestion: Install manually: https://kubernetes.io/docs/tasks/tools/

For CI/CD pipelines, install all required tools before invoking the CLI. See the guide's CI/CD section for an example GitHub Actions workflow.

Supported Tools and Install URLs

ToolManual Install URL
helmhttps://helm.sh/docs/intro/install/
kubectlhttps://kubernetes.io/docs/tasks/tools/
dockerhttps://docs.docker.com/get-docker/
minikubehttps://minikube.sigs.k8s.io/docs/start/
k3dhttps://k3d.io/
kindhttps://kind.sigs.k8s.io/docs/user/quick-start/#installation

Docker Post-Install (Linux)

On Linux, after installing Docker the CLI automatically:

  1. Adds the current user to the docker group (requires sudo)
  2. Starts the Docker daemon via systemctl
  3. Warns that a logout/login (or newgrp docker) may be required for group permissions

If passwordless sudo is not available, the CLI prints the manual commands instead.


21. Error Codes

Structured error codes for programmatic error handling (see also Prerequisites for ILUM-001 and ILUM-002):

CodeCategoryTitle
ILUM-001prerequisiteTool not found
ILUM-002prerequisiteTool version too old
ILUM-010clusterCluster unreachable
ILUM-011clusterNamespace not found
ILUM-020helmHelm command failed
ILUM-021helmHelm timeout
ILUM-022helmRelease stuck
ILUM-023helmRelease not found
ILUM-024helmRelease already exists
ILUM-030configConfig file invalid
ILUM-031configConfig key not found
ILUM-040moduleUnknown module
ILUM-041moduleModule conflict
ILUM-050valuesValues parse error
ILUM-051valuesValues drift detected
ILUM-070execExec failed / No pods found
ILUM-071eventsEvents query failed
ILUM-072metricsMetrics unavailable
ILUM-073helmRollback failed

Error codes appear in both human-readable output and structured JSON/YAML output, enabling CI/CD pipelines to handle specific error conditions programmatically.


22. Module Registry

All 32 modules registered in MODULE_REGISTRY, grouped by category.

Core

NameDescriptionDefaultDependenciesConflicts
coreIlum backend API (Spring Boot on Spark)Yes
uiIlum web frontend (React + Nginx reverse proxy)Yescore
livy-proxyLivy-compatible Spark session proxyNocore
apiIlum REST API for module managementYescore

Infrastructure

NameDescriptionDefaultDependenciesConflicts
mongodbMongoDB document store for metadataYes
kafkaApache Kafka event busNocore
postgresqlPostgreSQL relational databaseYes
clickhouseClickHouse columnar analytics databaseNo
giteaGitea self-hosted Git serviceYespostgresql

Storage

NameDescriptionDefaultDependenciesConflicts
minioMinIO S3-compatible object storageYes

Notebook

NameDescriptionDefaultDependenciesConflicts
jupyterJupyter notebook server with SparkmagicYescore
jupyterhubMulti-user JupyterHub (Kubernetes >= 1.28)Nocore
zeppelinApache Zeppelin notebook serverNocore

SQL

NameDescriptionDefaultDependenciesConflicts
sqlIlum SQL engine (Kyuubi)Yespostgresql, core
trinoTrino distributed SQL query engineNohive-metastore, sql
hive-metastoreHive Metastore serviceYespostgresql, corenessie, unity-catalog
nessieNessie versioned data catalogNopostgresqlhive-metastore, unity-catalog
unity-catalogUnity Catalog for data governanceNopostgresqlhive-metastore, nessie

Orchestration

NameDescriptionDefaultDependenciesConflicts
airflowApache Airflow workflow orchestrationNopostgresql
kestraKestra declarative orchestration engineNopostgresql
n8nn8n workflow automation platformNopostgresql
nifiApache NiFi data integrationNocore
mageaiMage.ai data pipeline toolNopostgresql

Analytics

NameDescriptionDefaultDependenciesConflicts
supersetApache Superset BI dashboardsNopostgresql
streamlitStreamlit interactive data applicationsNocore
marquezMarquez data lineage trackingYespostgresql

AI

NameDescriptionDefaultDependenciesConflicts
mlflowMLflow experiment tracking and model registryNopostgresql
langfuseLangfuse LLM observability platformNopostgresql, clickhouse

Monitoring

NameDescriptionDefaultDependenciesConflicts
monitoringPrometheus + Grafana monitoring stackNo
lokiGrafana Loki log aggregationNo
graphiteGraphite metrics exporterNo

Security

NameDescriptionDefaultDependenciesConflicts
openldapOpenLDAP directory serviceNo

Enable/Disable Flags Reference

ModuleEnable FlagsDisable Flags
coreilum-core.enabled=trueilum-core.enabled=false
uiilum-ui.enabled=trueilum-ui.enabled=false
livy-proxyilum-livy-proxy.legacy.enabled=trueilum-livy-proxy.legacy.enabled=false
mongodbmongodb.enabled=truemongodb.enabled=false
kafkakafka.enabled=true, ilum-core.communication.type=kafkakafka.enabled=false, ilum-core.communication.type=grpc
postgresqlpostgresql.enabled=truepostgresql.enabled=false
clickhouseclickhouse.enabled=trueclickhouse.enabled=false
giteagitea.enabled=truegitea.enabled=false
miniominio.enabled=trueminio.enabled=false
jupyterilum-jupyter.enabled=trueilum-jupyter.enabled=false
jupyterhubilum-jupyterhub.enabled=trueilum-jupyterhub.enabled=false
zeppelinilum-zeppelin.enabled=trueilum-zeppelin.enabled=false
sqlilum-sql.enabled=true, ilum-core.sql.enabled=trueilum-sql.enabled=false, ilum-core.sql.enabled=false
trinotrino.enabled=true, ilum-sql.config.trino.enabled=truetrino.enabled=false, ilum-sql.config.trino.enabled=false
hive-metastoreilum-hive-metastore.enabled=true, ilum-core.metastore.enabled=true, ilum-core.metastore.type=hiveilum-hive-metastore.enabled=false, ilum-core.metastore.enabled=false, ilum-core.metastore.type=hive
nessienessie.enabled=true, ilum-core.metastore.enabled=true, ilum-core.metastore.type=nessienessie.enabled=false, ilum-core.metastore.enabled=false, ilum-core.metastore.type=hive
unity-catalogilum-unity-catalog.enabled=true, ilum-core.metastore.enabled=true, ilum-core.metastore.type=unityilum-unity-catalog.enabled=false, ilum-core.metastore.enabled=false, ilum-core.metastore.type=hive
airflowairflow.enabled=trueairflow.enabled=false
kestrakestra.enabled=truekestra.enabled=false
n8nilum-n8n.enabled=trueilum-n8n.enabled=false
nifinifi.enabled=truenifi.enabled=false
mageaimageai.enabled=truemageai.enabled=false
supersetsuperset.enabled=truesuperset.enabled=false
streamlitstreamlit.enabled=truestreamlit.enabled=false
marquezglobal.lineage.enabled=trueglobal.lineage.enabled=false
mlflowmlflow.enabled=truemlflow.enabled=false
langfuselangfuse.enabled=truelangfuse.enabled=false
monitoringkube-prometheus-stack.enabled=truekube-prometheus-stack.enabled=false
lokiglobal.logAggregation.enabled=true, global.logAggregation.loki.enabled=true, global.logAggregation.promtail.enabled=trueglobal.logAggregation.enabled=false, global.logAggregation.loki.enabled=false, global.logAggregation.promtail.enabled=false
graphitegraphite-exporter.graphite.enabled=true, ilum-core.job.graphite.enabled=truegraphite-exporter.graphite.enabled=false, ilum-core.job.graphite.enabled=false
apiilum-api.enabled=trueilum-api.enabled=false
openldapopenldap.enabled=trueopenldap.enabled=false

23. Doctor Checks

Check NamePhaseWhat it verifies
helm1 - BinariesHelm is on PATH and version >= 3.12
kubectl1 - Binarieskubectl is on PATH and version >= 1.28
docker1 - BinariesDocker is on PATH and version >= 24.0
helm-repo2 - Helm repoThe ilum chart repository (charts.ilum.cloud) is configured
cluster3 - ConnectivityKubernetes cluster is reachable via current kubeconfig
namespace4 - Cluster-dependentThe target namespace exists on the cluster
pods4 - Cluster-dependentAll pods in the namespace are healthy; detects CrashLoopBackOff (>5 restarts)
pvcs4 - Cluster-dependentAll PersistentVolumeClaims are Bound; detects Pending PVCs
rbac4 - Cluster-dependentRequired RBAC permissions are granted to the current user
release4 - Cluster-dependentHelm release exists and is not in stuck (pending-*) or failed state
compatibility4 - Cluster-dependentKubernetes server version >= 1.28
service-endpoints4 - Cluster-dependentService endpoints have ready addresses
health-endpoints4 - Cluster-dependentHealth check endpoints respond for core, airflow, superset, minio

24. Error Reference

ClassParentWhen RaisedTypical Suggestion
IlumErrorExceptionBase exception for all Ilum CLI errors.
PrerequisiteErrorIlumErrorA required tool or resource (helm, kubectl, docker) is missing.Install the missing tool.
ClusterConnectionErrorIlumErrorCannot connect to the Kubernetes cluster.Check kubeconfig: kubectl cluster-info.
HelmErrorIlumErrorA Helm operation failed.Check helm output for details.
HelmTimeoutErrorHelmErrorA Helm operation timed out.Increase --timeout or check cluster resources.
HelmReleaseErrorHelmErrorA Helm release is in a bad state (e.g. pending-install, pending-upgrade).Use ilum upgrade --force-rollback to recover.
ConfigErrorIlumErrorConfiguration is missing or invalid.Run ilum config init or ilum init.
ValuesErrorIlumErrorProblem with Helm values files.Validate your values YAML syntax.
ModuleErrorIlumErrorModule dependency or conflict error.Check ilum module show <name> for dependencies.
ReleaseExistsErrorIlumErrorA Helm release already exists when a fresh install was requested.Use ilum upgrade instead, or ilum uninstall first.
ReleaseNotFoundErrorIlumErrorA Helm release was expected but does not exist.Use ilum install to create the release, or ilum connect to attach to an existing one.

25. Exit Codes

CodeMeaning
0Success.
1Error (any IlumError, invalid input, failed check, or failed Helm operation).
130Interrupted by user (Ctrl+C during ilum init).

ilum uninstall exits with code 0 even when the release does not exist (idempotent behavior).