MCPcopy
hub / github.com/lxc/incus

github.com/lxc/incus @v7.2.0 sqlite

repository ↗ · DeepWiki ↗ · release v7.2.0 ↗
12,156 symbols 58,592 edges 1,361 files 8,108 documented · 67%
README

Incus

Incus is a modern, secure and powerful system container and virtual machine manager.

It provides a unified experience for running and managing full Linux systems inside containers or virtual machines. Incus supports images for a large number of Linux distributions (official Ubuntu images and images provided by the community) and is built around a very powerful, yet pretty simple, REST API. Incus scales from one instance on a single machine to a cluster in a full data center rack, making it suitable for running workloads both for development and in production.

Incus allows you to easily set up a system that feels like a small private cloud. You can run any type of workload in an efficient way while keeping your resources optimized.

You should consider using Incus if you want to containerize different environments or run virtual machines, or in general run and manage your infrastructure in a cost-effective way.

You can try Incus online at: https://linuxcontainers.org/incus/try-it/

Project history

Incus, which is named after the Cumulonimbus incus or anvil cloud started as a community fork of Canonical's LXD following Canonical's takeover of the LXD project from the Linux Containers community.

The project was then adopted by the Linux Containers community, taking back the spot left empty by LXD's departure.

Incus is a true open source community project, free of any CLA and remains released under the Apache 2.0 license. It's maintained by the same team of developers that first created LXD.

Get started

See Getting started in the Incus documentation for installation instructions and first steps.

Status

Type Service Status
Tests GitHub Build Status
Go documentation Godoc GoDoc
Static analysis GoReport Go Report Card
Translations Weblate Translation status

Security

Consider the following aspects to ensure that your Incus installation is secure:

  • Keep your operating system up-to-date and install all available security patches.
  • Use only supported Incus versions.
  • Restrict access to the Incus daemon and the remote API.
  • Do not use privileged containers unless required. If you use privileged containers, put appropriate security measures in place. See the LXC security page for more information.
  • Configure your network interfaces to be secure.

See Security for detailed information.

IMPORTANT:

Local access to Incus through the Unix socket always grants full access to Incus. This includes the ability to attach file system paths or devices to any instance as well as tweak the security features on any instance.

Therefore, you should only give such access to users who you'd trust with root access to your system.

Support and community

The following channels are available for you to interact with the Incus community.

Bug reports

You can file bug reports and feature requests at: https://github.com/lxc/incus/issues/new

Community support

Community support is handled at: https://discuss.linuxcontainers.org

Commercial support

Commercial support is currently available from Zabbly for users of their Debian or Ubuntu packages.

Documentation

The official documentation is available at: https://github.com/lxc/incus/tree/main/doc

Contributing

Fixes and new features are greatly appreciated. Make sure to read our contributing guidelines first!

Extension points exported contracts — how you extend this code

NICState (Interface)
NICState provides the ability to access NIC state. [8 implementers]
internal/server/device/device_interface.go
Atom (Interface)
Atom is the type of command-line atoms. [10 implementers]
cmd/incus/usage/usage.go
Server (Interface)
The Server type represents a generic read-only server. [3 implementers]
client/interfaces.go
Migrator (Interface)
Migrator defines the methods required to perform a migration. [3 implementers]
cmd/incus-migrate/main_migrate.go
InstanceWriter (Interface)
InstanceWriter is the instance writer interface. [2 implementers]
internal/instancewriter/instance_writer_interface.go
Snippet (Interface)
Snippet generates a single code snippet of a target source file code. [2 implementers]
cmd/generate-database/file/snippet.go
HTTPTransporter (Interface)
HTTPTransporter represents a wrapper around *http.Transport. It is used to add some pre and postprocessing logic to http
client/util.go
Option (FuncType)
Option to configure minioidc.
test/mini-oidc/minioidc/minioidc.go

Core symbols most depended-on inside this repo

Errorf
called by 6249
internal/server/storage/linstor/linstor.go
G
called by 2758
internal/i18n/i18n_linux.go
SmartError
called by 1167
internal/server/response/smart.go
String
called by 994
internal/server/response/response.go
Transaction
called by 839
internal/server/db/db.go
Debug
called by 779
shared/logger/types.go
Tx
called by 752
internal/server/db/transaction.go
Add
called by 656
internal/server/device/device_interface.go

Shape

Method 6,829
Function 3,466
Struct 1,594
TypeAlias 135
Interface 97
FuncType 35

Languages

Go100%

Modules by API surface

client/interfaces.go367 symbols
internal/server/instance/drivers/driver_qemu.go184 symbols
internal/migration/migrate.pb.go141 symbols
internal/server/instance/drivers/driver_lxc.go134 symbols
internal/server/storage/backend.go132 symbols
internal/server/network/driver_ovn.go130 symbols
internal/server/instance/instance_interface.go111 symbols
internal/server/network/ovn/ovn_nb_actions.go104 symbols
internal/server/instance/drivers/qmp/commands.go99 symbols
internal/server/storage/pool_interface.go92 symbols
internal/server/storage/backend_mock.go89 symbols
internal/server/db/cluster/update.go89 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

cyphar.com/go-pathrsv0.2.5 · 1×
github.com/AdaLogics/go-fuzz-headersv0.0.0-2024080614160 · 1×
github.com/FuturFusion/vsockv0.0.0-2026021921304 · 1×
github.com/LINBIT/golinstorv0.63.0 · 1×
github.com/Rican7/retryv0.3.1 · 1×
github.com/adhocore/gronxv1.20.0 · 1×
github.com/apex/logv1.9.0 · 1×
github.com/aws/aws-sdk-go-v2v1.42.0 · 1×
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstreamv1.7.13 · 1×
github.com/aws/aws-sdk-go-v2/credentialsv1.19.24 · 1×
github.com/aws/aws-sdk-go-v2/feature/s3/transfermanagerv0.2.11 · 1×
github.com/aws/aws-sdk-go-v2/internal/configsourcesv1.4.29 · 1×

For agents

$ claude mcp add incus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact