NoETL
NoETL orchestrates APIs, databases, and scripts through a declarative Playbook DSL. This package is the NoETL command-line tool, installable with pip.
pip install noetl
It installs two equivalent commands, noetl and ntl, and an importable
Python API. There is no separate binary to download and nothing to put on your
PATH yourself.
noetl run pipeline.yaml --runtime local --set region=west
import noetl
outcome = noetl.run("pipeline.yaml", variables={"region": "west"})
print(outcome["status"], outcome["final_result"])
noetl.cli(["catalog", "list"]) # any CLI subcommand
What it is
The CLI is written in Rust and lives at
noetl/cli. This package compiles that crate
into a native extension module, so noetl.run(...) and the noetl command
both drive the same execution engine — nothing here reimplements playbook
execution or shells out to a separate process.
Every subcommand is available: run, catalog, context, auth, register,
status, query, ehdb, provider, subscribe, and the rest. Run
noetl --help for the full tree.
Python API
| Function | Purpose |
|---|---|
noetl.run(playbook, **options) |
Execute a playbook locally; returns the run outcome as a dict. |
noetl.cli(args) |
Run any CLI subcommand; returns its exit code. |
noetl.__version__ |
This package's version. |
noetl.run() returns the outcome envelope: status, playbook_name,
playbook_path, started_at, completed_at, duration_seconds,
executed_steps, step_results, final_result, and error when the run
failed. It executes locally; to submit to a distributed runtime, use
noetl.cli(["run", playbook, "--runtime", "distributed"]).
Versioning
This package's version and the CLI's version are separate. noetl --version
reports the version of the Rust CLI compiled into this release — that is the
number to quote in a bug report against
noetl/cli. noetl.__version__ and
pip show noetl report the package version.
Known limitation: DuckDB
These wheels are built without the embedded DuckDB engine. Compiling DuckDB from its C++ source takes tens of minutes to an hour per platform, which a five-platform wheel matrix cannot absorb.
Affected surfaces report a rebuild hint rather than running:
kind: duckdbandkind: ducklakeplaybook steps- the
sink: duckdb:target - the
noetl iapcommand family, whose state ledger is a localstate.duckdb
Everything else — HTTP, shell, Postgres, playbook composition, providers, secrets, and the catalog/server/worker verbs — works normally. If you need DuckDB, install the CLI from source with the feature enabled:
cargo install --bins noetl --features duckdb-integration
or use a pre-built release binary, Homebrew, or the APT package — all of which ship with DuckDB included.
Requirements
Python 3.9 or newer, on Linux or macOS. The wheels are abi3, so one wheel
per platform serves every supported Python version.
Windows is not supported: the CLI uses POSIX process and signal control, which does not build on Windows (the native binaries are Linux/macOS-only for the same reason). On Windows, use WSL.
Documentation
- noetl.dev — user-facing documentation
- CLI reference
- Platform wiki
License
MIT
Metadata
Release files for noetl 5.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| noetl-5.1.1.tar.gz | 43.9 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| noetl-5.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| noetl-5.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| noetl-5.1.1-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 23.1 MB
Release files / noetl-5.1.1.tar.gz
| Download URL | noetl-5.1.1.tar.gz |
|---|---|
| Size | 43.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dfc9b17f39d75f9f9e38b045144fb93e9f8957cb0f0af6754767215e47dfa90d
|
|
BLAKE2b-256 checksum How to use checksums |
3efa57074aaef9143d543d67ad557bd199ab0c2b82871f263bec79a59b5f9d61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / noetl-5.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | noetl-5.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7f544ecb0318cbb985e8a0b41f7cb2d3b821c746902bda9be857ba720a8fbed7
|
|
BLAKE2b-256 checksum How to use checksums |
9794e3eebe708a1461dd16d6bb550e34ed6fa11996e68904409c3738c37cfc25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / noetl-5.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | noetl-5.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e2edfc8c4339d9bfe90b01488646efe712b7a9ec10fcd7bb2c87fe15de8ea8e1
|
|
BLAKE2b-256 checksum How to use checksums |
bd43b2e5479de6cd6ffc45e5e11a6cfbb06cc935c31106935e35d49b0a22c53e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / noetl-5.1.1-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | noetl-5.1.1-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.4 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3b7826d679613ce2992f5a69a9981a70ba5d28098cf8f178bbe2d4bfd96b7e59
|
|
BLAKE2b-256 checksum How to use checksums |
dd1e235e11a8374c6741957669ddb438ca4eb7deda3ea6d8c330cf045de291d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|