Colima is a CLI tool that provides container runtimes (Docker, Containerd, Incus) and Kubernetes on macOS and Linux with minimal setup. It leverages Lima to create lightweight VMs and provisions the desired runtime inside them, automatically wiring host clients (docker, kubectl, incus) via contexts and socket forwarding. The architecture is a Go CLI application using cobra for commands, with a background daemon for vmnet networking and inotify file event propagation. Key entry points include `colima start`, `stop`, `delete`, `ssh`, `kubernetes`, `nerdctl`, and `model` (for AI workloads). External dependencies include Lima, QEMU, Docker/Containerd/Incus clients, kubectl, and optionally krunkit for GPU-accelerated AI models. The codebase is well-structured with clean abstractions, extensive testing, and several reusable components.
This repository implements a Terraform provider for managing Incus, a container and virtual machine orchestration platform. It provides full CRUD operations for Incus resources such as instances, networks, storage pools, profiles, projects, certificates, cluster groups, and server configuration, along with corresponding data sources for reading existing state. The provider is built using the Terraform Plugin Framework (v1.19.0) with some fallback to Plugin SDK v2, and communicates with Incus via its client library (github.com/lxc/incus/v7). Key entry points include the main.go provider server, internal/provider/provider.go for resource registration, and individual resource files under internal/{certificate,cluster,image,instance,network,profile,project,server,storage}. The provider supports multiple remotes, OIDC authentication, clustering, and PKI, and includes a code generation tool (cmd/generate-datasources) that produces consistent data source implementations and documentation from a YAML configuration and Go templates. Acceptance tests require a live Incus environment and cover complex scenarios like instance lifecycle, exec triggers, file uploads, and import. The codebase is well-structured with shared utilities in internal/common for config/device/file/import handling, and demonstrates a consistent pattern for state synchronization and error handling. However, it carries some technical debt from its fork of the LXD provider, including dual SDK usage and heavy boilerplate that could benefit from further abstraction.