kpipeliner
A node-based pipeline manager. A pipeline is a graph of nodes; each node is a
standalone Python program (its own subprocess, optionally its own
venv/conda/pixi environment) with typed inputs and outputs declared in YAML.
Build and run pipelines from the CLI (kpl), a visual web GUI, or hand them
over to an LLM through MCP.
Highlights
- Graph = YAML. Connections are just strings (
nodes.<name>.<output>) — no hidden edge list, easy to read, easy to script. - Subprocess isolation. Every node runs on its own, with its own Python environment if it needs one; a crash in one node never takes down another.
- Caching by default. Node outputs are cached per run-UUID; re-running a pipeline only recomputes what actually changed.
- CLI + GUI + MCP. Script it, click through it in the browser, or connect an MCP client and let an LLM design/inspect/run it for you.
- Groups & reusable components. Bundle nodes in the GUI and export them as drag-and-drop components for other pipelines.
Install
kpipeliner is a normal Python package — installing it is the whole installation
(dependencies, the prebuilt web GUI and the kpl command; no Node.js, no installer
script). With uv:
uv tool install kpipeliner # `kpl` ends up on your PATH
kpl --help
or into an environment of your own: uv pip install kpipeliner (or pip install kpipeliner).
Optional extras — nothing imports them unless you use the feature, so leaving them out is fine:
uv tool install "kpipeliner[mcp]" # `kpl mcp` / `kpl gui --mcp` (LLM client access)
uv tool install "kpipeliner[kwui]" # `kpl run --kwui` (a web UI per node)
uv tool install "kpipeliner[all]" # both
Configuration lives in a config.yaml that ships with the package; the first run copies it
to ~/.config/kpipeliner/config.yaml (or $KPL_HOME/config.yaml) so your edits survive
upgrades. kpl config prints its location.
Developing kpipeliner itself: clone the repository and run uv pip install -e . (or
uv sync --all-extras) — an editable install; the checkout's own config.yaml is used.
To build the package: uv build (rebuild the GUI first with npm run build in
kpipeline_gui/frontend if the frontend changed — the built dist/ is what ships).
Quick start
mkdir my_pipeline && cd my_pipeline
kpl init # creates graph_config.yaml, data/, cache/
kpl list # see available node types
kpl add <node_type> # add a node instance
kpl tree # inspect the graph
kpl run # run it (or: kpl gui to do all of this visually)
Commands
| Command | Description |
|---|---|
kpl init |
Initialize a pipeline in the current directory |
kpl gui |
Launch the web GUI (port 8601+) |
kpl gui --mcp |
GUI + an MCP endpoint at /mcp, same port |
kpl mcp |
Headless MCP server only — no GUI/REST API |
kpl list |
List available node types |
kpl add <type> [name] |
Add a node instance to the graph |
kpl run [node] |
Run the declared outputs (or one node) + dependencies |
kpl run_debug [node] |
Same, with full log output |
kpl run --kwui |
Run behind a per-node web UI (kwebui) |
kpl tree |
Print the graph with dependencies and I/O |
kpl status |
Show cached/frozen state per node |
kpl clean [node] |
Clear cache (all nodes, or one) |
kpl kwui init |
Create workflow.py for kwui mode in this pipeline |
kpl base_node create |
Scaffold a new node type in the current directory |
kpl base_node install [--node_name N] |
Install the current directory as a node type |
kpl base_node uninstall <name> |
Remove an installed node type |
kpl node_env install [--node_type T] |
Install a node's Python environment |
kpl uninstall |
Remove kpl from your PATH |
Run any command with --help for its full option list.
Documentation
- User Guide — the full walkthrough: CLI and
GUI workflows, groups, custom nodes, MCP, kwui mode, and the
graph_config.yaml/node_config.yaml/config.yamlreference. - kpipeliner.md — a self-contained agent guide for building pipelines/nodes (also installed as a Claude Code skill).
- Readme — version history / changelog.
License
Apache License 2.0 — see LICENSE.
Metadata
Release files for kpipeliner 1.12.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kpipeliner-1.12.2.tar.gz | 249.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kpipeliner-1.12.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 507.9 kB
Release files / kpipeliner-1.12.2.tar.gz
| Download URL | kpipeliner-1.12.2.tar.gz |
|---|---|
| Size | 249.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4063d4e3b1c584a58833d81df2a62379d6294a239127fcc4615fda54e74677e7
|
|
BLAKE2b-256 checksum How to use checksums |
0784d61fb63955cb2f85da2501576e1ba1ae23587cf33297450c64fc81cb02ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / kpipeliner-1.12.2-py3-none-any.whl
| Download URL | kpipeliner-1.12.2-py3-none-any.whl |
|---|---|
| Size | 258.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e557b228bb36b4a22e0b7cb79cc588e78ecc4ee7e5b6c0f1bfcc25b2bf04a12
|
|
BLAKE2b-256 checksum How to use checksums |
c8f4e66ebe1e143b70e0864303341a60fb0a0a6c573d8a174dbc327c8602e3a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|