Sign In

@vertaaux/cli

Package Overview
Dependencies
Maintainers
2
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vertaaux/cli

Run automated UX audits, accessibility checks, and performance analysis from the terminal or CI pipelines. Supports policy gating, SARIF output, and multi-page crawling. See https://github.com/PetriLahdelma/vertaa/tree/main/cli#readme for full docs.

Source
npmnpm
Version
0.8.0-alpha.2
Version published
Weekly downloads
22
-15.38%
Maintainers
2
Weekly downloads
 
Created
Source

VertaaUX CLI

Run UX and accessibility audits from the terminal or CI pipelines.

Install

npm install -g @vertaaux/cli

Or run with npx:

npx @vertaaux/cli --help

Quick Start

# Try it now — no account needed (3 free audits per day)
npx @vertaaux/cli audit https://example.com

# Sign in for full access
vertaa login
vertaa audit https://example.com --wait

# Check CLI health
vertaa doctor

Authentication

The audit command works without authentication for public URLs — you get 3 free audits per day in demo mode (IP-based quota). Sign in for full access, or upgrade to Pro for unlimited audits.

For all other commands (AI analysis, fix generation, etc.) and local URL audits, authentication is required. The CLI uses @vertaaux/sdk (^2.1.0) for API calls. The SDK handles auth automatically — you only need to configure credentials once. The bundled SDK supports AbortSignal cancellation, per-request timeoutMs overrides, and ES2022 Error.cause chains; the default request timeout is 120s (bumped from 30s in SDK 2.1.0). Three auth methods are supported:

Run vertaa login to store credentials in ~/.vertaaux/credentials.json. The SDK reads these on every subsequent command — no flags needed.

vertaa login

This stores credentials for SDK-based auth. Use vertaa whoami to verify.

2. Environment variable

Set VERTAAUX_API_KEY (or VERTAAUX_TOKEN) in your shell or CI environment. The SDK reads this automatically on every command.

export VERTAAUX_API_KEY=vtx_...
vertaa audit https://example.com --wait

3. --api-key flag (override for scripts and CI)

Pass --api-key <key> to any command to override SDK auth for that invocation. This is intended for CI pipelines where the key comes from a secret manager or is passed inline.

VERTAAUX_API_KEY=${{ secrets.VERTAAUX_API_KEY }} vertaa audit https://example.com

Auth priority: --api-key flag > VERTAAUX_API_KEY env > VERTAAUX_TOKEN env > stored credentials.

Verify authentication:

vertaa whoami

Commands

Core Commands

CommandDescription
audit <url>Run UX and accessibility audit
baseline [job-id]Create or update audit baseline
diffCompare current audit against baseline
policy init|validate|show|schemaManage policy-as-code

Analysis and Remediation

CommandDescription
explain [finding-id]AI-powered audit summary, or evidence for a specific finding
commentGenerate PR comment from audit results
fix <job-id>Generate a fix patch for an issue
fix-all <job-id>Generate fix patches for all issues
verifyVerify that a patch fixes an issue

AI Intelligence

CommandDescription
suggest <intent>Convert natural language to exact CLI command(s)
explainAI-powered audit summary (also: evidence for a single finding)
triagePrioritize findings into P0/P1/P2 buckets with effort estimates
fix-planStructured remediation plan with ordered steps
patch-reviewReview a diff for safety (SAFE/UNSAFE/NEEDS_REVIEW verdict)
release-notesGenerate developer + PM release notes from audit diff
compareBefore/after audit narrative with score deltas (also: URL comparison)
docGenerate a Team Playbook from recurring findings

All AI commands require authentication (vertaa login or VERTAAUX_API_KEY). The audit command works without auth in demo mode (3/day). AI commands accept input via stdin pipe, --file, or --job.

Utility

CommandDescription
doctorDiagnose CLI health (config, auth, network)
loginAuthenticate with VertaaUX
logoutClear stored credentials
whoamiShow current authentication status
initCreate .vertaaux.yml configuration
status <job-id>Check audit job status
upload <file>Upload audit results to cloud storage
download <id>Download audit results from cloud storage
welcomeRe-run the first-run welcome screen
telemetry enable|disable|statusManage opt-in CLI telemetry

Accessibility

CommandDescription
a11y <url>Multi-engine accessibility audit (axe-core + AccessLint + custom analyzers)

