Skip to main content

sast — free, fast static application security testing for CI/CD. Installs a self-contained SAST engine (17+ languages, taint tracking, secrets, IaC, SCA; HTML/JSON/SARIF) on first run.

Project description

sast

Free, fast static application security testing for CI/CD.

sast is a tiny launcher. Installing it is instant; the first time you run it, it downloads a self-contained SAST engine binary that matches your operating system, verifies its checksum, and caches it. Every run after that is native speed with no Python dependencies.

pip install sast
sast .                 # scan the current directory
sast ./src --sarif report.sarif
sast --help            # full engine options

Supports Linux, macOS and Windows (x86-64). On Apple Silicon the macOS binary runs under Rosetta.

Installing

pip install sast creates a sast command (Linux/macOS: <prefix>/bin/sast, Windows: <prefix>\Scripts\sast.exe). For the command to be found, that directory must be on your PATH. The most reliable options:

pipx install sast      # recommended — isolated, always on PATH (all OSes)

or inside a virtual environment:

python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
pip install sast

If sast is "not recognized" / "command not found" after a pip install --user, the per-user scripts dir isn't on your PATH. Either add it, or just run it as a module — this always works regardless of PATH:

python -m sast .
  • Windows per-user scripts dir: %APPDATA%\Python\Python3XX\Scripts
  • Linux/macOS per-user scripts dir: ~/.local/bin

What it scans

  • SAST across 17+ languages with taint tracking
  • Secrets detection (entropy + vendor rule packs)
  • IaC / cloud misconfiguration (Terraform, K8s, Docker, …)
  • SCA — known-vulnerable dependencies
  • Output as HTML, JSON, or SARIF (drops straight into GitHub code scanning)

How it works

pip install sast lays down only a few KB of pure-Python launcher — no download happens at install time (that keeps offline/CI installs reliable). On first invocation the launcher:

  1. Detects your OS → linux / macos / windows.
  2. Fetches https://insom.ai/static/downloads/plugin_manifest.json and reads its sast.<os> entry (filename + sha256 + version).
  3. Downloads the matching binary and verifies its sha256.
  4. Caches it under your per-user cache directory and execs it.

Because the engine lives on the server, new engine releases reach users without republishing the pip package.

Staying on the latest engine

After the first download the cached binary is reused for speed. At most once per day (SAST_UPDATE_INTERVAL, default 86400 seconds) sast also asks insom.ai whether a newer engine is published and, if so, upgrades itself automatically. Update checks fail open — if you're offline or the server is unreachable, the cached binary keeps working. Set SAST_UPDATE_INTERVAL=0 to pin the cached version, or run sast self-update to force the latest at any time.

Launcher commands

Command What it does
sast … Forward all args to the SAST engine
sast self-update Re-download the latest engine binary
sast self-version Show launcher + cached-engine versions
sast self-where Print the cached binary path

Environment variables

Variable Purpose
SAST_MANIFEST_URL Override the manifest URL (staging / self-hosting)
SAST_CACHE_DIR Override where the binary is cached
SAST_UPDATE_INTERVAL Seconds between auto-update checks (default 86400; 0 disables)

Default cache locations:

  • Linux: ~/.cache/sast/bin
  • macOS: ~/Library/Application Support/sast/bin
  • Windows: %LOCALAPPDATA%\sast\bin

Use in CI (GitHub Actions)

- run: pip install sast
- run: sast . --sarif results.sarif --fail-on high
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

sast exits non-zero when findings meet your --fail-on threshold, failing the build.

Server-side manifest format

By default the launcher reads insom.ai's plugin_manifest.json, whose sast section lists the latest per-OS build:

{
  "sast": {
    "windows": { "filename": "insomnia-sast-windows-x64.exe", "sha256": "<hex>", "version": "1.0.0", "uploaded": "<iso8601>" },
    "linux":   { "filename": "insomnia-sast-linux-x64",       "sha256": "<hex>", "version": "1.0.0", "uploaded": "<iso8601>" },
    "macos":   null
  }
}

filename is resolved relative to the manifest URL. The launcher also accepts a simpler { "version", "platforms": { "<os>": { "url", "sha256" } } } shape if you self-host via SAST_MANIFEST_URL. sha256 is enforced when present; a null OS entry means that build isn't published yet.


© CQR Cybersecurity LLC. The sast launcher is open source; the SAST engine binary it downloads is proprietary. See https://insom.ai.

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

sast-0.1.1.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

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

sast-0.1.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file sast-0.1.1.tar.gz.

File metadata

  • Download URL: sast-0.1.1.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sast-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b713fe327fdeae2caa132b7538f80c0a04ab10a8f9e91ec20844ac885611aa66
MD5 09dfa5da501f799df1618da47aa91563
BLAKE2b-256 f157565b6cbdfc3cae979df48f5b7b774079a15b9a632405b07fdbacb6af219f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sast-0.1.1.tar.gz:

Publisher: publish.yml on vulnz/sast

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

File details

Details for the file sast-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sast-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sast-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d4c2385431e733bb8d78269f715b35ff420c1cbbbee1673b5dc8c52b8bfa3f66
MD5 3e4e3d5d212311f824c02e2612789416
BLAKE2b-256 d3855c61a08e469d8d81913977b2ed9b7402c618b19750b483d2a855ebbbfaac

See more details on using hashes here.

Provenance

The following attestation bundles were made for sast-0.1.1-py3-none-any.whl:

Publisher: publish.yml on vulnz/sast

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