Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Zrb Logo

🤖 Zrb: Your Automation Powerhouse

Zrb (Zaruba) is a Python-based tool that makes it easy to create, organize, and run automation tasks. Think of it as a command-line sidekick, ready to handle everything from simple scripts to complex, AI-powered workflows.

Whether you're running tasks from the terminal or a sleek web UI, Zrb streamlines your process with task dependencies, environment management, and even inter-task communication.

Contribution Guidelines | Report an Issue


📑 Table of Contents


🔥 Why Choose Zrb?

Zrb is designed to be powerful yet intuitive, offering a unique blend of features:

  • 🤖 A Coding Agent You Program in Python: Zrb ships a turnkey AI coding assistant (zrb llm chat), but its behavior is yours to shape in pure Python — custom tools, lifecycle hooks, dynamic prompts, permission policies, and history processors are all just code. And the agent drops straight into your task pipelines as a first-class node.
  • 🔗 Agents as Pipeline Steps: Put an LLM between deterministic tasks for bounded, reviewable automation instead of treating the model as an unattended administrator. Keep approvals, sandboxing, hooks, and persistence under your control.
  • 🐍 Pure Python: Write your tasks in Python. No complex DSLs or YAML configurations to learn.
  • 🔗 Smart Task Chaining: Define dependencies between tasks to build sophisticated, ordered workflows.
  • 💻 Dual-Mode Execution: Run tasks from the command line for speed or use the built-in web UI for a more visual experience.
  • ⚙️ Flexible Configuration: Manage inputs with defaults, prompts, or command-line arguments. Handle secrets and settings with environment variables from the system or .env files.
  • 🗣️ Cross-Communication (XCom): Allow tasks to safely exchange small pieces of data.
  • 🌍 Open & Extensible: Zrb is open-source. Feel free to contribute, customize, or extend it to meet your needs.

🚀 Quickstart Part 1: Your First Basic Pipeline in < 2 Minutes

Let's start with the absolute basics: defining simple units of work and chaining them together. You only need Python installed.

1. Define Your Tasks

Create a file named zrb_init.py in your project directory (or your home directory for global access!).

# zrb_init.py
from zrb import cli, CmdTask, Task

# 1. Define tasks.
# CmdTask is perfect for running shell commands.
prepare_env = CmdTask(
    name="prepare-env", 
    cmd="echo 'Environment prepared!'"
)

# Task is for pure Python logic.
build_app = Task(
    name="build-app",
    action=lambda ctx: ctx.print("Building application in pure Python...")
)

deploy_app = CmdTask(
    name="deploy-app", 
    cmd="echo 'Deploying app to the cloud ☁️'"
)

# 2. Register tasks to the main 'cli' object so Zrb knows about them
cli.add_task(prepare_env)
cli.add_task(build_app)
cli.add_task(deploy_app)

# 3. Define the execution order (The Directed Acyclic Graph - DAG)
# prepare-env runs first, then build-app, then deploy-app
prepare_env >> build_app >> deploy_app

2. Run Your First Pipeline!

Now, open your terminal and run:

zrb deploy-app

Zrb will see that deploy-app depends on build-app, which depends on prepare-env. It will automatically run them in the correct sequential order:

[prepare-env] Environment prepared!
[build-app] Building application in pure Python...
[build-app] Build complete.
[deploy-app] Deploying app to the cloud ☁️

Congratulations! You've just built and run your first Zrb automation pipeline.


🚀 Quickstart Part 2: Your First AI-Powered Workflow in < 5 Minutes

Now that you understand the basics, let's unleash Zrb's full power. This example uses an LLM to analyze your code and generate a Mermaid diagram, then converts that diagram into a PNG image.

1. Prerequisites

  • An LLM API Key: Zrb needs an API key to talk to an AI model (OpenAI is default, but others are supported).
    export OPENAI_API_KEY="your-key-here"
    
  • Mermaid CLI: This tool converts Mermaid diagram scripts into images. Install it via npm:
    npm install -g @mermaid-js/mermaid-cli
    

2. Update Your zrb_init.py

Add the following to your existing zrb_init.py file (or create a new one if you prefer to keep examples separate):

# zrb_init.py (continued)
from zrb import cli, LLMTask, CmdTask, StrInput, Group
from zrb.llm.tool.code import analyze_code
from zrb.llm.tool.file import write_file

# Create a group for Mermaid-related tasks
mermaid_group = cli.add_group(Group(
    name="mermaid",
    description="🧜 Mermaid diagram related tasks"
))