The a11y command uses a dedicated API endpoint (/v1/a11y/audit) and returns WCAG-mapped findings with structured fix suggestions and fixability ratings.

OptionDescription
--mode <basic|standard|deep>Audit depth (default: basic)
--min-impact <minor|moderate|serious|critical>Minimum impact level to report
--fail-on-score <0-100>Exit 1 if accessibility score below this value
--fail-on-findings <n>Exit 1 if critical+serious findings exceed n
--format <json|md>Output format (default: json)
--timeout <ms>Wait timeout (default: 60000)

Aliases

CommandAlias For
scan <url>UX scan (alias for audit)
compare <urlA> <urlB>Compare audits of two URLs (also supports --before/--after for LLM-powered comparison)

Output Formats

Formats are per-command, not global. Each command supports a different set of formats:

CommandFormatsDefault
audithuman, json, sarif, junit, htmlhuman
a11yjson, mdjson
commentjson, markdownmarkdown
explainhuman, jsonhuman
policy showjson, yamlyaml
diffhuman, jsonhuman
suggesthuman, jsonhuman
triagehuman, jsonhuman
fix-planhuman, jsonhuman
patch-reviewhuman, jsonhuman
release-noteshuman, json, markdownmarkdown
comparehuman, jsonhuman
docjson, markdownmarkdown

Usage:

vertaa audit https://example.com --format json
vertaa audit https://example.com --format sarif > results.sarif
vertaa comment --input results.json --format markdown

Machine-Readable Output

The --machine global flag enables strict machine-readable mode:

  • stdout: JSON data only (no banners, no diagnostics)
  • stderr: All diagnostic and progress output
  • JSON output is wrapped in an envelope:
{
  "meta": {
    "version": "0.6.0",
    "timestamp": "2026-02-08T12:00:00.000Z",
    "command": "audit",
    "args": ["https://example.com", "--format", "json"]
  },
  "data": {
    "scores": { "overall": 85 },
    "issues": []
  }
}

Piping

All diagnostic output goes to stderr, keeping stdout clean for piping:

vertaa audit https://example.com --format json | jq '.data.scores'
vertaa audit https://example.com --format json > results.json

Pipeline Examples

Chain commands with Unix pipes for powerful workflows:

# Audit and get an AI-powered summary
vertaa audit https://example.com --json | vertaa explain

# Audit and explain with full evidence per issue
vertaa audit https://example.com --json | vertaa explain --verbose

# Audit, triage, and get a fix plan
vertaa audit https://example.com --json | vertaa triage --verbose
vertaa audit https://example.com --json | vertaa fix-plan --json

# Review a PR diff for safety against audit findings
gh pr diff 123 | vertaa patch-review --job <audit-job-id>

# Generate release notes from a diff between two audits
vertaa diff --job-a abc --job-b def --json | vertaa release-notes

# Compare two audit snapshots with LLM narrative
vertaa compare --before baseline.json --after current.json

# Convert natural language to a CLI command
vertaa suggest "check contrast on my site"

# Generate a team playbook from audit findings
vertaa audit https://example.com --json | vertaa doc --team "Frontend"

Global Options

These options work with any command:

OptionDescription
-b, --base <url>API base URL override
-c, --config <path>Explicit config file path
-q, --quietSuppress banner and non-essential output
--no-bannerHide the V-mark banner
--machineStrict machine-readable output mode
--colorForce colored output
--no-colorDisable colored output
--dashboardForce live dashboard during audit --wait
--no-dashboardDisable live dashboard (use spinner instead)
--dry-runShow what would happen without executing
-y, --yesAuto-confirm all interactive prompts
--verboseExpand output with additional details
-v, --versionShow version number
-h, --helpShow help for command

Exit Codes

CodeMeaningWhen
0SuccessAudit passed, no issues above threshold
1Issues foundIssues at or above --fail-on severity
2ErrorInvalid input, validation errors, network failures
3Threshold breachScore below --threshold value

Exit code 2 is used for all validation errors, including:

  • Invalid flag values (--timeout abc)
  • Unknown enum values (--mode bogus)
  • Missing required arguments

Configuration

The CLI uses cosmiconfig for configuration file auto-detection.

