Project Open Se Cura

Open Se Cura is a project to build a low-power secure embeded platform for Ambient ML applications. The target platform leverages RISC-V and OpenTitan.

The Open Se Cura software includes a home-grown operating system named CantripOS, that runs on top of seL4 and (ignoring the seL4 kernel) is written almost entirely in Rust.

The Open Se Cura (and CantripOS) are definitely a work in progress. The CantripOS components are based on an augmented version of seL4's CAmkES framework. Critical system services are CAmkES components that are statically configured. Applications are developed using an AmbiML-focused SDK and dynamically loaded by the system services.

Open Se Cura repositories (what's included here)

Open Se Cura consists of multiple git repositories stitched together with the repo tool. The following git repositories are currently available:

  • build: top-level build targets
  • cantrip: frameworks for developing in Rust and the CantripOS system services
  • docs: various markdown docs on development flows/steps
  • hw: HW RTL source code for building blocks of Open Se Cura
  • ml: example ML programs based on open-source models
  • scripts: support scripts
  • sw: SW BSP and programs to run on Open Se Cura.
  • sim: Behavioral simulation and RTL simulation environment for Open Se Cura.
  • toolchain: IREE ML toolchain

How we do software development for the Open Se Cura platform

Our primary development environment uses Renode for simulation of the Open Se Cura hardware design. Renode allows us to do rapid software/hardware co-design of our multi-core RISC-V target platform. The software environment is derived from those provided by seL4 & OpenTitan. Debugging leverages Renode facilites and gdb talking to Renode for system software and application developement.

Getting started with repo & the build system

This repository includes a multi-platform build framework for use with the Open Se Cura software. This framwork leverages make, cmake, and cargo. To get started follow these download steps to clone the Open Se Cura project from repo using the repo tool We assume below this lands in a top-level directory named “opensecura”.

mkdir opensecura
cd opensecura
repo init -u https://opensecura.googlesource.com/manifest
repo sync -j$(nproc)

See the top-level GettingStarted.md for more detail once you download the repository with repo sync

Source Code Headers

Every file containing source code includes copyright and license information. For dependent / non-Google code these are inherited from the upstream repositories. If there are Google modifications you may find the Google Apache license found below.

Apache header:

Copyright 2023 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contributing to Open Se Cura

Going forward, we’ll continue to evolve Open Se Cura in the open and seek to gradually onboard additional partners to contribute to the codebase. Please contact project-open-se-cura-community@googlegroups.com for more information.