Skip to main content

Command-line interface for Validibot - your automated data validation assistant.

Project description

Validibot CLI

CI PyPI version Python versions License: MIT

A command-line interface for Validibot - your automated data validation assistant.

Validibot CLI provides command-line access to self-hosted Validibot servers for automated data validation workflows.

Features

  • Self-hosted support - connect to your own Validibot server
  • Run validations from the command line or CI/CD pipelines
  • Workflow support - reference workflows by ID or human-readable slug
  • Organization filtering - disambiguate workflows across orgs and projects
  • Secure credential storage - uses system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service)
  • CI/CD friendly - meaningful exit codes and JSON output for scripting

Installation

# Using pip
pip install validibot-cli

# Using uv (recommended)
uv tool install validibot-cli

# Using pipx
pipx install validibot-cli

Requirements

  • Python 3.10 or later

Quick Start

1. Configure Your Server

First, configure the CLI to connect to your Validibot server:

validibot config set-server https://validibot.your-company.com

2. Authenticate

Get your API key from your Validibot server's web interface, then:

validibot login
# Enter your API key when prompted (input is hidden)

Your API key is stored securely in your system keyring.

3. List Available Workflows

validibot workflows list

This displays a table of workflows you have access to, including their IDs, names, and status.

4. Run a Validation

# By workflow ID
validibot validate model.idf --workflow 123

# By workflow slug
validibot validate model.idf --workflow energyplus-schema-check

The CLI uploads your file, runs the validation workflow, and displays results when complete.

Commands

Server Configuration

validibot config set-server <url>   # Set server URL (required before login)
validibot config get-server         # Show current server URL
validibot config clear-server       # Clear stored server URL

Authentication

validibot login              # Authenticate with your API key
validibot logout             # Remove stored credentials
validibot whoami             # Show current user info (verifies API key)
validibot auth status        # Check if authenticated (no API call)

Login flow:

  1. Prompts for your API key (input is hidden for security)
  2. Validates the key against the Validibot API
  3. Stores the key securely in your system keyring
  4. Fetches your organizations and sets a default:
    • If you belong to one org, it becomes your default automatically
    • If you belong to multiple orgs, you'll be prompted to select one (or skip)
  5. Displays your account info to confirm success

Credential storage:

The CLI uses your system's secure credential storage:

  • macOS: Keychain
  • Windows: Credential Manager
  • Linux: Secret Service (GNOME Keyring, KWallet, etc.)

If the system keyring is unavailable, credentials fall back to ~/.config/validibot/credentials.json with restrictive file permissions (owner read/write only).

Workflows

validibot workflows list          # List all available workflows
validibot workflows list --json   # Output as JSON
validibot workflows show <workflow-id-or-slug>  # Show details of a specific workflow

Runs

validibot runs show <run-id>        # Show run status and results
validibot runs show <run-id> --json # Output as JSON

Validation

Basic Usage

# Run a validation (waits for completion by default)
validibot validate model.idf -w <workflow-id-or-slug>

# Run without waiting (returns immediately with run ID)
validibot validate model.idf -w <workflow-id-or-slug> --no-wait

# Check status of a validation run
validibot runs show <run-id>

Workflow Selection

Workflows can be specified by ID (numeric) or slug (human-readable string).

# By numeric ID
validibot validate model.idf -w 123

# By slug
validibot validate model.idf -w energyplus-schema-check

When using slugs, if multiple workflows share the same slug across different organizations or versions, you'll need to disambiguate:

# Specify organization
validibot validate model.idf -w my-workflow --org acme-corp

# Specify organization and project
validibot validate model.idf -w my-workflow --org acme-corp --project building-a

# Specify a particular version
validibot validate model.idf -w my-workflow --org acme-corp --version 2

If the workflow slug is ambiguous, the CLI will display the matching workflows and prompt you to use filtering options.

Output Options

# Verbose output (shows individual step results)
validibot validate model.idf -w <workflow-id-or-slug> --verbose

# JSON output (for scripting/CI)
validibot validate model.idf -w <workflow-id-or-slug> --json

# Custom timeout (default: 600 seconds)
validibot validate model.idf -w <workflow-id-or-slug> --timeout 300

# Name your validation run
validibot validate model.idf -w <workflow-id-or-slug> --name "nightly-build-check"

Full Option Reference

Option Short Description
--workflow -w Workflow ID or slug (required)
--org -o Organization slug (uses default if set)
--project -p Project slug for filtering
--version Workflow version for disambiguation
--name -n Name for this validation run
--wait/--no-wait Wait for completion (default: wait)
--timeout -t Max wait time in seconds (default: 600)
--verbose -v Show detailed step-by-step output
--json -j Output results as JSON

Configuration

Server URL Resolution

The CLI determines which server to connect to in this order:

  1. VALIDIBOT_API_URL environment variable
  2. Stored server URL from validibot config set-server
  3. Error if neither is set

Environment Variables

Variable Description Default
VALIDIBOT_API_URL Server URL (required if not set via CLI) -
VALIDIBOT_TOKEN API key (alternative to validibot login) -
VALIDIBOT_ORG Default organization slug -
VALIDIBOT_TIMEOUT Request timeout in seconds 300
VALIDIBOT_POLL_INTERVAL Status polling interval in seconds 5
VALIDIBOT_NO_KEYRING Disable keyring, use file storage false
VALIDIBOT_ALLOW_INSECURE_API_URL Allow non-HTTPS API base URL (dangerous) false

Using Environment Variables for CI/CD

For CI/CD pipelines, set the server URL and token via environment variables:

export VALIDIBOT_API_URL="https://validibot.your-company.com"
export VALIDIBOT_TOKEN="your-api-key"
export VALIDIBOT_ORG="my-org"
validibot validate model.idf -w my-workflow

Organization Resolution

When --org is not explicitly provided, the CLI resolves the organization in this order:

  1. --org flag (if provided)
  2. VALIDIBOT_ORG environment variable
  3. Default org saved during validibot login
  4. Error with a helpful message

Exit Codes

The validate command returns meaningful exit codes for CI/CD integration:

Code Meaning
0 Validation passed
1 Validation failed (FAIL) or CLI/API error
2 Validation error (ERROR/TIMED_OUT/CANCELED/UNKNOWN)
3 Timed out waiting for completion (run still in progress)
130 Interrupted (Ctrl+C)

CI/CD Integration

GitHub Actions

name: Validate Building Model

on: [push, pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"

      - name: Install Validibot CLI
        run: pip install validibot-cli

      - name: Validate model
        env:
          VALIDIBOT_API_URL: ${{ vars.VALIDIBOT_API_URL }}
          VALIDIBOT_TOKEN: ${{ secrets.VALIDIBOT_TOKEN }}
        run: validibot validate model.idf -w ${{ vars.WORKFLOW_ID }}

GitLab CI

validate:
  image: python:3.12
  script:
    - pip install validibot-cli
    - validibot validate model.idf -w $WORKFLOW_ID
  variables:
    VALIDIBOT_API_URL: $VALIDIBOT_API_URL
    VALIDIBOT_TOKEN: $VALIDIBOT_TOKEN

Azure Pipelines

- task: UsePythonVersion@0
  inputs:
    versionSpec: "3.12"

- script: |
    pip install validibot-cli
    validibot validate model.idf -w $(WORKFLOW_ID)
  env:
    VALIDIBOT_API_URL: $(VALIDIBOT_API_URL)
    VALIDIBOT_TOKEN: $(VALIDIBOT_TOKEN)

Development

# Clone the repository
git clone https://github.com/validibot/validibot-cli.git
cd validibot-cli

# Install with dev dependencies
uv sync --extra dev

# Run the CLI locally
uv run validibot --help

# Run tests
uv run pytest

# Run tests with coverage
uv run pytest --cov=validibot_cli

# Lint and format
uv run ruff check .
uv run ruff format .

# Type checking
uv run mypy src/

License

This CLI is open source under the MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

validibot_cli-0.2.0.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

validibot_cli-0.2.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file validibot_cli-0.2.0.tar.gz.

File metadata

  • Download URL: validibot_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for validibot_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3fe6b27b59160ad7b8ef31bbb5f05049f153c297c95aa2ff8110584ed00646f7
MD5 d68404e59a3aba02ba24251ffbe32fdd
BLAKE2b-256 937919bf603938e460e6dad0ae52e94ba94a0dd8090de0674a4ca287a43725a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for validibot_cli-0.2.0.tar.gz:

Publisher: publish.yml on danielmcquillen/validibot-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file validibot_cli-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: validibot_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for validibot_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2bd88fb775e3727e587201676b0320f6758578b25aac50e9b4afe0bc669ef021
MD5 e449fda1038c1bc84797b7b289f54b7f
BLAKE2b-256 678ca901c8268c931c35c1604296811d5a5229c1b26770a0eb28ce1294f9da9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for validibot_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on danielmcquillen/validibot-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page