Skip to main content
Pre-release

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

pur(jo)

pur(jo) (/ˈpurjo/) is an experimental command line tool for orchestrating Robot Framework test or task suites with the Operaton BPM engine. It long-polls external service tasks from the Operaton engine, executes mapped Robot Framework test and task suites with the uv Python environment manager, and finally reports the results or errors back to the engine.

CLI

 Usage: pur [OPTIONS] COMMAND [ARGS]...

 pur(jo) is a tool for managing and serving robot packages.

╭─ Commands ───────────────────────────────────────────────────────────────╮
│ serve     Serve robot.zip packages (or directories) as BPMN service tasks. │
│ init      Initialize a new robot package into the current directory.       │
│ wrap      Wrap the current directory into a robot.zip package.             │
│ run       Deploy process resources to BPM engine and start a new instance. │
│ operaton  BPM engine operations as distinct sub commands (also as "bpm").  │
╰────────────────────────────────────────────────────────────────────────────╯
Usage: pur serve [OPTIONS] ROBOTS...

 Serve robot.zip packages (or directories) as BPMN service tasks.

╭─ Arguments ────────────────────────────────────────────────────────────────────╮
│ *    robots      ROBOTS...  [default: None] [required]                         │
╰────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ──────────────────────────────────────────────────────────────────────╮
│ --base-url             TEXT                   [default:                        │
│                                               http://localhost:8080/engine-re… │
│ --authorization        TEXT                   [default: None]                  │
│ --secrets              TEXT                   [default: None]                  │
│ --timeout              INTEGER                [default: 20]                    │
│ --poll-ttl             INTEGER                [default: 10]                    │
│ --lock-ttl             INTEGER                [default: 30]                    │
│ --max-jobs             INTEGER                [default: 1]                     │
│ --worker-id            TEXT                   [default: operaton-robot-runner] │
│ --log-level            TEXT                   [default: DEBUG]                 │
│ --on-fail              [FAIL|COMPLETE|ERROR]  [default: FAIL]                  │
│ --help                                        Show this message and exit.      │
╰────────────────────────────────────────────────────────────────────────────────╯

Usage

Start Operaton:

$ podman run --rm -ti -p 8080:8080 operaton/operaton:latest

Create workspace:

$ mkdir hello-world
$ cd hello-world

Init project:

$ uv run --with=purjo -- pur init
Adding pyproject.toml
Adding README.md
Adding Hello.py
Adding hello.robot
Adding uv.lock
Adding Makefile
Adding hello.bpmn
Adding test_hello.robot
Adding src/myproject/__init__.py

The generated Makefile wraps the common commands; run make help to list them.

Or init with Robot Framework task template (uses *** Tasks *** instead of *** Test Cases ***):

$ uv run --with=purjo -- pur init --task

Or add an AGENTS.md guide for LLM coding agents working on the package (not supported with --python):

$ uv run --with=purjo -- pur init --agents

Deploy and start an example process:

$ uv run --with=purjo -- pur run hello.bpmn
Started: http://localhost:8080/operaton/app/cockpit/default/#/process-instance/36228e79-e97e-11ef-a0ec-52f4bfd829ae/runtime

Serve the project as external task worker:

$ uv run --with=purjo -- serve .
... | DEBUG | ... | Waiting for 1 pending asyncio task: ['My Topic in BPMN:3622b58f-e97e-11ef-a0ec-52f4bfd829ae'].
==============================================================================
Tmpdlb85Jrp
==============================================================================
Tmpdlb85Jrp.Hello
==============================================================================
My Task in Robot                                                      | PASS |
------------------------------------------------------------------------------
Tmpdlb85Jrp.Hello                                                     | PASS |
1 task, 1 passed, 0 failed
==============================================================================
Tmpdlb85Jrp                                                           | PASS |
1 task, 1 passed, 0 failed
==============================================================================
Output:  /tmp/nix-shell-49641-0/tmp2721mpez/output.xml
Log:     /tmp/nix-shell-49641-0/tmp2721mpez/log.html
Report:  /tmp/nix-shell-49641-0/tmp2721mpez/report.html
... | INFO | ... | Completing My Topic in BPMN:3622b58f-e97e-11ef-a0ec-52f4bfd829ae.

More information

https://datakurre.github.io/operaton-robot-playground

Metadata

Release files for purjo 1.0rc1

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

Built distribution (wheel)

Table of built distributions (wheels) for purjo 1.0rc1
File Interpreter ABI Platform
purjo-1.0rc1-py3-none-any.whl Python 3 none any Details

Release files / purjo-1.0rc1-py3-none-any.whl

Download URL purjo-1.0rc1-py3-none-any.whl
Size 49.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
815f610128541a57e13bf6869d979972449a07133788ef9da7465646668b2f6a
BLAKE2b-256 checksum
How to use checksums
c7db20d34282688b1590784a9f88f49d9715aebfd78e99f23b4130ddeaeb1243
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.0rc1 This release

1 release file

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