# Task 1: Generate a Mermaid script from your source code using an LLM
make_mermaid_script = mermaid_group.add_task(
    LLMTask(
        name="make-script",
        description="Create a mermaid diagram from source code in the current directory",
        input=[
            StrInput(name="dir", default="./"),
            StrInput(name="diagram", default="state-diagram"),
        ],
        message=(
            "Read all necessary files in {ctx.input.dir}, "
            "make a {ctx.input.diagram} in mermaid format. "
            "Write the script into `{ctx.input.dir}/{ctx.input.diagram}.mmd`"
        ),
        tools=[analyze_code, write_file],
    )
)

# Task 2: Convert the Mermaid script into a PNG image using CmdTask
make_mermaid_image = mermaid_group.add_task(
    CmdTask(
        name="make-image",
        description="Create a PNG from a mermaid script",
        input=[
            StrInput(name="dir", default="./"),
            StrInput(name="diagram", default="state-diagram"),
        ],
        cmd="mmdc -i '{ctx.input.diagram}.mmd' -o '{ctx.input.diagram}.png'",
        cwd="{ctx.input.dir}",
    )
)

# Set up the dependency: the image task runs after the script is created
make_mermaid_script >> make_mermaid_image

3. Run Your AI-Powered Workflow!

Navigate to any project with source code (e.g., a Python project). For instance, if you've cloned a repository:

git clone https://github.com/someuser/my-python-project.git
cd my-python-project

Now, run your new task:

zrb mermaid make-image

Zrb will interactively ask for the directory and diagram name. Just press Enter to accept the defaults (./ and state-diagram). The AI will analyze your code, generate the Mermaid script, and mmdc will convert it to a PNG. In moments, you'll have a beautiful diagram of your code!

State Diagram


🖥️ Try the Web UI

Prefer a graphical interface? Zrb has you covered. Explore the full details in the Web UI Guide.

zrb server start

By default, the server binds to 127.0.0.1, so the UI is reachable only from the local machine. Then open your browser to http://localhost:21213 to see your tasks in a clean, user-friendly interface.

Safety boundary: Zrb's web UI can start and control automation tasks, so it is not intended to be exposed publicly without deliberate hardening. If you set ZRB_WEB_HTTP_HOST to a non-loopback address, enable authentication and replace the documented default admin password and secret key with unique values. Startup warnings call out unsafe network-exposed configurations; see the Web UI Guide before using a shared or public bind.

Zrb Web UI


💬 Interact with an LLM Directly

Zrb brings AI capabilities right to your command line. For full details on configuring and using the AI assistant, see the LLM Integration Guide.

Interactive Chat

Start a chat session with an LLM to ask questions, brainstorm ideas, or get coding help.

zrb llm chat

Zrb Chat


🧩 Program Your AI Agent

zrb llm chat works out of the box — but the moment you need it to do something specific, you don't reach for a config file or a separate SDK. You write Python, in the same file where you define the rest of your automation.

Every part of the agent is a value you can supply or a callable you can register:

You want to… You write a…
Give the agent abilities custom tool — a plain Python function it can call in-process
React to what it does lifecycle hook — fires on tool calls, prompts, session start/end
Gate dangerous actions permission policy / async approval channel
Inject live context into the prompt dynamic prompt section — a lambda ctx: ... evaluated per request
Keep long conversations affordable history processor — prune, redact, or summarize the message history
Route by cost or task a model callable — pick the model per request

Example: a custom tool the agent calls in-process

from zrb import cli, LLMChatTask

# A normal Python function becomes a tool — typed args + docstring are the spec.
async def get_open_incidents(team: str) -> str:
    """Return the current open incidents for a given team."""
    return my_oncall_db.query(team)  # your code, running in-process

chat = LLMChatTask(name="ops-chat", tools=[get_open_incidents])
cli.add_task(chat)

The part nothing else does: the agent is a pipeline node

Because an LLMTask is just a Zrb task, you can wire it between deterministic steps. Its answer flows downstream through XCom, and your tools can call straight into your codebase:

fetch_ticket >> triage_with_llm >> route_to_team

👉 Full walkthrough and every hook in one place: Programming the Agent. Runnable example: examples/agent-in-pipeline.


⚙️ Installation & Configuration

Ready to dive deeper into getting Zrb set up and customized? Our comprehensive guides cover everything you need:


🤝 CI/CD Integration

Integrate Zrb into your Continuous Integration/Continuous Deployment pipelines for robust, automated workflows. See the CI/CD Integration Guide for examples with GitHub Actions, GitLab CI, and Bitbucket Pipelines.


🗺️ Documentation Directory

Zrb scales from simple scripts to massive automation ecosystems. Explore the documentation to unlock its full potential.

New here? Read these three in order, then branch out as needed: Tasks & Execution LifecycleCLI and GroupsInputs. Prefer learning by copy-pasting a working example? See examples/ instead.

docs/adr/ and docs/technical-specs/ are maintainer-facing design history, not part of the reading path below.

I. Core Concepts

The foundational pillars of the framework.

II. Task Types

All task types available in Zrb, from basic to advanced.

