Use the CLI

Install globally:

npm i -g @exayard/cli

Log in

exayard login --api-key sk_live_...

Saves to ~/.exayard/config.json with mode 600. EXAYARD_API_KEY and EXAYARD_ORG_ID env vars always win over the config file.

List projects

exayard projects:list --org js79m7b3kfqd3vqzwx0kpcnryx7h2k4e
exayard projects:list --org js79m7b3kfqd3vqzwx0kpcnryx7h2k4e --json | jq '.items[].name'

The --org value is your Convex organization ID — get it from GET /v1/me (memberships[].orgId). It is not your organization's name.

Search help

exayard help-search "how do I run a takeoff"

Verify a webhook

echo "$RAW_BODY" | exayard webhooks:verify \
  --signature "$EXAYARD_SIGNATURE" \
  --secret whsec_...

Exits 1 on signature failure, with the stable failure code printed to stderr (invalid_signature, replay_window_exceeded, malformed_header).

Exit codes