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
| 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 |
pip install osop-interop# 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.pyfrom 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| 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 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 | 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 |
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 textThe 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.
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
git clone https://github.com/osop/osop-interop.git
cd osop-interop
pip install -e ".[dev]"
pytestApache License 2.0 — see LICENSE for details.