Command-line interface for Validibot - your automated data validation assistant.
Project description
Validibot CLI
Command-line interface for the Validibot data validation platform
Installation • Quick Start • Commands • CI/CD Integration • Documentation
[!NOTE] This CLI is part of the Validibot open-source data validation platform. It connects to self-hosted Validibot servers to run validations from the command line or CI/CD pipelines.
Part of the Validibot Project
| Repository | Description |
|---|---|
| validibot | Core platform — web UI, REST API, workflow engine |
| validibot-cli (this repo) | Command-line interface |
| validibot-validator-backends | Advanced validator backend containers (EnergyPlus™, FMI) |
| validibot-shared | Shared Pydantic models for data interchange |
What is Validibot CLI?
Validibot CLI provides command-line access to your Validibot server for automated data validation. Use it to:
- Run validations from terminals, scripts, or CI/CD pipelines
- Integrate validation into your development workflow
- Automate quality checks for building energy models, simulations, and structured data
The CLI communicates with your Validibot server's REST API, so you need a running Validibot instance to use it.
Features
- Self-hosted support — connect to your own Validibot server
- 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
Disclaimer
[!NOTE] This CLI connects to your Validibot server and transmits files for validation. You are solely responsible for the security of your server, the confidentiality of your data, and any costs associated with your infrastructure. API keys should be kept secret — see Credential storage for details. See the LICENSE for full warranty disclaimer.
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
- A running Validibot server
Quick Start
1. Configure Your Server
Point the CLI at 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 (Settings → API Key), 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:
- Prompts for your API key (input is hidden for security)
- Validates the key against the Validibot API
- Stores the key securely in your system keyring
- 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
- Displays your account info to confirm success
Credential storage:
| Platform | Storage |
|---|---|
| macOS | Keychain |
| Windows | Credential Manager |
| Linux | Secret Service (GNOME Keyring, KWallet) |
If the system keyring is unavailable, credentials fall back to ~/.config/validibot/credentials.json with restrictive file permissions.
Workflows
validibot workflows list # List all available workflows
validibot workflows list --json # Output as JSON
validibot workflows show <workflow-id-or-slug> # Show workflow details
Validation Runs
validibot runs show <run-id> # Show run status and results
validibot runs show <run-id> --json # Output as JSON
Running Validations
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, 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
Output Options
# Verbose output (shows individual step results)
validibot validate model.idf -w <workflow> --verbose
# JSON output (for scripting/CI)
validibot validate model.idf -w <workflow> --json
# Custom timeout (default: 600 seconds)
validibot validate model.idf -w <workflow> --timeout 300
# Name your validation run
validibot validate model.idf -w <workflow> --name "nightly-build-check"
# Attach submission metadata for rules to read (repeatable)
# Readable in workflow rules as submission.metadata.<key>
validibot validate model.idf -w <workflow> --meta deliverable=handover --meta phase=dd
# Add a short description, readable in rules as submission.short_description
validibot validate model.idf -w <workflow> --short-description "Stage 4 handover model"
Option Reference
| Option | Short | Description |
|---|---|---|
--workflow |
-w |
Workflow ID or slug (required) |
--org |
-o |
Organization slug |
--project |
-p |
Project slug for filtering |
--version |
Workflow version | |
--name |
-n |
Name for this validation run |
--meta |
Submission metadata as key=value (repeatable); readable in rules as submission.metadata.<key> |
|
--short-description |
Short description for this run; readable in rules as submission.short_description |
|
--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:
VALIDIBOT_API_URLenvironment variable- Stored server URL from
validibot config set-server - Error if neither is set
Environment Variables
| Variable | Description | Default |
|---|---|---|
VALIDIBOT_API_URL |
Server URL | — |
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 URL (dangerous) | false |
Organization Resolution
When --org is not explicitly provided, the CLI resolves the organization in this order:
--orgflag (if provided)VALIDIBOT_ORGenvironment variable- Default org saved during
validibot login - 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) |
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/danielmcquillen/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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file validibot_cli-0.3.1.tar.gz.
File metadata
- Download URL: validibot_cli-0.3.1.tar.gz
- Upload date:
- Size: 105.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c2b4cf0103f4bd26356f4eb4b90fc486cd441327a277ebf612b5d412f422ca9
|
|
| MD5 |
f31e5b4b156d5828bc5fcdf3e3324ad0
|
|
| BLAKE2b-256 |
66fc0dc2ba7f8b142ab45c9e4415e29b442ba339cf239739e41b88830d63fed5
|
Provenance
The following attestation bundles were made for validibot_cli-0.3.1.tar.gz:
Publisher:
publish.yml on danielmcquillen/validibot-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
validibot_cli-0.3.1.tar.gz -
Subject digest:
0c2b4cf0103f4bd26356f4eb4b90fc486cd441327a277ebf612b5d412f422ca9 - Sigstore transparency entry: 2136272033
- Sigstore integration time:
-
Permalink:
danielmcquillen/validibot-cli@9ce4d14b5955d0392b22caf631f3b4b7890e631c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/danielmcquillen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9ce4d14b5955d0392b22caf631f3b4b7890e631c -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file validibot_cli-0.3.1-py3-none-any.whl.
File metadata
- Download URL: validibot_cli-0.3.1-py3-none-any.whl
- Upload date:
- Size: 35.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2d48eadf95a36c603646c08f2b6fd92456e946bd9bc71d02a28f3bf2a9a9fec
|
|
| MD5 |
ca221e4de5437802ca2204c010c63142
|
|
| BLAKE2b-256 |
76032db1dfdb962e062159f51b565b0f25cb384f8ace4351aa04208401b9c63f
|
Provenance
The following attestation bundles were made for validibot_cli-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on danielmcquillen/validibot-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
validibot_cli-0.3.1-py3-none-any.whl -
Subject digest:
c2d48eadf95a36c603646c08f2b6fd92456e946bd9bc71d02a28f3bf2a9a9fec - Sigstore transparency entry: 2136272067
- Sigstore integration time:
-
Permalink:
danielmcquillen/validibot-cli@9ce4d14b5955d0392b22caf631f3b4b7890e631c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/danielmcquillen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9ce4d14b5955d0392b22caf631f3b4b7890e631c -
Trigger Event:
workflow_dispatch
-
Statement type: