Skip to content

Archie0125/osop-interop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSOP Interop

License PyPI Python

Part of SOP Doc. Import existing workflows into OSOP format.

Convert from GitHub Actions, Airflow, n8n, CrewAI, Argo Workflows, and LangGraph. Export back to 3 formats. Your existing processes become browseable SOP Doc entries. 79 tests passing.

Website: osop.ai | GitHub: github.com/osop/osop-interop

Supported Formats

Format Import Export Description
GitHub Actions Yes Yes .github/workflows/*.yml action definitions
BPMN Yes Yes Business Process Model and Notation (XML)
Airflow Yes Yes Apache Airflow DAG definitions (Python)
Temporal Yes Yes Temporal workflow definitions
Postman Yes No Postman Collection v2.1 (JSON)
OpenAPI Yes No OpenAPI 3.x specifications — converts endpoint sequences to workflows

Installation

pip install osop-interop

Usage

CLI (via OSOP)

# Import a GitHub Actions workflow
osop import workflow.yml --from github-actions -o workflow.osop.yaml

# Export to GitHub Actions
osop export workflow.osop.yaml --to github-actions -o .github/workflows/deploy.yml

# Import a BPMN diagram
osop import process.bpmn --from bpmn -o process.osop.yaml

# Export to Airflow DAG
osop export pipeline.osop.yaml --to airflow -o dags/pipeline.py

Python API

from osop_interop import GitHubActionsImporter, GitHubActionsExporter

# Import
importer = GitHubActionsImporter()
osop_workflow = importer.convert("path/to/workflow.yml")
print(osop_workflow)  # Valid OSOP YAML

# Export
exporter = GitHubActionsExporter()
gha_yaml = exporter.convert("path/to/workflow.osop.yaml")
print(gha_yaml)  # Valid GitHub Actions YAML

Conversion Details

GitHub Actions to OSOP

GitHub Actions OSOP
workflow OsopWorkflow
job step or fork/join (parallel jobs)
step step node
if: condition decision node
needs: dependency edge ordering
on: schedule timer node with cron
environment: production approval node

BPMN to OSOP

BPMN Element OSOP
Start Event start node
End Event end node
Task / Service Task step node
Exclusive Gateway decision node
Parallel Gateway (split) fork node
Parallel Gateway (merge) join node
Timer Event timer node
User Task approval node
Sub-Process subprocess node
Sequence Flow edge

Airflow to OSOP

Airflow OSOP
DAG OsopWorkflow
BashOperator step node with shell action
PythonOperator step node with function action
BranchPythonOperator decision node
TriggerDagRunOperator subprocess node
>> / << dependencies edges
schedule_interval timer node

HTML Report

In addition to workflow format conversion, OSOP supports generating self-contained HTML reports from .osoplog execution records. Use the osop.report MCP tool or the OSOP CLI:

# Generate an HTML execution report from a workflow and its log
osop report workflow.osop.yaml --log execution.osoplog.yaml -o report.html

# Generate a plain text report
osop report workflow.osop.yaml --log execution.osoplog.yaml --format text

The HTML report is a single self-contained file (inline CSS, no JavaScript, no external dependencies) suitable for email, archival, or browser viewing. See the Execution Report Spec for format details.

Architecture

osop_interop/
  importers/
    github_actions.py
    bpmn.py
    airflow.py
    temporal.py
    postman.py
    openapi.py
  exporters/
    github_actions.py
    bpmn.py
    airflow.py
    temporal.py
  base.py              # Abstract importer/exporter base classes
  registry.py          # Format registry and discovery

Development

git clone https://github.com/osop/osop-interop.git
cd osop-interop
pip install -e ".[dev]"
pytest

License

Apache License 2.0 — see LICENSE for details.

About

osop-interop

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages