Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/aurae-runtime/aurae

Distributed systems runtime daemon written in Rust.
https://github.com/aurae-runtime/aurae

daemon distributed-systems linux multitenancy rust system-programming

Last synced: about 1 month ago
JSON representation

Distributed systems runtime daemon written in Rust.

Lists

README

        

![Workflow in progress: deploy] ![Workflow in progress: documentation] ![Workflow in progress: build]



# 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.

## FOSDEM 2023 Presentation

- Slides: [Link to presentation](https://docs.google.com/presentation/d/1GxKN5tyv4lV2aZdEOUqy3R9tVCat-vrFJyelgFX7b1A/edit#slide=id.g1eef12fba1d_6_53)
- Website : [Link to abstract](https://fosdem.org/2023/schedule/event/rust_aurae_a_new_pid_1_for_distributed_systems/)

## 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
project.
- You do not have to know [Rust] to join the project.

By joining the project in its early stages, you will help to create a milestone
contender for corporate distributed systems and automation that will remain
accessible to anyone.

# **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. |
|||

```typescript
#!/usr/bin/env auraescript
let cells = new runtime.CellServiceClient();

let allocated = await cells.allocate({
cell: runtime.Cell.fromPartial({
name: "my-cell",
cpus: "2",
}),
});

let started = await cells.start({
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"