Goss

github.com ↗

A YAML-based CLI for asserting the installed packages, services, files, ports, and other state of a system.

SI Score
80/100
Pricing
Open Source AI reading, not confirmed
Free plan
Not confirmed
Sign-up required
Not confirmed

Ask SI about Goss

Answers use saved listing facts and recorded sources.
Homepage screenshot
Screenshot of the Goss homepage

What it does

Goss is a server-validation tool that turns operating-system and service expectations into a compact YAML test file. It can add checks from the current machine state, run those assertions with a command-line validator, retry while a system becomes ready, or expose test results as a health endpoint. That makes it useful for validating configured hosts and container images in a deployment workflow. Unlike a browser or application test suite, it checks selected machine resources such as packages, files, ports, processes, and services.

Derive checks, then edit them into policy

The quick start demonstrates goss autoadd sshd to generate initial checks for an SSH service. Running as root lets the tool discover listening ports as well. Goss writes a YAML test file containing assertions about the service, process, user, group, and port; review and edit those values so the file describes the intended configuration rather than merely copying today's machine state. The examples are from documentation and were not run here.

Run the resulting suite with goss validate. The CLI can also retry until the system reaches the expected state, return JUnit or other output formats, or serve a health endpoint. For containers, the project documents wrappers such as dgoss; Kubernetes and Compose wrappers are separate additions with their own setup.

A small, focused validation layer

Goss is Apache-2.0-licensed and distributed as a command-line tool. Its documented resources cover common host properties, but the test author still decides which conditions matter and maintains the assertions as the image or server changes. The project recommends pinning a release in CI instead of relying on an unversioned latest download.

Strengths

  • The `add` and `autoadd` commands can scaffold YAML checks from observed resources, then let a maintainer refine them.
  • Validation supports retries, multiple output formats, and a health endpoint for checks written in the Goss file.
  • The same focused assertions can be adapted to host, Docker, Compose, or Kubernetes workflows through the documented wrappers.

Watch out for

  • Generated checks reflect observed state; maintainers must edit them to encode the desired configuration, and port discovery may require elevated privileges.

Best for

  • Checking server or image configuration such as services, packages, ports, files, and users
  • Adding lightweight host-state assertions to provisioning or deployment validation
  • Publishing selected system checks as a health endpoint

Sources