ComposeVet BETA
Beta / experimental. Free while in beta. Feedback welcome. No guarantee of revenue or results.
Vet your docker-compose.yml before you deploy — the Docker socket mounted into a container, privileged mode, host networking, and baked-in secrets.
Get the free beta by email Get a launch audit Send feedback How it works
What it does
Runs a deterministic, local-first, read-only scan over your project's Docker Compose file (docker-compose.yml / compose.yaml) and returns a verdict (SHIP-SAFE / NEEDS REVIEW / RISKY), a 0-100 score, severity counts, evidence for every finding, and a Claude-ready fix prompt per issue, in JSON, Markdown, and HTML. It catches the orchestration, privilege, and supply-chain problems AI-built stacks ship with — the Docker socket (/var/run/docker.sock) bind-mounted into a container (that container is now root on the host), privileged: true, host-namespace sharing (network_mode: host, pid: host, ipc: host), a dangerous added capability (SYS_ADMIN / ALL / NET_ADMIN / SYS_PTRACE), a disabled seccomp/AppArmor sandbox, a bind-mount of a sensitive host path (/, /etc, /var/run, /root, $HOME), a credential pasted into an environment value, an image on the moving :latest tag, a database/admin port published to the host, an env_file (a committed-.env leak vector), no no-new-privileges hardening, a service with no restart policy, a build: . whole-context build, and the deprecated links: directive. Runs entirely on your machine with zero runtime dependencies: it never runs docker compose, never builds or starts a container, never networks. No cloud, no account, no telemetry.
Who it's for
Indie founders, AI-app builders, and small agencies who wire their stack together with Docker Compose to run or deploy it and want a fast, honest check that the compose file is least-privilege, isolated, reproducible, and free of baked-in secrets — before they docker compose up on a server.
What it does NOT do
Reports docker-compose hygiene signals, not guarantees. It is NOT a full container or cluster security audit, NOT a container/image vulnerability (CVE) scanner, NOT a Kubernetes hardening audit, NOT a Dockerfile linter (that is CrateVet), and NOT a substitute for a human security review. It reads only the compose file with a minimal, heuristic YAML-ish parser: it does not resolve extends, external override files, .env interpolation, or profiles, does not inspect the referenced images, and cannot know what a service actually does at runtime. It never runs docker compose, never builds or starts a container, never reaches the network, never deploys, never changes your project, never reads or transmits real secrets (secret-looking values are redacted to [REDACTED]), and never crosses an owner manual gate. No guaranteed results, approval, or revenue.
How to try it
Request free beta access via the feedback form, then run it locally on Node: scan a bundled demo (node src/scan.mjs --demo bad or --demo good), point it at your own project folder, or open the local-only dashboard at 127.0.0.1 — no account or payment required.
What ComposeVet checks
- The Docker socket (/var/run/docker.sock) bind-mounted into a container — effectively root on the host
- privileged: true — almost all container isolation turned off
- Host-namespace sharing: network_mode: host, and pid: host / ipc: host
- A dangerous added capability via cap_add (SYS_ADMIN, ALL, NET_ADMIN, SYS_PTRACE...)
- A disabled kernel sandbox (security_opt: seccomp:unconfined / apparmor:unconfined)
- A bind-mount of a sensitive host path (/, /etc, /var/run, /root, /home, $HOME...)
- A credential pasted into an environment value (redacted to [REDACTED]), and an env_file (committed-.env leak vector)
- An image on the moving :latest tag or untagged (not pinned to a tag/digest)
- A database/admin port (Postgres, MySQL, Redis, Mongo, Elastic, RabbitMQ...) published to the host
- No no-new-privileges hardening, a service with no restart policy, a build: . whole-context build, and the deprecated links: directive
How it works
- Point ComposeVet at your project folder (or a bundled demo). It reads docker-compose.yml / compose.yaml read-only with a minimal YAML-ish parser — your project never leaves your machine, and nothing is built, started, or run.
- A deterministic check engine runs 15 heuristic checks across Secrets, Privilege, Isolation, Exposure, Reproducibility, Hardening, Reliability, Build, and Compose, and scores the result into SHIP-SAFE / NEEDS REVIEW / RISKY with a 0-100 score and severity counts, with all evidence redacted.
- Every finding includes evidence, its area, and a copy-ready Claude fix prompt that tells a Claude Code session exactly what to fix — and what not to do (do not add or print secrets, do not run docker compose up, do not build/start/deploy anything, stop at any owner manual gate).
Known limitations
- Experimental beta — checks and scoring may change or miss things.
- docker-compose hygiene signals only — NOT a full container/cluster security audit, a CVE scan, a Kubernetes hardening audit, or a guarantee, and no guaranteed results.
- Heuristic, single-file scope: minimal YAML-ish parser, no extends / override-file / .env-interpolation / profile resolution, no image inspection; not a Dockerfile linter (that is CrateVet); not yet reviewed for production use.
Changelog
- 2026-06-25 — Beta candidate created: local-first docker-compose.yml hygiene audit engine (15 heuristic checks), CLI scan, JSON/MD/HTML reports, local-only dashboard, risky/clean demo fixtures, and 18 unit tests. Owner review required before promotion.
Try ComposeVet free while it's in beta
ComposeVet is free while in beta. Run it on your own docker-compose.yml, then tell us whether the SHIP-SAFE / NEEDS REVIEW / RISKY verdict matched reality and what it missed — no account, no payment, and no guarantee of results.
Built by Everstead Labs LLC. Live on Shopify: LaunchLock and CatalogCare.