III. LLM & AI Integration

IV. Advanced Topics

V. Contributing

VI. Configuration

VII. Examples

  • examples/ — runnable zrb_init.py for every topic above, grouped by category

VIII. Changelog


🎥 Demo Video

Watch a video demonstration of Zrb in action:

Video Title


💖 Support Zrb

If you find Zrb valuable, please consider showing your support:


🎉 Fun Fact

Did you know? Zrb is named after Zaruba, a powerful, sentient Madou Ring that acts as a guide and support tool in the Garo universe.

Madou Ring Zaruba (魔導輪ザルバ, Madōrin Zaruba) is a Madougu which supports bearers of the Garo Armor. (Garo Wiki | Fandom)

Madou Ring Zaruba on Kouga's Hand

Release files for zrb 3.0.0b2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zrb 3.0.0b2
File Size Uploaded
zrb-3.0.0b2.tar.gz 2.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for zrb 3.0.0b2
File Interpreter ABI Platform
zrb-3.0.0b2-py3-none-any.whl Python 3 none any Details

Total release size: 4.9 MB

Release files / zrb-3.0.0b2.tar.gz

Download URL zrb-3.0.0b2.tar.gz
Size 2.3 MB
Tags Source
SHA-256 checksum
How to use checksums
d86a25e2a9738fd5a231de1cc6df664ead1de8f87e24dd6d8474cdca50fb6fb6
BLAKE2b-256 checksum
How to use checksums
fa80e3681ffb925a0d9ab4cd010d7f187ca681b40395dbc9f9ccfdb7491ded52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.14.0 Linux/5.15.153.1-microsoft-standard-WSL2+

Release files / zrb-3.0.0b2-py3-none-any.whl

Download URL zrb-3.0.0b2-py3-none-any.whl
Size 2.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9f61c0cee5ec93c40666b01b8bc0d645a579015e7a4b7947af74425007fce857
BLAKE2b-256 checksum
How to use checksums
567fa6d29ed1bcf52b828ddbfae0a8a0de4d408432defae132a74398dfac0d62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.14.0 Linux/5.15.153.1-microsoft-standard-WSL2+

Release history Release notifications | RSS feed

3.6.0

2 release files

3.5.0

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

This release

3.0.0b2 This release

2 release files

2.67.7

2 release files

2.67.6

2 release files

2.67.5

2 release files

2.67.4

2 release files

2.67.3

2 release files

2.67.2

2 release files

2.67.1

2 release files

2.67.0

2 release files

2.66.1

2 release files

2.66.0

2 release files

2.65.5

2 release files

2.65.4

2 release files

2.65.3

2 release files

2.65.2

2 release files

2.65.1

2 release files

2.65.0

2 release files

2.64.0

2 release files

2.63.0

2 release files

2.62.2

2 release files

2.62.1

2 release files

2.62.0

2 release files

2.61.0

2 release files

2.60.0

2 release files

2.59.0

2 release files

2.51.0

2 release files

2.50.9

2 release files

2.50.8

2 release files

2.50.7

2 release files

2.50.6

2 release files

2.50.5

2 release files

2.50.4

2 release files

2.50.3

2 release files

2.50.2

2 release files

2.50.1

2 release files

2.46.0

2 release files

2.45.0

2 release files

2.44.0

2 release files

2.43.1

2 release files

2.43.0

2 release files

2.42.1

2 release files

2.42.0

2 release files

2.41.0

2 release files

2.40.1

2 release files

2.40.0

2 release files

2.39.0

2 release files

2.38.0

2 release files

2.37.0

2 release files

2.36.0

2 release files

2.35.3

2 release files

2.35.2

2 release files

2.35.1

2 release files

2.35.0

2 release files

2.34.3

2 release files

2.34.2

2 release files

2.34.1

2 release files

2.34.0

2 release files

2.33.4

2 release files

2.31.0

2 release files

2.30.1

2 release files

2.30.0

2 release files

2.29.0

2 release files

2.28.6

2 release files

2.28.5

2 release files

2.28.4

2 release files

2.28.3

2 release files

2.28.2

2 release files

2.28.1

2 release files

2.28.0

2 release files

2.27.1

2 release files

2.27.0

2 release files

2.26.9

2 release files

2.26.8

2 release files

2.26.7

2 release files

2.26.5

2 release files

2.26.4

2 release files

2.26.3

2 release files

2.26.2

2 release files

2.26.1

2 release files

2.26.0

2 release files

2.23.1

2 release files

2.23.0

2 release files

2.22.8

2 release files

2.22.7

2 release files

2.22.6

2 release files

2.22.5

2 release files

2.22.4

2 release files

2.22.3

2 release files

2.22.2

2 release files

2.22.1

2 release files

2.22.0

2 release files

2.21.1

2 release files

