diff --git a/.github/img/logo.svg b/.github/img/logo.svg new file mode 100644 index 0000000..743e12a --- /dev/null +++ b/.github/img/logo.svg @@ -0,0 +1,46 @@ + + écrou + A steel hex nut: rounded hexagonal body, chamfered top face, threaded hole at the center. + + + + + + + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..135249b --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +

+ écrou logo +

+

ecrou

+

a small microVM runtime based on libkrun

+ +## Try ecrou in the terminal + +### Installation + +ecrou is available as a strictly confined snap: +``` +sudo snap install ecrou +sudo snap connect ecrou:kvm +``` + +### Usage + +``` +$ ecrou run -it ubuntu +root@ecrou-vm-m2glhl:/# +``` + +## Embed ecrou into your project + +ecrou is both a library and a tiny CLI frontend around it. The library is embeddable into any project, allowing to use microVMs easily. + +### Rust + +ecrou is a Rust library, which can just be called: +```rust +use ecrou::vm::RunOptions; +use ecrou::NoProgress; + +fn main() -> ecrou::Result { + let code = ecrou::vm::run( + &RunOptions { + image: "ubuntu:resolute".into(), + command: vec!["uname".into(), "-a".into()], + ..RunOptions::default() + }, + &NoProgress, + )?; + Ok(std::process::ExitCode::from(code.clamp(0, 255) as u8)) +} +``` +