Ways to run
The command line
Install the vraelis CLI, check a claim from a terminal, and read the decision from its exit code.
- Outcome
- You can check a claim from a terminal or a script and act on its exit code.
- Does not do
- It does not approve plans; a person approves from the link it prints.
The vraelis CLI calls the same API. verify prints the plan and the approval link, opens the link when a person is at the terminal, waits for the approval, runs the check and exits on the decision. In CI the exit code is what an if-statement reads.
Install and sign in
# Install. macOS and Linux: curl -fsS https://vraelis.com/install | sh # Windows (PowerShell): irm https://vraelis.com/install.ps1 | iex # Sign in once. Paste a key with "Launch runs" access, created at app.vraelis.com/developers. vraelis login
In CI and scripts, set VRAELIS_API_KEY instead of signing in. The environment takes precedence over a stored key, so a pipeline never uses a key someone left on the machine. Create an API key
Check a claim
# Check a claim. Prints the plan and the approval link, opens the link when a person # is at the terminal, waits for the approval, runs, and exits on the decision. vraelis verify \ --url https://staging.example.com \ --claim "A customer can upgrade to Pro and keep access after signing in again" \ --wait # After a fix is deployed to the same address: the same approved plan, with no # new approval within 24 hours of the approval, up to 10 times. vraelis recheck vrf_9c1e0f2a41 --wait
Exit codes
| Exit code | What it means |
|---|---|
0 | Verified. The claim held on the live app, with evidence. |
1 | Failed. The claim did not hold; a repair prompt is attached. |
2 | Blocked, or the tool could not run at all. |
The CLI collapses “blocked” and “could not run” into 2, because a gate should treat “I could not check” the same as “no verdict.” A hand-rolled gate that polls the API can split those out, exiting 3 when no decision is reached in the window.
Options
| Option | What it does |
|---|---|
--wait | Wait for the verdict. Without it the command prints the id and exits 0 immediately, which means started, not verified. |
--json | Emit one JSON object instead of human output. This is the mode for CI and for agents. |
--repair-prompt | On failure, print only the repair prompt, ready to pipe into a coding agent. |
--idempotency-key | Reuse a key so a retry returns the original verification instead of starting, and paying for, a second one. |
--timeout | How long --wait waits (for approval and for the decision) before giving up. Default 900 seconds. |
--no-open | Print the approval link without opening a browser. |
Other commands
| Command | What it does |
|---|---|
vraelis result VRF_ID | Show a verification's decision. |
vraelis init | Plug Vraelis into Claude Code, Codex, Gemini CLI, Copilot, Cursor or Trae, and tell them to verify before saying done. |
vraelis mcp | Run the MCP server the assistants talk to. They start it for you. |
vraelis status | Show which key is in use, where it came from, and whether it works. |
vraelis logout | Forget the stored key. |
With no person at the terminal
A CI job has no person at the terminal, and a key cannot approve a plan, so the first check of a claim waits on the link until someone approves it or --timeout runs out. Re-checks of that approved plan need no new approval within 24 hours of the approval, up to 10 times, on the same address. A new preview URL is a different address, so its first check waits for a person again.