Distributed systems runtime daemon written in Rust.
[![(001) [ubuntu:latest] make auraed-test](https://github.com/aurae-runtime/aurae/actions/workflows/001-tester-ubuntu-make-test-auraed.yml/badge.svg)](https://github.com/aurae-runtime/aurae/actions/workflows/001-tester-ubuntu-make-test-auraed.yml) [![(002) [ubuntu:latest] make auraescript-test](https://github.com/aurae-runtime/aurae/actions/workflows/002-tester-ubuntu-make-test-auraescript.yml/badge.svg)](https://github.com/aurae-runtime/aurae/actions/workflows/002-tester-ubuntu-make-test-auraescript.yml) [![(003) [ubuntu:latest] make aer-test](https://github.com/aurae-runtime/aurae/actions/workflows/003-tester-ubuntu-make-test-aer.yml/badge.svg)](https://github.com/aurae-runtime/aurae/actions/workflows/003-tester-ubuntu-make-test-aer.yml)
Mission
Aurae is on a mission to be the most loved and effective way of managing workloads on a node. Our hope is that by bringing a better set of controls to a node, we can unlock brilliant higher order distributed systems in the future.
Introduction
[Aurae] deploys a memory-safe [^memory-safe] runtime daemon, process manager, and PID-1 initialization system to remotely schedule processes, containers, and virtual machines as well as set node configurations (e.g., like networking storage).
Through system proportioning and enterprise workload isolation techniques, the Aurae [open-source] project can complement higher order schedulers and control planes (such as Kubernetes) as Aurae supports the usage of multi-tenant workloads and enterprise identities all the way down to the socket layer.
[Aurae] is a proud member of the Nivenly foundation.
FOSDEM 2023 Presentation
- Slides: Link to presentation - Website : Link to abstract 
Project Status
STILL IN EARLY DEVELOPMENT!
The Aurae project and API can change without notice.
Do not run the project in production until further notice!
- The Aurae project welcomes contributions of all kinds and sizes.
- Please read the "[getting involved]" documentation before contributing to the
- You do not have to know [Rust] to join the project.
Expanded Overview
By [introducing Aurae cells] on top of a [Linux kernel] the control of each internal runtime process on a given node becomes possible. The auraed runtime maintains ownership of every process by managing everything from [PID]-1 to nested processes.
Maintainable and predefined [.proto]-files contribute to the core definition of the distributed systems runtime and the standard library. During the build process, these [.proto]-files can allow for greater customization possibilities. The [TypeScript] file format replaces static manifests (like the [YAML] file format) for direct interactions with a running system.
||| | :--- | :--- | | Auraed | To ensure memory safety, Aurae serves the generic system's runtime daemon ([auraed]).| | AuraeScript | The [AuraeScript] (a Turing-complete scripting language built on TypeScript) library automatically generates itself from the pre-defined [.proto] files defined in the Aurae standard library.
It also directly embeds [Deno] source code to provide an SDK and the functionality to attach remote clients for the direct remote communication with Aurae. | |||
#!/usr/bin/env auraescript
let cells = new runtime.CellServiceClient();
let allocated = await cells.allocate(<runtime.AllocateCellRequest>{ cell: runtime.Cell.fromPartial({ name: "my-cell", cpus: "2", }), });
let started = await cells.start(<runtime.StartExecutableRequest>{ executable: runtime.Executable.fromPartial({ cellName: "my-cell", command: "sleep 4000", description: "Sleep for 4000 seconds", name: "sleep-4000", }), });
||| | :--- | :--- | | Authentication | Aurae extends [SPIFFE]/[SPIRE] (x509 mTLS)-backed identity, authentication (authn), and authorization (authz) in a distributed system down to the Unix domain socket layer. | | Principle of Least Awareness | A single Aurae instance has no awareness of higher order scheduling mechanisms such as the Kubernetes control plane. | | Runtime Workloads | The Aurae runtime API can manage [virtual machines], [executables], [cells], [pods], and other [spawned Aurae instances]. | | The Aurae Standard Library | The Aurae project exposes its functionality as a gRPC API through the [Aurae standard library]. The [V0 API reference] contains the current library definition. | |||
[^memory-safe]: The reliability and effectiveness of the Rust systems language make it an excellent choice for the development of the Aurae project. [Learn more about Rust]
[workflow in progress: deploy]: https://github.com/aurae-runtime/aurae/actions/workflows/291-deploy-website-documentation-aurae-builder-make-docs.yml/badge.svg?branch=main "https://github.com/aurae-runtime/aurae/actions/workflows/291-deploy-website-documentation-aurae-builder-make-docs.yml" [workflow in progress: documentation]: https://github.com/aurae-runtime/aurae/actions/workflows/290-check-website-documentation-aurae-builder-make-docs.yml/badge.svg "https://github.com/aurae-runtime/aurae/actions/workflows/290-check-website-documentation-aurae-builder-make-docs.yml" [workflow in progress: build]: https://github.com/aurae-runtime/aurae/actions/workflows/001-tester-ubuntu-make-test.yml/badge.svg "https://github.com/aurae-runtime/aurae/actions/workflows/001-tester-ubuntu-make-test.yml"
[aurae cells]: https://aurae.io/blog/24-10-2022-aurae-cells/ "Learn more about Aurae cells" [aurae standard library]: https://aurae.io/stdlib/ "Learn more about Auraes standard library" [aurae]: https://aurae.io/ "Visit aurae.io" [cells]: https://aurae.io/stdlib/v0/#cell "Processes running in a shared cgroup namespace" [executables]: https://aurae.io/stdlib/v0/#executable "Basic runtime processes" [getting involved]: https://aurae.io/community/#getting-involved "Participate and contribute!" [pods]: https://aurae.io/stdlib/v0/#pod "Cells running in spawned instances" [spawned aurae instances]: https://aurae.io/stdlib/v0/#instance "Short lived nested virtual instances of Aurae" [v0 api reference]: https://aurae.io/stdlib/v0/ "Learn more about the current Aurae library definitions" [virtual machines]: https://aurae.io/stdlib/v0/#virtualmachine "Long-lived arbitrary virtual machines" [introducing aurae cells]: https://aurae.io/blog/2022-10-24-aurae-cells/#IntroducingAuraeCells "Aurae Blog: 2022-10-24"
[grpc]: https://en.wikipedia.org/wiki/GRPC "Read about gRPC" [mtls]: https://en.wikipedia.org/wiki/Mutual_authentication#mTLS "Read about mTLS" [pid]: https://en.wikipedia.org/wiki/Process_identifier "Read about PID"
[auraescript]: https://github.com/aurae-runtime/aurae/tree/main/auraescript "Check out the Auraescript on Github ๐" [containerd]: https://github.com/containerd/containerd "Read about containerd on GH" [firecracker]: https://github.com/firecracker-microvm/firecracker "Read about firecracker on Github" [kris nรณva]: https://github.com/krisnova "Check out Kris Nรณva on Github ๐" [open-source]: https://github.com/aurae-runtime/aurae/blob/main/LICENSE "Apache License 2.0" [spiffe]: https://github.com/spiffe "Read about SPIFFE" [spire]: https://github.com/spiffe/spire "Read about SPIRE"
[.proto]: https://protobuf.dev/ "Read more about Protocol Buffers" [deno]: https://deno.land "Read more about Deno" [learn more about rust]: https://doc.rust-lang.org/book/ "The book about the Rust programming language" [linux kernel]: https://git.kernel.org/ "Learn about the Linux kernels" [medium blog: why fix kubernetes and systemd?]: https://medium.com/@kris-nova/why-fix-kubernetes-and-systemd-782840e50104 "Learn more about the possibilies of Aurae" [rust]: https://www.rust-lang.org/ "Read and learn more about the Rust language" [systemd]: https://www.freedesktop.org/wiki/Software/systemd/ "Read more about Systemd" [typescript]: https://www.typescriptlang.org/docs/handbook/ "Read more about TypeScript" [yaml]: https://yaml.org/ "Read more about YAML"