TypeScript + CLI
The CLI keeps lifecycle order explicit and derives stable keys for one logical publish attempt. It stops when the release reaches human review.
npm install @zyntrialabs/vintraa-agent-sdk# 1. Sign in with a short-lived developer grant.
vintraa auth login --environment sandbox
# 2. Create, inspect, and validate a manifest.
vintraa agent init --manifest ./vintraa-agent.yaml
vintraa agent validate --manifest ./vintraa-agent.yaml
# 3. Register the first DRAFT. Save the returned app and release IDs.
vintraa agent push \
--manifest ./vintraa-agent.yaml \
--publisher <publisher-uuid>
# 4. Reserve an HTTPS-file challenge for every declared origin.
vintraa publisher verify-domain https://agent.example.com \
--method https_file \
--publisher <publisher-uuid> \
--app <app-id> \
--proof-file ./.vintraa/ownership-proof.txt
# Publish that file at the returned URL, then ask Vintraa to verify it.
vintraa publisher verify-domain \
--challenge <challenge-uuid> \
--publisher <publisher-uuid> \
--app <app-id>
# 5. Validate, privately test, run conformance, confirm, and submit once.
vintraa agent publish \
--manifest ./vintraa-agent.yaml \
--publisher <publisher-uuid> \
--app <app-id> \
--wait submission
# 6. Read publisher-safe human-review status.
vintraa agent review list --release <release-uuid>- Use the OS-backed human refresh grant locally. For CI, inject a scoped VINTRAA_SERVICE_TOKEN from the runner's secret store.
- The publish command synchronises the DRAFT, validates it, creates a digest-bound private installation, runs one declared synthetic action, waits for conformance, asks for confirmation, and submits once.
- It never approves, certifies, or activates the release; --wait submission stops at IN_REVIEW.
- A timeout is ambiguous: rerun the same logical attempt so its key is reused. Start a new --attempt only after a definitive terminal failure and a deliberate repair.