Hyper

Hex.pm versionHexdocsLicense: MITLast commitCoverageDiscordAsk DeepWikiElixir ~> 1.20

This project is primarily developed by harmont.dev which uses it as the core VM orchestrator.

Status: early and under active development. Interfaces and behavior are expected to change.

Hyper is a distributed orchestrator for Firecracker microVMs. Hyper fits the same niche as Daytona, Runloop and similar.

Quick Start

On an Ubuntu/Debian machine with KVM (bare metal, or a cloud instance with nested virtualization):

git clone https://github.com/harmont-dev/hyper && cd hyper
./setup.sh # one-time host provisioning (asks for sudo)
iex -S mix # boot a Hyper node

Then load an OCI image and boot it:

{:ok, img_id} = Hyper.Img.OciLoader.load("docker.io/library/alpine:3.19")
{:ok, vm} = Hyper.create_vm(%Hyper.Vm.Spec{img_id: img_id, type: :micro})
{:ok, %{stdout: "hello\n"}} = Hyper.exec(vm, ["/bin/echo", "hello"])

That's a real Firecracker microVM with a copy-on-write rootfs -- the quickstart guide has the details. To embed Hyper in your own application instead, add it to your Mix project:

def deps do
[
{:hypervm, "~> 0.1"}
]
end

and follow the installation guide. The Hexdocs cover using, deploying and integrating Hyper.

Features

Docs

Full docs on getting started, as well as useful diagrams are available on Hexdocs. There exists a Deepwikibut this is AI-generated and is not the source of truth. Use the Deepwiki to fill in the blanks where the Hexdocs are lacking. We actively urge you to open issues/PRs for missing Hexdocs documentation.

Why?

The reason I have written this is because I was slightly dissatisfied with existing products. Not to slander any other products (I have a lot of respect and have built on their shoulders), but here is the rough overview of why I did not enjoy existing products:

The reasons to use Hyper are:

Contributing

Contributions are welcome. Hyper is a technical-first project with a strict quality gate (mix check must pass) and a few Linux/Firecracker prerequisites. Read CONTRIBUTING.md before opening a pull request.

Contributions are accepted under the project's license (MIT): by opening a pull request you agree that your contribution is licensed under the same terms, and you retain the copyright to your own work. No separate contributor agreement is required.

License

Hyper is licensed under the MIT License. See LICENSE. Contributions are accepted under the same license.