incus
Manage virtual machines and containers
TLDR
List all containers and virtual machines (both running and stopped)
Create a container from an image, with a custom name
Start or stop an existing container
Open a shell inside an already running container
Remove a stopped container
Pull an image from an image repository (remote) to local
List all available images in the official images: remote
List all images already downloaded to the local: remote
SYNOPSIS
incus [global options...] command [command options] [arguments]
PARAMETERS
-d, --debug
Enable debug output
-h, --help
Show help message
-q, --quiet
Reduce output verbosity
-v, --verbose
Increase verbosity (can repeat)
--profile=PROFILE[,...]
Apply comma-separated profiles
--project=PROJECT
Select project (default: default)
-c, --config=KEY=VALUE
Override instance config key
--color=auto|always|never
Control colored output
--period=PERIOD
Set polling period (default: 10ms)
--timeout=DURATION
Set operation timeout (default: 30s)
--force-local
Force use of local server
--target=NODE
Target cluster node
--type=container|instance|vm
Instance type filter
--version
Print incus version
DESCRIPTION
Incus is a next-generation system container and virtual machine manager. The incus command serves as its primary CLI client, interacting with the incusd daemon to manage instances. It supports creating, configuring, starting, stopping, snapshotting, cloning, and migrating both containers (using LXC) and VMs (using QEMU/KVM).
Key capabilities include unprivileged operation, clustering for HA, live migration without shared storage, image import/export from stores like images.linuxcontainers.org, device passthrough (GPU, USB, PCI), and network management with bridges, OVS, and macvlan. Incus uses a REST API over Unix socket or TCP, with YAML config files and profiles for reusability.
Designed for servers, clouds, and edge, it emphasizes security, performance, and simplicity over Docker-style orchestration. Production-ready with storage support for dir, btrfs, lvm, zfs, ceph, and more.
CAVEATS
Requires incusd daemon running; most ops need root or incus-admin group. Cluster ops require multi-node setup. Unprivileged users limited to user namespaces.
COMMON SUBCOMMANDS
incus init [image] [instance] – Initialize instance
incus launch image [instance] – Launch and start
incus start instance – Start instance
incus list – List instances
incus delete instance – Delete instance
incus exec instance -- cmd – Run command
DAEMON STARTUP
Start with systemctl start incusd. Enable with systemctl enable incusd. Config at /etc/incus/incus.conf.
HISTORY
Forked from LXD 5.0 in July 2022 by LXC team (Stéphane Graber et al.) due to Canonical's AGPL shift and governance. Reached 1.0 in 2023; active development focuses on AGPLv3+, multi-arch VMs, and QEMU integration.
SEE ALSO
incusd(8), lxc(1), lxd(1), podman(1), systemd-nspawn(1)


