What is Incus?

Incus is a next generation system container and virtual machine manager.

It provides a user experience similar to that of a public cloud. With it, you can easily mix and match both containers and virtual machines, sharing the same underlying storage and network.

Incus is image based and provides images for a wide number of Linux distributions. It provides flexibility and scalability for various use cases, with support for different storage backends and network types and the option to install on hardware ranging from an individual laptop or cloud instance to a full server rack.

When using Incus, you can manage your instances (containers and VMs) with a simple command line tool, directly through the REST API or by using third-party tools and integrations. Incus implements a single REST API for both local and remote access.

The Incus project was created by Aleksa Sarai as a community driven alternative to Canonical's LXD.
Today, it's led and maintained by much of the same people that once created LXD.

Get started

To get a better idea of what Incus is and what it does, you can try it online!

Then if you want to run it locally, take a look at our getting started guide.

Containers and virtual machines

Incus provides support for system containers and virtual machines.

When running a system container, Incus simulates a virtual version of a full operating system. To do this, it uses the functionality provided by the kernel running on the host system.

When running a virtual machine, Incus uses the hardware of the host system, but the kernel is provided by the virtual machine. Therefore, virtual machines can be used to run, for example, a different operating system.

You can learn more about the differences between application containers, system containers and virtual machines in our documentation.

Features

Some of the biggest features of Incus are:

Core API
  • Secure by design (through unprivileged containers, resource restrictions, authentication, ...)
  • Intuitive (with a simple, clear API and crisp command line experience)
  • Scalable (from containers on your laptop to clusters of thousands of compute nodes)
  • Event based (providing logging, operation, and lifecycle events)
  • Remote usage (same API used for local and network access)
  • Project support (as a way to compartmentalize sets of images and profiles)
Instances and profiles
Backup and export
Configurability

Availability

Incus works on any recent Linux distribution.

Incus upstream doesn't directly provide packages, but packages are available in a number of distributions or can be found in 3rd party repositories.

In addition, the Incus client is available for Windows and macOS. You can use the client to connect to an Incus server running on a Linux machine.

Current installation instructions can be found in our installation guide.

Support

Incus has two kind of releases:

  • LTS releases
  • Feature releases

The current LTS release is Incus 6.0 and is supported until June 2029.

Feature releases are pushed out every month or so and contain new features as well as bugfixes.
The normal support length for those releases is of about a month, or until the next release comes out.
Some Linux distributions might offer longer support for particular feature releases that they decided to ship.

Commercial support for Incus can be obtained from Zabbly.

Language, licensing and contributions

Incus is written in Go. It is free software and developed under the Apache 2 license.

The Incus source code is available on GitHub.

There are no CLA or similar legal agreements required to contribute to Incus. However, we require commits be signed-off (following the DCO - Developer Certificate of Ownership). See the Contribution guidelines for more information.

GitHub logo