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:
- Detects your OS →
linux/macos/windows. - Fetches
https://insom.ai/static/downloads/plugin_manifest.jsonand reads itssast.<os>entry (filename + sha256 + version). - Downloads the matching binary and verifies its
sha256. - 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b713fe327fdeae2caa132b7538f80c0a04ab10a8f9e91ec20844ac885611aa66
|
|
| MD5 |
09dfa5da501f799df1618da47aa91563
|
|
| BLAKE2b-256 |
f157565b6cbdfc3cae979df48f5b7b774079a15b9a632405b07fdbacb6af219f
|
Provenance
The following attestation bundles were made for sast-0.1.1.tar.gz:
Publisher:
publish.yml on vulnz/sast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sast-0.1.1.tar.gz -
Subject digest:
b713fe327fdeae2caa132b7538f80c0a04ab10a8f9e91ec20844ac885611aa66 - Sigstore transparency entry: 1723408901
- Sigstore integration time:
-
Permalink:
vulnz/sast@67e52677589921c0f59de4b276522fd917df229b -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/vulnz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@67e52677589921c0f59de4b276522fd917df229b -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4c2385431e733bb8d78269f715b35ff420c1cbbbee1673b5dc8c52b8bfa3f66
|
|
| MD5 |
3e4e3d5d212311f824c02e2612789416
|
|
| BLAKE2b-256 |
d3855c61a08e469d8d81913977b2ed9b7402c618b19750b483d2a855ebbbfaac
|
Provenance
The following attestation bundles were made for sast-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on vulnz/sast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sast-0.1.1-py3-none-any.whl -
Subject digest:
d4c2385431e733bb8d78269f715b35ff420c1cbbbee1673b5dc8c52b8bfa3f66 - Sigstore transparency entry: 1723409003
- Sigstore integration time:
-
Permalink:
vulnz/sast@67e52677589921c0f59de4b276522fd917df229b -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/vulnz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@67e52677589921c0f59de4b276522fd917df229b -
Trigger Event:
push
-
Statement type: