Skip to main content

gaol

Containers and VMs all the way down.

A cross-platform container and VM management tool supporting Docker, systemd-nspawn, and libvirt.

Installation

With uv (recommended)

git clone <repo-url>
cd gaol
uv pip install -e .

With pip

git clone <repo-url>
cd gaol
pip install -e .

With pipx (isolated global install)

pipx install .

Quick Start

# Create a container
gaol create mycontainer --distro trixie

# Start the container
gaol start mycontainer

# Execute a command
gaol exec mycontainer -- bash

# List containers
gaol list

# Stop and destroy
gaol stop mycontainer
gaol destroy mycontainer

Features

  • Multiple runtimes: Docker, systemd-nspawn, libvirt/QEMU
  • Profiles: Reusable configurations for common setups (dev tools, GUI, networking)
  • Snapshots: Save and restore container state
  • Declarative specs: Define containers in YAML/TOML files
  • Secrets management: Encrypted secrets with ${secret:NAME} syntax
  • GPU passthrough: NVIDIA, AMD, and Intel GPU support
  • Container diff: Compare filesystem states and audit changes
  • Health checks: HTTP, TCP, and command-based monitoring
  • Dev tunnels: Expose containers to the internet via cloudflared
  • Shell integration: Completions and prompt integration for bash/zsh/fish

Runtimes

Runtime Platform Use Case
Docker Linux, macOS General purpose, wide compatibility
systemd-nspawn Linux Lightweight, native systemd integration
libvirt/QEMU Linux Full VM isolation for untrusted workloads

Profiles

Apply pre-configured profiles to containers:

# Create with profiles
gaol create mydev --distro trixie --profile dev-python --profile gui

# List available profiles
gaol profiles list

# Show profile details
gaol profiles show dev-python

Built-in profiles include: base, dev-python, dev-node, dev-rust, gui, tailscale, tor, docker-in-docker, and more.

Declarative Specs

Define containers in YAML:

# mycontainer.yaml
name: web-dev
runtime: nspawn
distro: trixie
profiles:
  - dev-python
  - gui
environment:
  DATABASE_URL: "postgres://localhost/mydb"
ports:
  8080: 80
gaol spec apply mycontainer.yaml --start

Container Diff

Compare container filesystems and track changes:

# Compare two containers
gaol diff containers container-a container-b

# Compare snapshots
gaol diff snapshots mycontainer --from baseline --to current

# Audit changes since last snapshot
gaol audit mycontainer --packages

Development

# Install dev dependencies
uv pip install -e ".[dev]"

# Run tests
uv run pytest

# Run linter
uv run ruff check src/

License

MIT

Metadata

Release files for gaol 2026.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gaol 2026.3.5
File Size Uploaded
gaol-2026.3.5.tar.gz 807.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gaol 2026.3.5
File Interpreter ABI Platform
gaol-2026.3.5-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / gaol-2026.3.5.tar.gz

Download URL gaol-2026.3.5.tar.gz
Size 807.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bbdd9441f83bb8de9dd50620abca591d09cee3199717002dfafdfc61d0230dda
BLAKE2b-256 checksum
How to use checksums
de7ba6c2c7d5e80289c43f7244ce7fecb650df7427daa64ac9033014ccc13bac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / gaol-2026.3.5-py3-none-any.whl

Download URL gaol-2026.3.5-py3-none-any.whl
Size 632.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5f5d7b8796b95028fd88d51122820dd54cf2190a941be9d9f9982dd53c8294d
BLAKE2b-256 checksum
How to use checksums
5b29aa6d5d7832f2dbd3e58f673f58454d15aa747c38a0d6a1680164b38e35c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

2026.3.5 This release

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page