Unified security scanner orchestrator for local repos
Project description
VibeGuard CLI
Unified security scanner orchestrator for local repositories.
Run multiple security scanners with one command, get normalized findings, a security score, and AI-powered fix suggestions.
Features
- One Command: Run multiple security scanners with
vibeguard scan . - Normalized Output: Unified findings schema across all scanners
- Score & Grade: Get a security score (0-100) and letter grade
- Multiple Output Formats: Terminal, JSON, SARIF, HTML reports
- Badge Generator: Embed security badges in your README
- CI-Friendly: Exit codes for automation and threshold checks
Installation
From PyPI (Recommended)
pip install vibeguard-cli
From Source
git clone https://github.com/vibeguard/vibeguard-cli.git
cd vibeguard-cli
pip install -e ".[dev]"
Verify Installation
vibeguard --version
vibeguard doctor
Quick Start
# Check your environment
vibeguard doctor
# Initialize in your project
vibeguard init
# Run a security scan
vibeguard scan .
# Generate SARIF for GitHub Code Scanning
vibeguard scan . --output sarif > results.sarif
# Generate HTML report
vibeguard scan . --output html > report.html
# Generate a badge
vibeguard scan . --badge badge.svg
Commands
| Command | Description | Tier |
|---|---|---|
vibeguard doctor |
Check environment and scanner availability | Free |
vibeguard init |
Initialize VibeGuard in a directory | Free |
vibeguard scan [path] |
Run security scanners on a codebase | Free |
vibeguard report [path] |
Generate reports from cached scan | Free |
vibeguard fix [id] |
Generate copy-paste prompt for LLM | Free |
vibeguard baseline |
Manage baselines for regression detection | Free |
vibeguard patch [id] |
Generate unified diff via LLM (BYOK) | Pro |
vibeguard apply <patch> |
Apply patch with git safety checks | Pro |
vibeguard live <url> |
DAST scan on running application | Experimental |
Output Formats
VibeGuard supports multiple output formats:
| Format | Flag | Description |
|---|---|---|
| terminal | --output terminal |
Rich terminal output (default) |
| json | --output json |
JSON scan results |
| sarif | --output sarif |
SARIF 2.1.0 for GitHub Code Scanning |
| html | --output html |
Standalone HTML report |
Generate Badge
vibeguard scan . --badge badge.svg
Embed in README:

Scanner Packs
Core Pack (Default)
- Semgrep (SAST multi-language)
- Gitleaks (secrets detection)
- Trivy (dependencies/container/IaC)
- Bandit (Python SAST)
- TruffleHog v3 (secrets detection)
Ecosystem Pack (Auto-Detected)
- npm-audit (JavaScript/Node.js)
- pip-audit (Python)
- cargo-audit (Rust)
Differentiation Pack
- Checkov (Infrastructure as Code)
- Dockle (Container best practices)
- Nuclei (DAST templates)
Scoring
- Base: 100 points
- Deductions: Critical (-20), High (-10), Medium (-5), Low (-2)
- Category Cap: Max 50 points per category
- Grades: A+ (≥95), A (≥85), B (≥70), C (≥50), D (≥30), F (<30)
Exit Codes
For CI/CD integration:
| Code | Meaning |
|---|---|
| 0 | Success, no findings |
| 1 | Success, findings detected |
| 2 | Scan error (partial scan) |
| 3 | No cached scan (report command) |
| 4 | Configuration error |
| 5 | Invalid path |
| 10 | Score below threshold |
CI Integration Example
# GitHub Actions
- name: Run VibeGuard
run: |
pip install vibeguard-cli
vibeguard scan . --output sarif > results.sarif
continue-on-error: true
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: results.sarif
Threshold Enforcement
# Exit with code 10 if score is below 80
vibeguard scan . --threshold 80
Pro Features (BYOK)
VibeGuard Pro features use your own LLM API keys (Bring Your Own Key):
# Configure your API key (encrypted locally)
vibeguard keys set openai sk-...
# Generate a patch for a finding
vibeguard patch <finding-id>
# Apply the patch safely
vibeguard apply .vibeguard/patches/<finding-id>.patch
Supported providers: OpenAI, Anthropic, Google, Azure, Mistral, Groq
Contributing
Contributions are welcome! See CONTRIBUTING_SCANNERS.md for adding new scanners.
License
MIT - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
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 vibeguard_cli-1.0.4.tar.gz.
File metadata
- Download URL: vibeguard_cli-1.0.4.tar.gz
- Upload date:
- Size: 236.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5f8593fab0d966cdfb7ede14c0c96f430b59591ad87c69a590947b197b123f8
|
|
| MD5 |
0f5d9dcbe87c685ae919727a7ba1e4e8
|
|
| BLAKE2b-256 |
6b82ab669f51f6aafdb77e6bf7b4e9a1b8bf75aff2b86ce11f3ee99b678cb42a
|
Provenance
The following attestation bundles were made for vibeguard_cli-1.0.4.tar.gz:
Publisher:
publish.yml on faheem91/vibeguard-cli-2
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibeguard_cli-1.0.4.tar.gz -
Subject digest:
f5f8593fab0d966cdfb7ede14c0c96f430b59591ad87c69a590947b197b123f8 - Sigstore transparency entry: 920110869
- Sigstore integration time:
-
Permalink:
faheem91/vibeguard-cli-2@c28606e206d4d21eebd6d911bde74f67782a74de -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/faheem91
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c28606e206d4d21eebd6d911bde74f67782a74de -
Trigger Event:
push
-
Statement type:
File details
Details for the file vibeguard_cli-1.0.4-py3-none-any.whl.
File metadata
- Download URL: vibeguard_cli-1.0.4-py3-none-any.whl
- Upload date:
- Size: 161.6 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 |
70be018231344199d09d4e6cb59c090e2f8572f62703d5ef70c1148821a85d0c
|
|
| MD5 |
383297d39dad137ea881108791a41147
|
|
| BLAKE2b-256 |
3cbe67b31e4c8e72a434601f48d91e0475048211082bca5bd09f3e04816a3969
|
Provenance
The following attestation bundles were made for vibeguard_cli-1.0.4-py3-none-any.whl:
Publisher:
publish.yml on faheem91/vibeguard-cli-2
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibeguard_cli-1.0.4-py3-none-any.whl -
Subject digest:
70be018231344199d09d4e6cb59c090e2f8572f62703d5ef70c1148821a85d0c - Sigstore transparency entry: 920110872
- Sigstore integration time:
-
Permalink:
faheem91/vibeguard-cli-2@c28606e206d4d21eebd6d911bde74f67782a74de -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/faheem91
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c28606e206d4d21eebd6d911bde74f67782a74de -
Trigger Event:
push
-
Statement type: