Skip to main content

Installation

NoETL provides multiple installation options across different platforms and package managers.

Quick Install

Choose your preferred installation method:

Homebrew (macOS/Linux)

brew tap noetl/tap
brew install noetl

APT (Ubuntu/Debian)

echo 'deb [trusted=yes] https://noetl.github.io/apt jammy main' | sudo tee /etc/apt/sources.list.d/noetl.list
sudo apt-get update
sudo apt-get install noetl

See APT Installation Guide for details.

PyPI (Python Package)

pip install noetlctl

Cargo (Rust)

cargo install noetl

Verify Installation

noetl --version
noetl --help

Distribution Channels

NoETL is available through multiple distribution channels:

ChannelPackageCommandPlatform
Homebrewnoetl/tap/noetlbrew install noetl/tap/noetlmacOS, Linux
APTnoetlsudo apt-get install noetlUbuntu, Debian
PyPInoetlctlpip install noetlctlCross-platform
Crates.ionoetlcargo install noetlCross-platform
GitHubBinaryDownload from releasesmacOS, Linux

Kubernetes Deployment

For production deployments, NoETL runs as a Kubernetes service with PostgreSQL backend.

Prerequisites

  • Docker
  • kubectl
  • Helm 3.x
  • Kind (for local development)

Local Development with Kind

# Clone repository
git clone https://github.com/noetl/noetl.git
cd noetl

# Install development tools (auto-detects OS)
noetl run automation/development/setup_tooling.yaml --set action=install-devtools

# Bootstrap complete environment
noetl run boot

This creates a Kind cluster with:

  • NoETL server and workers (3 replicas)
  • PostgreSQL database
  • Observability stack (ClickHouse, Qdrant, NATS)

Development Tools Setup

NoETL provides OS-aware tooling playbooks that automatically install required tools:

# Detect your operating system
noetl run automation/development/setup_tooling.yaml --set action=detect

# Install all dev tools (macOS uses Homebrew, Linux/WSL2 uses apt-get)
noetl run automation/development/setup_tooling.yaml --set action=install-devtools

# Validate installed tools
noetl run automation/development/setup_tooling.yaml --set action=validate-install

Platform-specific playbooks:

  • macOS: automation/development/tooling_macos.yaml (uses Homebrew)
  • Linux/WSL2: automation/development/tooling_linux.yaml (uses apt-get)

Tools installed: docker, kind, kubectl, helm, jq, yq, pyenv, uv, tfenv, psql

Optional: Deploy VictoriaMetrics monitoring stack:

noetl run automation/infrastructure/monitoring.yaml --set action=deploy

Available Automation Actions

After cloning the repository, use automation playbooks for infrastructure management:

# Deploy complete environment
noetl run automation/main.yaml bootstrap

# Deploy individual components
noetl run automation/infrastructure/postgres.yaml --set action=deploy
noetl run automation/infrastructure/clickhouse.yaml --set action=deploy
noetl run automation/infrastructure/qdrant.yaml --set action=deploy

# Check status
noetl run automation/infrastructure/postgres.yaml --set action=status

# Remove environment
noetl run automation/main.yaml destroy

See Automation Playbooks for complete reference.

Manual Kubernetes Deployment

For custom deployments without automation:

# Create namespace
kubectl create namespace noetl

# Deploy PostgreSQL
kubectl apply -f ci/manifests/postgres/

# Deploy NoETL
kubectl apply -f ci/manifests/noetl/

Environment Variables

Key environment variables for configuration:

VariableDescriptionDefault
NOETL_SERVER_HOSTServer bind address0.0.0.0
NOETL_SERVER_PORTServer port8082
NOETL_DATABASE_URLPostgreSQL connectionRequired
NOETL_WORKER_POOL_SIZEWorker pool size4
NOETL_LOG_LEVELLogging levelINFO

See Environment Configuration for complete list.

Verify Installation

Check Server Status

curl http://localhost:8082/api/health

List Registered Playbooks

noetl catalog list playbook --host localhost --port 8082

Run Hello World

# Local execution
noetl run tests/fixtures/playbooks/hello_world/hello_world.yaml -v

# Distributed execution (after registering playbook)
noetl run tests/fixtures/playbooks/hello_world -r distributed

Next Steps