Config File Search Order

  • .vertaaux.yml
  • .vertaaux.yaml
  • .vertaaux.json
  • vertaaux.config.js
  • vertaaux.config.mjs
  • vertaaux.config.cjs
  • package.json (vertaaux key)

Or specify explicitly:

vertaa audit https://example.com --config path/to/.vertaaux.yml

Configuration Precedence

flag > env var > config file > default

Key Config Fields

From VertaauxConfig interface in src/config/schema.ts:

FieldTypeDefaultDescription
modebasic|standard|deepbasicAudit depth
thresholdnumber0Minimum passing score (0-100)
failOnerror|warning|info-Fail on severity
output.formatauto|json|sarif|...autoOutput format
output.groupByseverity|category|routeseverityIssue grouping
baseline.pathstring.vertaaux/baseline.jsonBaseline file path
baseline.autoUpdatebooleanfalseAuto-update baseline
ci.templategithub|gitlab|...noneCI template
timeoutnumber60000Audit timeout (ms)
intervalnumber5000Poll interval (ms)

Example Configuration

# .vertaaux.yml
$schema: https://vertaaux.ai/schemas/config.json

mode: standard
threshold: 80
failOn: error

output:
  format: auto
  groupBy: severity

baseline:
  path: .vertaaux/baseline.json
  autoUpdate: false

ci:
  template: github

timeout: 60000
interval: 5000

Create a starter configuration:

vertaa init
vertaa init --ci github --yes

Security

Branch Name Validation

Branch names passed via --base-branch and --branch flags are validated against an allowlist regex:

/^[a-zA-Z0-9._\/-]+$/
  • Maximum length: 255 characters
  • Shell metacharacters (;, |, $, `, etc.) are rejected
  • Standard git branch names work as expected: main, feature/login, release/v1.2.3

Artifact Path Protection

Downloaded artifact filenames are validated to stay within the output directory:

  • Path traversal attempts (../) are rejected with an error
  • All artifact paths are resolved and checked against the target directory boundary
  • This prevents writing to arbitrary filesystem locations

Credential Filtering

JSON envelope output automatically filters CLI arguments containing API keys or Bearer tokens from the args metadata field.

Environment Variables

VariablePurpose
VERTAAUX_API_KEYAPI key (used by SDK; --api-key flag overrides this per-command)
VERTAAUX_TOKENAlternative auth token (checked before VERTAAUX_API_KEY)
VERTAAUX_API_BASEAPI base URL override
VERTAAUX_AUTH_BASEAuth endpoint override (default: https://vertaaux.ai)
VERTAAUX_LOG_LEVELLog verbosity: debug|info|warn|error (default: info)
VERTAAUX_LOG_JSONStructured JSON logs (default: false)
VERTAAUX_TELEMETRYOverride telemetry consent (true/false)
NO_COLORDisable colored output
FORCE_COLORForce colored output

CI/CD Integration

GitHub Actions

- name: Run audit
  env:
    VERTAAUX_API_KEY: ${{ secrets.VERTAAUX_API_KEY }}
  run: |
    npx @vertaaux/cli audit https://example.com \
      --format sarif \
      --fail-on error \
      --threshold 80

Exit Code Gating

# Fail CI if score below 80
vertaa audit https://example.com --threshold 80

# Fail CI if any error-severity issues found
vertaa audit https://example.com --fail-on error

# Both
vertaa audit https://example.com --threshold 80 --fail-on error

Error Messages

The CLI provides branded error messages with contextual help:

vertaa error: expected a number, got "abc"
  ──────────────────────────────────
  │ flag: --timeout
  │ value: abc
  │
  │ hint: Run vertaa <command> --help for all options
  ──────────────────────────────────

For enum values, typo suggestions are provided:

vertaa error: invalid value for --mode
  │ flag: --mode
  │ value: depp
  │
  │ hint: Did you mean "deep"?
  │ valid: basic, standard, deep

AI Agent Skill

Teach your AI coding agent (Claude Code, Cursor, Codex, Copilot, Gemini CLI, etc.) how to use the VertaaUX CLI:

npx skills add VertaaUX/agent-skills

Covers all CLI commands, CI/CD setup, SDK integration, and 10 use-case playbooks. Published on skills.sh.

Keywords

vertaaux

FAQs

Package last updated on 25 May 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts