Skip to content

huntridge-labs/argus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

115 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Argus - Perception is Protection

Learn more at argus.huntridgelabs.com


GitHub Release Unit Tests Integration Tests codecov

License: AGPL v3 AICaC


Unified security scanning for GitHub Actions — SAST, containers, IaC, secrets, and DAST in a single workflow.


Table of Contents

Quick Start

Create .github/workflows/security.yml:

name: Security Scan
on: [pull_request, push]

permissions:
  contents: read
  security-events: write
  pull-requests: write

jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - uses: huntridge-labs/argus/.github/actions/[email protected]
        with:
          enable_code_security: true
          fail_on_severity: high
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - uses: huntridge-labs/argus/.github/actions/[email protected]
        with:
          enable_code_security: true
          fail_on_severity: high
Legacy: Reusable Workflow (github.com only)
name: Security Scan
on: [pull_request, push]

jobs:
  security:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      scanners: all
      enable_code_security: true
      post_pr_comment: true
      fail_on_severity: high
    secrets: inherit

Supported Scanners

Category Scanner Description
SAST CodeQL GitHub semantic code analysis
Gitleaks Secret detection in git history
Bandit Python security linter
OpenGrep Fast multi-language static analysis
Container Trivy Container Comprehensive vulnerability scanner
Grype Fast, accurate CVE detection
Syft Software Bill of Materials (SBOM)
Infrastructure Trivy IaC Infrastructure as Code scanner
Checkov Policy as Code for cloud configs
Malware ClamAV Open-source antivirus engine
DAST ZAP Dynamic testing of running web/API endpoints (opt-in)

For detailed scanner configuration, see Scanner Reference.

Features

GitHub Enterprise Server (GHES)

GHES users can use our composite actions directly from github.com - no mirroring required.

Architecture: This project uses an actions-first architecture where all scanner logic lives in composite actions. The reusable workflows are thin wrappers for backwards compatibility on github.com.

GHES Quick Start
name: Security Scan (GHES)

on: [pull_request, push]

permissions:
  contents: read
  security-events: write
  pull-requests: write

jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      # Use composite actions directly from github.com
      - uses: huntridge-labs/argus/.github/actions/[email protected]
        with:
          enable_code_security: true
          fail_on_severity: high
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}

      - uses: huntridge-labs/argus/.github/actions/[email protected]
        with:
          enable_code_security: true
          fail_on_severity: high

See examples/github-enterprise/ for complete GHES workflow templates:

Documentation

Full documentation: huntridge-labs.github.io/argus

User Guides

Developer Docs

Usage Examples

All Scanners with GitHub Security
name: Complete Security Scan

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '0 2 * * 1'  # Weekly Monday at 2 AM

permissions:
  contents: read
  security-events: write
  pull-requests: write

jobs:
  security:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      scanners: all
      enable_code_security: true
      post_pr_comment: true
      fail_on_severity: high
    secrets: inherit
SAST Scanners Only
name: SAST Security Scan

on: [pull_request]

jobs:
  sast:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      scanners: codeql,bandit,opengrep,gitleaks
      codeql_languages: 'python,javascript'
      enable_code_security: true
      fail_on_severity: medium
    secrets:
      GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}
Container Scanning
name: Container Security

on:
  push:
    tags: ['v*']

jobs:
  scan-image:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      scanners: trivy-container,grype,sbom
      image_ref: 'ghcr.io/myorg/myapp:${{ github.ref_name }}'
      enable_code_security: true
      fail_on_severity: critical
Config-Driven Multiple Containers
name: Multi-Container Scan

on:
  push:
    paths: ['container-config.yml']

jobs:
  scan:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      config_file: container-config.yml
      enable_code_security: true
      fail_on_severity: high
    secrets: inherit

container-config.yml:

containers:
  - name: frontend
    registry:
      host: ghcr.io
      username: ${GITHUB_TRIGGERING_ACTOR}
      auth_secret: GITHUB_TOKEN
    image:
      repository: myorg
      name: frontend
      tag: latest
    scanners:
      - trivy-container
      - grype

  - name: backend
    image: myorg/backend:latest
    scanners:
      - trivy-container
      - sbom

See Container Scanning Guide for complete documentation.

Infrastructure as Code
name: Infrastructure Security

on:
  pull_request:
    paths:
      - 'terraform/**'
      - 'infrastructure/**'

jobs:
  iac:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      scanners: trivy-iac,checkov
      iac_path: 'terraform/'
      enable_code_security: true
      fail_on_severity: high
Branch-Specific Thresholds
name: Security with Branch Rules

on:
  pull_request:
    branches: ['**']

jobs:
  security:
    uses: huntridge-labs/argus/.github/workflows/[email protected]
    with:
      scanners: all
      enable_code_security: true
      post_pr_comment: true
      fail_on_severity: ${{ github.base_ref == 'main' && 'high' || 'critical' }}
    secrets: inherit

Configuration

Scanner Selection

  • All scanners: scanners: all
  • By category: scanners: sast, scanners: container, scanners: infrastructure
  • Specific scanners: scanners: codeql,trivy-container,gitleaks
  • Multiple categories: scanners: sast,container

Common Inputs

Input Description Default
scanners Scanners to run (comma-separated or category) Required
enable_code_security Upload SARIF to GitHub Security tab false
post_pr_comment Post findings as PR comments true
fail_on_severity Fail workflow on severity threshold none

Severity levels: none, low, medium, high, critical

See Failure Control Guide for detailed threshold configuration.

Permissions Required

permissions:
  contents: read           # Read repository content
  security-events: write   # Upload to GitHub Security tab
  pull-requests: write     # Post PR comments
  actions: read           # Read Actions artifacts

Secrets

Most secrets are optional and inherited via secrets: inherit. Scanner-specific secrets:

Secret Required For Description
GITLEAKS_LICENSE Gitleaks (organizations) License from gitleaks.io
GITHUB_TOKEN PR comments, Security tab Automatically provided
Registry secrets Private containers Token for authentication

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Development Setup

Quick Start with Dev Container (Recommended):

Open in Dev Containers

  1. Install VS Code + Dev Containers extension
  2. Open repository → "Reopen in Container"
  3. All dependencies ready! Run npm test
# Install dependencies
npm install
pip install -r .devcontainer/requirements.txt

# Run tests
npm test

# See tests/CONTRIBUTING.md for detailed testing guide

License

AGPL v3 License - see LICENSE.md for details.

Support

About

Argus brings “a hundred eyes” to your project, combining leading open source security tools into a scalable, automated, continuous security pipeline.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors