0.
The check grew from 12 to 14 steps on 2026-09-30, when it started adding a
refund manager through maker checker (every refund needs a signed approval).
Run the same day: 14 of 14 passed.
1 and print the API log.
What it does
- Builds while online. It builds the API image and pulls
postgres:16. This is the only step that needs a network. - Makes your keys, if needed. It runs
setup, so./parmana-localhas your signing keys. - Starts an isolated copy. It starts a second copy of the deployment under the project name
parmana-offline-check, with its own empty database, on a Docker network created withinternal: true. No container on that network has a route to the internet or to Parmana. - Runs the checks below, from a container on the same network that holds your public keys and its own throwaway API keys, and no private key.
- Cleans up. It removes the copy’s containers and database. Your deployment started with
docker compose upis not touched, and your API keys are not changed.
./parmana-local/keys, so the record it produces is signed exactly as your deployment would sign it.
The 14 checks
No agent action is authorized without a signed human approval (Human approval), so the
check adds a refund manager through maker checker, the same way an operator would, with a key it makes inside the
isolated network. The image itself trusts no approver.
The stand in for your downstream system
The downstream system in the check isdocker/local/offline-check/paytm-agent-stand-in.mjs. It takes the place of parmana-paytm-agent. It:
- answers
POST /connector/paytm-refundthe way the real agent does; - refuses any request whose Execution Gateway signature does not verify with the gateway’s public key;
- never calls Paytm or anything else;
- serves HTTPS with a certificate made for the run, because the server refuses a plain HTTP connector URL in production. The server trusts that one certificate for the run only.
Verify the record again, anywhere
The check leaves three files inparmana-local/offline-check/: trust-record.json, default.public.pem and gateway.public.pem. Anyone can check the record on any machine with a clone of the repository, npm install and Node.js 24 or newer:
0:
What it does not cover
- Building offline. The image is built while online. The check proves running without the internet, not installing without it.
- Your real downstream system. It uses the stand in. Your own connector is tested by your own requests.
- Other connectors. Only the Paytm connector path is exercised.
Where it has passed
On Docker Desktop 29.8.0 on Windows 11, on 2026-09-25, and on Linux in CI on every change to the deployment files (.github/workflows/docker-image.yml, job self-hosted), first on the commit that added it.