- Notifications
You must be signed in to change notification settings - Fork92
Distributed systems runtime daemon written in Rust.
License
aurae-runtime/aurae
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Aurae is on a mission to be the most loved and effective way of managingworkloads on a node. Our hope is that by bringing a better set of controls to anode, we can unlock brilliant higher order distributed systems in the future.
Aurae deploys a memory-safe1 runtime daemon, process manager,and PID-1 initialization system to remotely schedule processes, containers, andvirtual machines as well as set node configurations (e.g., like networkingstorage).
Through system proportioning and enterprise workload isolation techniques, theAuraeopen-source project can complement higher order schedulers and controlplanes (such as Kubernetes) as Aurae supports the usage of multi-tenantworkloads and enterprise identities all the way down to the socket layer.
Aurae is a proud member of theNivenly foundation.
- Slides:Link to presentation
- Website :Link to abstract
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 theproject.
- You do not have to knowRust to join the project.
By joining the project in its early stages, you will help to create a milestonecontender for corporate distributed systems and automation that will remainaccessible to anyone.
Byintroducing Aurae cells on top of aLinux kernel the control of eachinternal runtime process on a given node becomes possible. The auraed runtimemaintains ownership of every process by managing everything fromPID-1 tonested processes.
Maintainable and predefined.proto-files contribute to the core definition ofthe distributed systems runtime and the standard library. During the buildprocess, these.proto-files can allow for greater customization possibilities.TheTypeScript file format replaces static manifests (like theYAML fileformat) for direct interactions with a running system.
Auraed | To ensure memory safety, Aurae serves the generic system's runtime daemon ([auraed]). |
AuraeScript | TheAuraeScript (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 embedsDeno source code to provide an SDK and the functionality to attach remote clients for the direct remote communication with Aurae. |
#!/usr/bin/env auraescriptletcells=newruntime.CellServiceClient();letallocated=awaitcells.allocate(<runtime.AllocateCellRequest>{cell:runtime.Cell.fromPartial({name:"my-cell",cpus:"2",}),});letstarted=awaitcells.start(<runtime.StartExecutableRequest>{executable:runtime.Executable.fromPartial({cellName:"my-cell",command:"sleep 4000",description:"Sleep for 4000 seconds",name:"sleep-4000",}),});
Authentication | Aurae extendsSPIFFE/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 managevirtual machines,executables,cells,pods, and otherspawned Aurae instances. |
The Aurae Standard Library | The Aurae project exposes its functionality as a gRPC API through theAurae standard library. TheV0 API reference contains the current library definition. |
Footnotes
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↩
About
Distributed systems runtime daemon written in Rust.