2.21.0

2 release files

2.20.2

2 release files

2.20.1

2 release files

2.20.0

2 release files

2.19.1

2 release files

2.14.2

2 release files

2.14.1

2 release files

2.14.0

2 release files

2.13.0

2 release files

2.12.1

2 release files

2.12.0

2 release files

2.11.0

2 release files

2.10.4

2 release files

2.10.3

2 release files

2.10.2

2 release files

2.10.1

2 release files

2.10.0

2 release files

2.9.2

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.4

2 release files

2.8.3

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.21

2 release files

2.6.20

2 release files

2.6.19

2 release files

2.6.18

2 release files

2.6.17

2 release files

2.6.16

2 release files

2.6.15

2 release files

2.6.14

2 release files

2.6.13

2 release files

2.6.12

2 release files

2.6.11

2 release files

2.6.10

2 release files

2.6.9

2 release files

2.6.8

2 release files

2.6.7

2 release files

2.6.6

2 release files

2.6.5

2 release files

2.6.4

2 release files

2.6.3

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.15

2 release files

2.2.14

2 release files

2.2.13

2 release files

2.2.12

2 release files

2.2.11

2 release files

2.2.10

2 release files

2.2.9

2 release files

2.2.8

2 release files

2.2.7

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.14

2 release files

2.0.13

2 release files

2.0.12

2 release files

2.0.11

2 release files

2.0.10

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.21.9

2 release files

1.21.8

2 release files

1.21.7

2 release files

1.21.6

2 release files

1.21.5

2 release files

1.21.4

2 release files

1.21.3

2 release files

1.21.2

2 release files

1.21.1

2 release files

1.21.0

2 release files

1.20.1

2 release files

1.20.0

2 release files

1.19.0

2 release files

1.18.9

2 release files

1.18.2

2 release files

1.18.1

2 release files

1.18.0

2 release files

1.17.4

2 release files

1.17.3

2 release files

1.17.2

2 release files

1.17.1

2 release files

1.16.3

2 release files

1.16.2

2 release files

1.16.1

2 release files

1.16.0

2 release files

1.15.9

2 release files

1.15.8

2 release files

1.15.7

2 release files

1.15.6

2 release files

1.15.5

1 release file

1.15.4

2 release files

1.15.3

2 release files

1.15.2

2 release files

1.15.1

2 release files

1.15.0

2 release files

1.14.3

2 release files

1.14.2

2 release files

1.14.1

2 release files

1.14.0

2 release files

1.13.3

2 release files

1.13.2

2 release files

1.13.1

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.2

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.17

2 release files

1.9.16

2 release files

1.9.15

2 release files

1.9.14

2 release files

1.9.13

2 release files

1.9.12

2 release files

1.9.11

2 release files

1.9.10

2 release files

1.9.9

2 release files

1.9.8

2 release files

1.9.7

2 release files

1.9.6

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.12

2 release files

1.8.11

2 release files

1.8.10

2 release files

1.8.9

2 release files

1.8.8

2 release files

1.8.7

2 release files

1.8.6

2 release files

1.8.5

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.12

2 release files

1.5.11

2 release files

1.5.10

2 release files

1.5.9

2 release files

1.5.8

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.28.0

2 release files

0.27.1

2 release files

0.27.0

2 release files

0.26.2

2 release files

0.26.1

2 release files

0.25.0

2 release files

0.24.1

2 release files

0.24.0

2 release files

0.23.2

2 release files

0.23.1

2 release files

0.23.0

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.99

2 release files

0.0.98

2 release files

0.0.97

2 release files

0.0.94

2 release files

0.0.93

2 release files

0.0.92

2 release files

0.0.91

2 release files

0.0.90

2 release files

0.0.89

2 release files

0.0.88

2 release files

0.0.87

2 release files

0.0.86

2 release files

0.0.85

2 release files

0.0.84

2 release files

0.0.80

2 release files

0.0.77

2 release files

0.0.76

2 release files

0.0.75

2 release files

0.0.74

2 release files

0.0.73

2 release files

0.0.72

2 release files

0.0.71

2 release files

0.0.70

1 release file

0.0.69

1 release file

0.0.68

2 release files

0.0.67

2 release files

0.0.66

2 release files

0.0.65

2 release files

0.0.64

2 release files

0.0.63

2 release files

0.0.62

2 release files

0.0.61

2 release files

0.0.56

2 release files

0.0.55

2 release files

0.0.54

2 release files

0.0.53

2 release files

0.0.52

2 release files

0.0.51

2 release files

0.0.49

2 release files

0.0.48

2 release files

0.0.44

2 release files

0.0.43

2 release files

0.0.42

2 release files

0.0.41

2 release files

0.0.40

2 release files

0.0.39

2 release files

0.0.32

2 release files

0.0.31

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page