Project Cassini is the open, collaborative, standards-based initiative to deliver a seamless cloud-native software experience for devices based on Arm Cortex-A.
Initial release of Cassini distribution will provide a framework for deployment and orchestration of applications (edge runtime) within containers.
Future releases of Cassini distribution will include support for platform abstraction for security (PARSEC), provisioning the platform and update all components of software stack over the air. In addition, optionally utilize PARSEC to secure those operations.
Cassini aims to facilitate the deployment of application workloads via Docker and K3s use-case on the supported target platforms.
The following diagram illustrates the Cassini Architecture.
The different software layers are described below:
User-defined container applications that are deployed and executed on the Cassini software stack. Note that the Cassini project provides the system infrastructure for user workloads, and not the application workloads themselves. Instead, they should be deployed by end-users according to their individual use-cases.
This is the main component provided by the Cassini project. The Cassini filesystem contains tools and services that provide Cassini core functionalities and facilitate deployment and orchestration of user application workloads. These tools and services include the Docker container engine, the K3s container orchestration framework, together with their run-time dependencies. In addition, Cassini provides supporting packages such as those which enable run-time validation tests or software development capabilities on the target platform.
System software specific to the target platform, composed of firmware, bootloader and the operating system.
Cassini includes the following major features:
Container engine and runtime with Docker and runc-opencontainers.
Container workload orchestration with the K3s Kubernetes distribution.
On-target development support with optionally included Software Development Kit.
Validation support with optionally included run-time integration tests, and build-time kernel configuration checks.
Other features of Cassini include:
The features provided by the
poky.confdistribution, which Cassini extends.
Systemd used as the init system.
RPM used as the package management system.
This documentation assumes a base level of knowledge related to different aspects of achieving the target use-case via Cassini:
Application workload containerization, deployment, and orchestration
This documentation does not provide detailed guidance on developing application workloads, deploying them, or managing their execution via Docker or the K3s orchestration framework, and instead focuses on Cassini-specific instructions to support these activities on an Cassini distribution image.
The Yocto Project
This documentation contains instructions for achieving Cassini’s use-case using a set of included configuration files that provide standard build features and settings. However, Cassini forms a distribution layer for integration with the Yocto project and is thus highly configurable and extensible. This documentation supports those activities by detailing the available options for Cassini-specific customizations and extensions, but assumes knowledge of the Yocto project necessary to prepare an appropriate build environment with these options configured.
Readers are referred to the Yocto Project Documentation for information on setting up and running non-standard Cassini distribution builds.
meta-cassini repository is structured as follows:
Yocto distribution layer providing top-level and general policies for the Cassini distribution images.
Yocto software layer with recipes that include run-time tests to validate Cassini functionalities.
Directory which contains configuration files for running tools on Cassini, such as files to support use of the kas build tool, or Cassini-specific configuration for running automated quality-assurance checks.
The repository’s standard licence is the MIT license (more details in License), under which most of the repository’s content is provided. Exceptions to this standard license relate to files that represent modifications to externally licensed works (for example, patch files). These files may therefore be included in the repository under alternative licenses in order to be compliant with the licensing requirements of the associated external works.
Contributions to the project should follow the same licensing arrangement.
Contributions and Issue Reporting¶
Guidance for contributing to the Cassini project can be found at Contributing.
To report issues with the repository such as potential bugs, security concerns, or feature requests, please submit an Issue via GitLab Issues, following the project’s template.
Feedback and support¶
To request support please contact Arm at firstname.lastname@example.org. Arm licensees may also contact Arm via their partner managers.