Xenon is a middleware abstraction library. It provides a simple programming interface to various pieces of software that can be used to access distributed compute and storage resources.
Many applications use remote storage and compute resources. To do so, they need to include code to interact with the scheduling systems and file transfer protocols used on those remote machines.
Unfortunately, many different scheduler systems and file transfer protocols exist, often with completely different programming interfaces. This makes it hard for applications to switch to a different system or support multiple remote systems simultaneously.
Xenon solves this problem by providing a single programming interface to many different types of remote resources, allowing applications to switch without changing a single line of code.
Xenon is an abstraction layer that sits between your application and the (usually remote) resource it uses. Xenon is written in Java, but is also accessible from other languages (e.g. Python) through its gRPC interface and via the command line.
Java library with local, ssh, ftp, at, slurm, gridengine, torque and webdav adaptors.
Java library with Amazon S3 adaptor.
Java library with gridftp adaptor.
Java library with HDFS adaptor.
Run applications remotely via a gRPC interface.
Command line interface to Xenon
Python API for Xenon
Docker images with filesystems & schedulers to test Xenon middleware
Run CWL workflows using Xenon