Deployed is not the same as working.
Deploy Doubles is an open standard and a set of reference apps for answering one question: did this deploy actually work?
A platform can report a deploy as successful while the app behind it is broken — the new release never took over, the queue worker is still running last week's code, the cache silently fell back to the filesystem, the scheduler never started. Deploy Doubles makes those failures visible, from the inside and from the outside, as one exit code.
- The standard — a report an app serves about itself at
/.well-known/deploy-report, a manifest (double.json) of what it needs, and outside checks a verifier runs. Any app can implement the report. - The doubles — small reference apps, one per framework and service combination, that implement the standard exactly and exist to be deployed. In testing, a test double stands in for a real dependency; a deploy double stands in for your app while you test a deploy.
- The verifier —
npx deploydoubles verify, which reads the report, runs the outside checks and returns0,1,2or3.
-
Pick a double that matches what you want to test —
npx deploydoubles list --needs postgres,worker— and read itsdouble.jsonto see what it needs (services, processes, environment). -
Deploy it on any platform, the way you would deploy your own app.
-
Verify it:
npx deploydoubles verify https://your-deploy.example --commit <deployed sha> --json
Exit
0means every check passed on the release you deployed. Anything else comes with a hint for each failing check.
| Path | What it is |
|---|---|
spec/ |
The specification and its JSON Schemas (CC BY 4.0) |
verifier/ |
The deploydoubles CLI (npm) |
checks/php/ |
deploydoubles/checks-php — generates the report in PHP apps (Laravel, Symfony, plain PHP) |
checks/node/ |
@deploydoubles/checks — generates the report in Node apps (Next.js) |
doubles/ |
The reference apps |
catalog.json |
Every double's manifest and whether it is broken, generated by scripts/build-catalog — never edited by hand |
scripts/conformance.sh |
Starts a double with Docker Compose and verifies it |
scripts/conformance-failure.sh |
Starts a double, makes it fail on purpose (failure modes) and asserts the failure |
This is the monorepo. Each double, the spec and the check libraries are also mirrored into read-only repositories under the deploydoubles organisation, with the app at the repository root, so any platform can deploy a double from a plain repository URL. Changes are made here.
v0.1 is a draft. Breaking changes are allowed until 1.0. The project is useful before it is a standard: the doubles and the verifier exist to catch real deploy bugs first.
Deploy Doubles is authored by Jan Peter Wiersma. Most of the code and text is drafted by AI agents under his direction and review: agent-written commits carry a Co-Authored-By trailer, and he is accountable for every line that is merged. Contributors are asked to disclose AI assistance in their pull requests — see CONTRIBUTING.md.
A standard built for agents, built mostly by agents, with a human accountable for it.
Code is MIT. The specification text in spec/ is CC BY 4.0.
Started and stewarded by Strackt. See GOVERNANCE.md.