Skip to main content

CAPIO-CL Logo

CAPIO-CL — Cross-Application Programmable I/O Coordination Language

CI Python Bindings RISC-V Unit tests codecov

CMake C++ Python Bindings

Platform support

OS / Arch x86_64 ARM RISC-V
Ubuntu YES YES YES
macOS No CI/CD support YES N.A.

Documentation

  • Core Language
  • Metadata Streaming
  • Doxygen documentation

CAPIO-CL is a novel I/O coordination language that enables users to annotate file-based workflow data dependencies with synchronization semantics for files and directories. Designed to facilitate transparent overlap between computation and I/O operations, CAPIO-CL allows multiple producer–consumer application modules to coordinate efficiently using a JSON-based syntax.

For detailed documentation and examples, please visit:

CAPIO Website


Overview

The CAPIO Coordination Language (CAPIO-CL) allows applications to declare:

  • Data objects, I/O dependencies, and access modes
  • Synchronization semantics across different processes
  • Commit policies for I/O objects

At runtime, CAPIO-CL’s parser and engine components analyze, track, and manage these declared relationships, enabling * transparent data sharing* and cross-application optimizations.


Building

Requirements & dependencies

  • C++17 or greater
  • Cmake 3.15 or newer
  • Python3 to bundle CAPIO-CL json schemas into target binaries
  • danielaparker/jsoncons to parse, serialize and validate CAPIO-CL JSON config files
  • GoogleTest for automated testing
  • pybind11 when building python wheels
  • CALF for both logs and CLI messages

jsoncons, GoogleTest and pybind11 are fetched automatically by CMake — no manual setup required.

Steps

Clone
git clone https://github.com/High-Performance-IO/CAPIO-CL.git


mkdir -p CAPIO-CL/build && cd CAPIO-CL/build
cmake ..
make 

By default, this will:

  • Build the "libcapio_cl" static library
  • Build the "CAPIO_CL_tests" executable (GoogleTest-based)
  • Build the "py_capio_cl" python bindings (pybind11)

Integration as a Subproject

CAPIO-CL can be included directly into another CMake project using:

include(FetchContent)

#####################################
# External projects
#####################################
FetchContent_Declare(
        capio_cl
        GIT_REPOSITORY https://github.com/High-Performance-IO/CAPIO-CL.git
        GIT_TAG main
)
FetchContent_MakeAvailable(capio_cl)

#####################################
# Include files and directories
#####################################
target_include_directories(${TARGET_NAME} PRIVATE
        ${capio_cl_SOURCE_DIR}
)

#####################################
# Link libraries
#####################################
target_link_libraries(${PROJECT_NAME} PRIVATE
        libcapio_cl
)

When included this way, unit tests and python bindings are not built, keeping integration clean for external projects.


Python Bindings

CAPIO-CL now provides native Python bindings built using pybind11.
These bindings expose the core C++ APIs (Engine, Parser and Serializer), directly to Python, allowing the CAPIO-CL logic to be used within python projects.

Install from PyPI

CAPIO-CL is available on PyPI! Simply run

pip install py_capio_cl

Building the Bindings

You can build and install the Python bindings directly from the CAPIO-CL source tree using:

