flowlyt

module
v2.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2026 License: Apache-2.0

README

Flowlyt

A static security analyzer for GitHub Actions and GitLab CI/CD workflows.

Presented at AppSec Village DEF CON 33 and Black Hat Europe 2025.

Installation

Homebrew (macOS / Linux)
brew install harekrishnarai/flowlyt/flowlyt
# or: brew tap harekrishnarai/flowlyt && brew install flowlyt
Go
go install github.com/harekrishnarai/flowlyt/v2/cmd/flowlyt@latest

Or build from source:

git clone https://github.com/harekrishnarai/flowlyt.git
cd flowlyt
go build -o flowlyt cmd/flowlyt/main.go

Usage

Scan a local repository
flowlyt scan --repo ./my-repo
Scan a single workflow file
flowlyt scan --workflow .github/workflows/ci.yml
Scan a remote repository
# GitHub — via environment variable, gh CLI, or flag
export GITHUB_TOKEN=ghp_your_token
export GITHUB_TOKEN=$(gh auth token)
flowlyt scan --url https://github.com/owner/repo --github-token <your-github-token>

# GitLab
export GITLAB_TOKEN=glpat_your_token
flowlyt scan --platform gitlab --url https://gitlab.com/owner/repo --gitlab-token glpat_your_token
Scan a specific ref (branch, tag, or commit SHA)
# Defaults to the repository's default branch when --ref is omitted
flowlyt scan --url https://github.com/owner/repo --ref develop
flowlyt scan --url https://github.com/owner/repo --ref v2.40.0
flowlyt scan --url https://github.com/owner/repo --ref 5c9ec1c5f51d682dbf65b0c16f856d8b9303adff

--branch is kept as an alias of --ref for backward compatibility. Both the scanned content and the file links in the report use the given ref.

Output formats
flowlyt scan --repo ./my-repo --output json --output-file results.json
flowlyt scan --repo ./my-repo --output sarif --output-file results.sarif

How It Works

Flowlyt parses workflow files into an AST, runs a rule engine across the tree (injection, secrets, supply chain, misconfigurations), then optionally passes findings through an AI layer for false positive verification. Results are emitted as text, JSON, or SARIF.

Features

  • 110+ security rules covering injection, secrets, supply chain, and misconfigurations
  • AST-based analysis with call graph, reachability, and data flow
  • AI-assisted false positive reduction (OpenAI, Gemini, Claude, Grok, Perplexity)
  • Context-aware severity adjustment based on workflow type and triggers
  • Dependabot configuration auditing (.github/dependabot.yml)
  • SARIF output for GitHub Security tab integration
  • OSV.dev vulnerability intelligence
  • Custom rules and policy enforcement
  • GitHub Actions and GitLab CI/CD support

GitHub Actions Integration

name: Security Scan
on: [push, pull_request]

jobs:
  security:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      contents: read

    steps:
      - uses: actions/checkout@v4

      - name: Run Flowlyt
        uses: harekrishnarai/flowlyt@v2.2.0
        with:
          output-format: 'sarif'
          output-file: 'flowlyt-results.sarif'
          min-severity: 'MEDIUM'
          fail-on-severity: 'HIGH'

      - name: Upload to GitHub Security
        if: always()
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: flowlyt-results.sarif
          category: flowlyt

AI analysis is available via CLI only. Use --ai flag for AI-enhanced local scans.

AI Analysis

Flowlyt supports AI-assisted verification using your own API key (BYOK).

export AI_API_KEY=your-api-key
flowlyt scan --repo ./my-repo --ai openai
flowlyt scan --repo ./my-repo --ai gemini
flowlyt scan --repo ./my-repo --ai claude
flowlyt scan --repo ./my-repo --ai grok
flowlyt scan --repo ./my-repo --ai perplexity
Provider Environment Variable Get Key
OpenAI AI_API_KEY platform.openai.com/api-keys
Gemini AI_API_KEY aistudio.google.com/app/apikey
Claude AI_API_KEY console.anthropic.com
Grok AI_API_KEY console.x.ai
Perplexity AI_API_KEY perplexity.ai/settings/api

Documentation

Topic Path
Quick Start docs/guides/quick-start.md
Installation docs/guides/installation.md
CLI Reference docs/reference/cli-reference.md
Configuration docs/reference/configuration.md
Security Rules docs/reference/security-rules.md
Custom Rules docs/reference/custom-rules.md
AI Integration docs/features/ai-integration.md
AST Analysis docs/features/ast-analysis.md
CI/CD Integration docs/integrations/cicd-integration.md
Architecture docs/advanced/architecture.md

Contributing

See CONTRIBUTING.md for guidelines.

License

Apache License 2.0 — see LICENSE for details.

Contributors

Hare Krishna Rai Gaurav Joshi Chanchal Kalnarayan Prashant Venkatesh Nandan Gupta Mohd. Arif

Contributors

Directories

Path Synopsis
cmd
flowlyt command
examples
enhanced command
performance command
pkg
ai
analysis/jobgraph
Package jobgraph models a workflow's jobs as a directed acyclic graph and propagates taint across it.
Package jobgraph models a workflow's jobs as a directed acyclic graph and propagates taint across it.
analysis/resolve
Package resolve loads the definitions behind local `uses:` references.
Package resolve loads the definitions behind local `uses:` references.
dependabot
Package dependabot discovers and audits Dependabot configuration files.
Package dependabot discovers and audits Dependabot configuration files.
matcher
Package matcher finds which of a fixed set of literals occur in a text, in a single pass.
Package matcher finds which of a fixed set of literals occur in a text, in a single pass.
opa
osv

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL