Gough for Platform Engineers

Rack a node, PXE-boot it, and hand it a workload — a container, a VM, or a Kubernetes role — from the gough CLI or WebUI, without hand-writing cloud-init or chasing SSH keys across a fleet.

Pain points

  • Bare-metal provisioning is usually a pile of one-off scripts and tribal knowledge about which server has which NIC.
  • Bootstrap secrets get pasted around or left in plaintext config instead of expiring after one use.
  • Packaging a workload for one environment (a container here, a VM there, a cloud instance somewhere else) means three different tools and three different definitions of the same thing.

How Gough helps

  • PXE-boot hardware discovery auto-tags every node by what it finds, so you schedule workloads onto hardware that actually meets their requirements. (Hardware Discovery & BMC Validation)
  • LXD cluster join is driven by a Vault-escrowed, one-time-use token — no manually copied join secrets. (Vault-Escrowed LXD Cluster Join)
  • gough biome new/validate gives you a versioned workflow for packaging your own workload — LXC container or KVM VM, with cloud-init and resource sizing declared once — and deploying it the same way as the built-in Kubernetes, storage, or monitoring Biomes. (Biomes: Packaged, Versioned Workloads)
  • The same LXD backend that creates containers and VMs on your own hardware also drives AWS, Azure, GCP, and Vultr instances, so you're not maintaining separate automation per environment. (Bare Metal, Containers, VMs & Cloud — One API)
  • Management, internal, and external networking are configured independently, with a documented CLI for baseline setup and migration. (Three Independent Network Baselines)
  • Every backend service ships its own Helm chart, so you can deploy or update Gough’s services directly inside an existing GitOps pipeline. (Helm-Deployed Services)

Read the quickstart