pip install --upgrade pip
pip install -r build-requirements.txt
python -m build
pip install dst/*.whl

This will build the Python wheel and install it into your current environment using an ad-hoc build environment, which is downloaded, installed, and configured in isolation. A faster way to build and install CAPIO-CL is to use native system packages and then run from within the CAPIO-CL root directory:

pip install .

This assumes that all build dependencies not fetched by cmake are available.


API Snapshot

A simplified example of CAPIO-CL usage in C++:

#include "capiocl.hpp"

int main() {
    capiocl::Engine engine;
    engine.newFile("Hello_World.txt")
    engine.print();
    
    // Dump engine to configuration file
    capiocl::Serializer::dump(engine, "my_workflow", "my_workflow.json")
    return 0;
}

The py_capio_cl module provides access to CAPIO-CL’s core functionality through a high-level Python interface.

from py_capio_cl import Engine, Serializer

engine = Engine()
engine.newFile("Hello_World.txt")
engine.print()

# Dump engine to configuration file
Serializer.dump(engine, "my_workflow", "my_workflow.json")

Notes

  • All GET endpoints expect a JSON body containing the targeted file path.
  • The API is intended for local control and orchestration, not public exposure.

Developing team

Name Role Contact
Marco Edoardo Santimaria Designer and Maintainer email | Homepage
Iacopo Colonnelli Workflows Expert and Designer email | Homepage
Massimo Torquati Designer email | Homepage
Marco Aldinucci Designer email | Homepage

Former Members

Name Role Contact
Alberto Riccardo Martinelli Designer email | Homepage

Release files for py-capio-cl 2.0.0

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

Source distribution (sdist)

Source distribution for py-capio-cl 2.0.0
File Size Uploaded
py_capio_cl-2.0.0.tar.gz 1.2 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for py-capio-cl 2.0.0
File
py_capio_cl-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
py_capio_cl-2.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
py_capio_cl-2.0.0-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details
py_capio_cl-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
py_capio_cl-2.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
py_capio_cl-2.0.0-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details
py_capio_cl-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
py_capio_cl-2.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
py_capio_cl-2.0.0-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details
py_capio_cl-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
py_capio_cl-2.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
py_capio_cl-2.0.0-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details
py_capio_cl-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
py_capio_cl-2.0.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
py_capio_cl-2.0.0-cp310-cp310-macosx_15_0_arm64.whl CPython 3.10 CPython 3.10 macOS 15.0+ ARM64 Details

Total release size: 62.1 MB

Release files / py_capio_cl-2.0.0.tar.gz

Download URL py_capio_cl-2.0.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
14e20d040647bed37e4c79d953c8422dab320343ca5e68af7ed27626684f5218
BLAKE2b-256 checksum
How to use checksums
7dde30a37e8ad754de9a7009bb3b1140622e70ce20766dda78cf63fdee1ff328
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL py_capio_cl-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 4.2 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b67b95e6802cc219f960af3c4606279a5e45ec31fad4a2e7bc4e4064d59a90aa
BLAKE2b-256 checksum
How to use checksums
e9f556758396cf7780204663125bf53561e379cd68499cab7af4b9aa989dd4ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL py_capio_cl-2.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4691ab304d97a56ff5e5e4ad1b2433e83eaaab21382e1b9b7e9c8212d272ed3d
BLAKE2b-256 checksum
How to use checksums
ae1c347d48b89243ac92b634751d1d79c413e8288a64ecef8b59ef4e16d65994
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp314-cp314-macosx_15_0_arm64.whl

Download URL py_capio_cl-2.0.0-cp314-cp314-macosx_15_0_arm64.whl
Size 4.0 MB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
246e430d7fee874c6ecaadc654ab583237b8456e0102124cf0cac9af1569453d
BLAKE2b-256 checksum
How to use checksums
da0da09a5a0ed0d0e30b158054c559fa87127934ecb0c86714cc7f5ba8d2d6d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL py_capio_cl-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 4.2 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
12e2cd5f94528d36cd3407152a88eef6e58c38b49ef77efa1c5903bde0e26c47
BLAKE2b-256 checksum
How to use checksums
a949546d68c991be54028b1a2459161a6f3ba7e90259a45ddb9fdb169bcaff99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL py_capio_cl-2.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e6a5fe1a59454b580e53befcfbae3e00157c4f9dc8c819f364fc2894d5d9ddf9
BLAKE2b-256 checksum
How to use checksums
3db330bb578a0f0f72ad614130ce008b50de25074ac87311d653c8f7b740c750
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp313-cp313-macosx_15_0_arm64.whl

Download URL py_capio_cl-2.0.0-cp313-cp313-macosx_15_0_arm64.whl
Size 4.0 MB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
16cc244522dd363ecd52b925e5d9b271df4eb6b24f1cf933f3a6accc5acff9ba
BLAKE2b-256 checksum
How to use checksums
b1f8b420e5d043a22e1ff5da1a2b665df1859d5747d4647834b77dfa482ec1a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL py_capio_cl-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 4.2 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
53134e5ef8fc3d373c6306730be0cfa83f826cab8f2af60b023a80a3355891be
BLAKE2b-256 checksum
How to use checksums
329a6452a8071ed67e0c4816bb3488860cc23762ed1abe5462fdf1cf7b3c14f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL py_capio_cl-2.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fae408a3dc16fb301f69c5fa9580f9e0e5cf05580712df4296cc2d4c5777211b
BLAKE2b-256 checksum
How to use checksums
c234e5cf792da1d752699950810408f4cc52bc6b38ebb9f2148463801e116257
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp312-cp312-macosx_15_0_arm64.whl

Download URL py_capio_cl-2.0.0-cp312-cp312-macosx_15_0_arm64.whl
Size 4.0 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
8879548ea73be51c9572f10eaf97c0a2f918fbad78cba78fc5b688546235f41e
BLAKE2b-256 checksum
How to use checksums
65090c22ef1265ac8e1d8bceed6d83b42f5cb003647f7b0e3229e2fb38bf08f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL py_capio_cl-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 4.2 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e5f1a21d3861cff21c06a17f49109a14f0b3acde0f3f7b61713aabfcc03d00cd
BLAKE2b-256 checksum
How to use checksums
3c27390e299be3c9029edfbd1281eaded23cf0c2e5f609b1cfa768cf779eb955
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL py_capio_cl-2.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dcde919337a49453168e047c597cd57161866cbc6f6136f4574c872d299e61c0
BLAKE2b-256 checksum
How to use checksums
ec3167ee9e426a3bf9490df82705d2005396b3aaaf2ca2a9c108f27b7f33667b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp311-cp311-macosx_15_0_arm64.whl

Download URL py_capio_cl-2.0.0-cp311-cp311-macosx_15_0_arm64.whl
Size 4.0 MB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
a908e0cb9052b5d1bd185c5a69035258c7ac684fff916f818e0061cb7c34e880
BLAKE2b-256 checksum
How to use checksums
753595a7970471f24ba1812175ec2f3f426bffa1c139154d9543910563821d7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL py_capio_cl-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 4.2 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2cc2cb53eab53dc40e6554928d61ac189555be8a89dd3e0f6bcd4e4a0802d561
BLAKE2b-256 checksum
How to use checksums
d9dad3d605454135c0b9b374dd70ea26b1d4af108fddb2c480aeb0043f607a05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL py_capio_cl-2.0.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d3e7c21881f32fe35c9cd7a73f403f7d5147191c8ee7310d1fd9136667e5b6b8
BLAKE2b-256 checksum
How to use checksums
76d4d04943fc0d8163dfeb480c8951cdabf9fad59748c9dbc9a7474ef47c27bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_capio_cl-2.0.0-cp310-cp310-macosx_15_0_arm64.whl

Download URL py_capio_cl-2.0.0-cp310-cp310-macosx_15_0_arm64.whl
Size 4.0 MB
Tags CPython 3.10 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
1d357b0fc0a9ccc656f9ab60b6260a17dad79d4be0e0341683b5766ad4f9f812
BLAKE2b-256 checksum
How to use checksums
17e712428bc977fffd3dbb67354c01278a29e8071e5623984c09c5e96536183e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

2.0.1

16 release files

This release

2.0.0 This release

16 release files

1.5.1

31 release files

1.5.0

31 release files

1.4.1

31 release files

1.3.4

31 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