This repository provides an overview of the rust-vmm project, its crates, guiding principles, and the development model.
rust-vmm is an open-source project that empowers the community to build custom Virtual Machine Monitors (VMMs) and hypervisors. It provides a set of virtualization components that any project can use to quickly develop virtualization solutions while focusing on the key differentiators of their product rather than re-implementing common components like KVM wrappers, virtio devices and other VMM libraries.
The rust-vmm project is organized as a shared effort, shared ownership open-source project that includes (so far) contributors from Alibaba, AWS, Cloud Base, Crowdstrike, Intel, Google, Linaro, Red Hat as well as individual contributors.
Each virtualization component lives in a separate GitHub repository under the rust-vmm organization. One repository corresponds usually to one Rust crate.
When we first started the rust-vmm project each of the crate was living in its own repository. As the number of crates grew quickly, we reverted this decision, and started having related crates as part of a single workspace. Now, we have one workspace per repository. For example, the vm-virtio repository accommodates multiple crates including virtio-queue, and different virtio device implementations. The reasoning behind having multiple crates in a single repository comes from the maintenance cost of repositories. To give an example, whenever we update the rust-vmm-ci, Dependabot will open a PR in each rust-vmm repository to update to the latest version. While in most cases the reviews are trivial as very few changes are required, you still need to go through a long list of PRs that need to be approved. In rare cases when changes to the infrastructure impact the CI, propagating them to individual repositories quickly adds up. You need to clone the repository, create a branch, provide the update, follow up on the PRs, and so on.
A rust-vmm crate can have one of the following states:
empty: The crate repo exists but there is no code there yet. This
means the crate was created after a community acknowledgement about its
relevance to the project, but either no code has been submitted yet or
the initial code base is being reviewed through a pull request.
rust-vmm: The code is a work in progress. Once it meets the production
requirements, the crate
will be pushed to crates.io.
crates.io: The crate is considered to be production ready. It can be
consumed from Rust's canonical crate registry:
crates.io. The crate repository in rust-vmm
is as a staging area until the next push to crates.io.
In other words, the production ready version of the code lives in
crates.io while development happens in the rust-vmm
git repo.
These are the empty repositories that have PRs waiting to be merged.
acpi_tables: code for generating
ACPI tables.rust-vmm crates and minimal glue.The rust-vmm project is maintained by repository maintainers and gatekeepers. More details about their responsibilities are available in the Maintainers Docs.
You can join our community discussions on any of the following places:
See infrastructure docs.
All the rust-vmm repositories accept contributions by a GitHub Pull Request (PR). For more details, please check the contributing document.
For other processes (like setting up repos), please check the extended documentation.
If you want to become a rust-vmm maintainer, or you're curious about the role,
please check the documentation available in MAINTAINERS.md.
If you have a proposal about a new rust-vmm component, please open a review request issue. The issue must provide the explanations and justifications behind the need for a new component, highlighting the purpose of this new repository, how will it be used by other VMMs or hypervisors, and other information that you find relevant.
Discussions about the proposal will take place on the same issue, and once an agreement is reached on the new crate name (this part is hard!) and design, an empty repository will be created in the rust-vmm GitHub organization.
To add functionality you will need to send Pull Requests (PRs) against the newly created repository. While we do not expect the code to be perfect from the first try, we do enforce a high standard in terms of quality for all existing repositories under rust-vmm.
We consider crates published on crates.io to be production ready. In order to maintain a high security and quality standard, the following list of requirements must be checked before having the first version published:
src/lib.rs and it will end up being the home page of the crate on
docs.rs. Include information about what this crate does,
how can it be used in other projects, as well as usage examples. Check out
the kvm-ioctls docs for an
example.cargo test. It is a nice way to ensure that your comments and examples
don't go out of sync with the code. To make sure we don't miss anything this
rule is enforceable by using #![deny(missing-docs)] in src/lib.rs.Cargo.toml. Check the
cargo reference
for the requirements that a crate must meet to be published to
crates.io.We ensure that all rust-vmm components keep the same quality bar by using the rust-vmm-ci. The rust-vmm-ci is built on top of Buildkite, and added as a submodule to all rust-vmm repositories. For more details, please check the rust-vmm-ci README.
For more details about certain aspects of developing in rust-vmm, please check the extended development documentation.
(top 24 of 25)
580 followers · starred Aug 2026
1,674 followers · starred Mar 2025
94 followers · starred Apr 2019
2,540 followers · starred Aug 2020
This repository provides an overview of the rust-vmm project, its crates, guiding principles, and the development model.
rust-vmm is an open-source project that empowers the community to build custom Virtual Machine Monitors (VMMs) and hypervisors. It provides a set of virtualization components that any project can use to quickly develop virtualization solutions while focusing on the key differentiators of their product rather than re-implementing common components like KVM wrappers, virtio devices and other VMM libraries.
The rust-vmm project is organized as a shared effort, shared ownership open-source project that includes (so far) contributors from Alibaba, AWS, Cloud Base, Crowdstrike, Intel, Google, Linaro, Red Hat as well as individual contributors.
Each virtualization component lives in a separate GitHub repository under the rust-vmm organization. One repository corresponds usually to one Rust crate.
When we first started the rust-vmm project each of the crate was living in its own repository. As the number of crates grew quickly, we reverted this decision, and started having related crates as part of a single workspace. Now, we have one workspace per repository. For example, the vm-virtio repository accommodates multiple crates including virtio-queue, and different virtio device implementations. The reasoning behind having multiple crates in a single repository comes from the maintenance cost of repositories. To give an example, whenever we update the rust-vmm-ci, Dependabot will open a PR in each rust-vmm repository to update to the latest version. While in most cases the reviews are trivial as very few changes are required, you still need to go through a long list of PRs that need to be approved. In rare cases when changes to the infrastructure impact the CI, propagating them to individual repositories quickly adds up. You need to clone the repository, create a branch, provide the update, follow up on the PRs, and so on.
A rust-vmm crate can have one of the following states:
empty: The crate repo exists but there is no code there yet. This
means the crate was created after a community acknowledgement about its
relevance to the project, but either no code has been submitted yet or
the initial code base is being reviewed through a pull request.
rust-vmm: The code is a work in progress. Once it meets the production
requirements, the crate
will be pushed to crates.io.
crates.io: The crate is considered to be production ready. It can be
consumed from Rust's canonical crate registry:
crates.io. The crate repository in rust-vmm
is as a staging area until the next push to crates.io.
In other words, the production ready version of the code lives in
crates.io while development happens in the rust-vmm
git repo.
These are the empty repositories that have PRs waiting to be merged.
acpi_tables: code for generating
ACPI tables.rust-vmm crates and minimal glue.The rust-vmm project is maintained by repository maintainers and gatekeepers. More details about their responsibilities are available in the Maintainers Docs.
You can join our community discussions on any of the following places:
See infrastructure docs.
All the rust-vmm repositories accept contributions by a GitHub Pull Request (PR). For more details, please check the contributing document.
For other processes (like setting up repos), please check the extended documentation.
If you want to become a rust-vmm maintainer, or you're curious about the role,
please check the documentation available in MAINTAINERS.md.
If you have a proposal about a new rust-vmm component, please open a review request issue. The issue must provide the explanations and justifications behind the need for a new component, highlighting the purpose of this new repository, how will it be used by other VMMs or hypervisors, and other information that you find relevant.
Discussions about the proposal will take place on the same issue, and once an agreement is reached on the new crate name (this part is hard!) and design, an empty repository will be created in the rust-vmm GitHub organization.
To add functionality you will need to send Pull Requests (PRs) against the newly created repository. While we do not expect the code to be perfect from the first try, we do enforce a high standard in terms of quality for all existing repositories under rust-vmm.
We consider crates published on crates.io to be production ready. In order to maintain a high security and quality standard, the following list of requirements must be checked before having the first version published:
src/lib.rs and it will end up being the home page of the crate on
docs.rs. Include information about what this crate does,
how can it be used in other projects, as well as usage examples. Check out
the kvm-ioctls docs for an
example.cargo test. It is a nice way to ensure that your comments and examples
don't go out of sync with the code. To make sure we don't miss anything this
rule is enforceable by using #![deny(missing-docs)] in src/lib.rs.Cargo.toml. Check the
cargo reference
for the requirements that a crate must meet to be published to
crates.io.We ensure that all rust-vmm components keep the same quality bar by using the rust-vmm-ci. The rust-vmm-ci is built on top of Buildkite, and added as a submodule to all rust-vmm repositories. For more details, please check the rust-vmm-ci README.
For more details about certain aspects of developing in rust-vmm, please check the extended development documentation.
(top 24 of 25)
580 followers · starred Aug 2026
1,674 followers · starred Mar 2025
94 followers · starred Apr 2019
2,540 followers · starred Aug 2020