happytails.ai

Compose file validator

Open Compose file validator on Happytails.ai. This view has the same page content and links, with explicit tool capabilities. Read the processing notes before using a tool.

Tool capabilities

{
  "id": "compose-file-validator",
  "category": "developer-tools",
  "built": true,
  "requirements": "Up to 500,000 characters in total, 10 files and 100,000 characters of variables. Everything runs on your device in a background worker. Downloads: JSON report, CSV findings, SARIF 2.1.0 and the merged compose.resolved.yaml.",
  "implementation": {
    "fields": [
      {
        "key": "env",
        "label": "Variables (.env)",
        "value": "",
        "type": "textarea",
        "help": "Optional. One NAME=value per line, used for ${NAME} interpolation. Up to 100,000 characters."
      }
    ],
    "registrationFamily": "config-yaml-manifests",
    "inputMaxLength": 500000,
    "inputErrorCode": "CONFIG_YAML_MANIFESTS_TOO_LONG_COMPOSE",
    "note": "Checks Compose files on your device against an authored subset of the Compose Specification. Up to 500,000 characters and 10 files.",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 500000,
      "inputMode": "text",
      "label": "Compose file and overrides",
      "placeholder": "services:\n  web:\n    image: nginx:1.27\n    ports:\n      - \"8080:80\"",
      "help": "Paste compose.yaml. Put each override file after a line of three dashes. Up to 500,000 characters. Review the settings before running.",
      "helpParts": [
        "Paste compose.yaml. Put each override file after a line of three dashes.",
        "Up to 500,000 characters.",
        "Review the settings before running."
      ],
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}

Page guide

Check a Docker Compose file and its override files for broken service, network, volume, secret and config references, unset variables and host port clashes. You get the line of each problem and the merged result.

How to use Compose file validator
  1. Paste compose.yaml. Add override files after it, each starting with a line of three dashes.
  2. Optionally paste the .env variables Compose would use.
  3. Run the check and review each finding with its file and line.
  4. Download the JSON report, CSV, SARIF or the merged Compose file.

Useful next steps

What is checked

Happytails.ai checks the keys and references described in the Compose Specification (github.com/compose-spec/compose-spec, Apache-2.0, read on 16 October 2026). It looks for services, networks, volumes, secrets and configs that are used but not declared, depends_on cycles, services without an image or build, and common type mistakes such as a list where a mapping belongs.

Variables and override files

Values are interpolated like Compose does: ${NAME}, ${NAME:-default}, ${NAME-default}, ${NAME:?error}, ${NAME:+value} and $$ for a literal dollar sign. Unset variables become empty text and are reported. Override files are merged in order: mappings merge, command and entrypoint are replaced, ports, volumes, secrets and configs merge by their target, and other lists are appended. Line numbers count from the top of the box, so a finding in an override file shows the line where you see it.

Coverage and limits

The key lists are an authored subset written from the specification, not the full compose-spec JSON Schema, so an unknown key is a warning rather than a hard error. Port clashes are checked for fixed one-to-one mappings on overlapping addresses. Profiles, include files on disk, the !reset and !override tags and the image contents are not read.