Site Audit Agent (SAA)
CLI tool for automated website audits using stealthy headless Chromium and LLM-powered analysis.
Quick Start
saa init # Setup config and API keys
saa audit https://example.com # Run an audit
Installation
Single User (macOS/Linux) - Recommended
# Install pipx if needed
brew install pipx # macOS
# or: sudo apt install pipx # Ubuntu/Debian
# Install SAA from PyPI
pipx install site-audit-agent
# Setup (installs Chromium, creates config)
saa init
# Add your API keys
vi ~/.saa/.keys
Multi-User Server (Ubuntu/Debian)
System-wide install with shared settings - each user provides their own API keys.
# 1. Install pipx and SAA (as root)
sudo apt install pipx
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install site-audit-agent
# 2. Initialize system config (auto-installs Playwright Chromium to /opt/playwright)
sudo saa init --system
# 3. Verify
saa --version
saa audit https://example.com --no-llm -o test.md
Server Install - Quick Copy/Paste
# As root
sudo apt install pipx
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install site-audit-agent
sudo saa init --system
Install from GitHub (Latest/Dev)
# Single user
pipx install git+https://github.com/iXanadu/saa.git
# Multi-user server
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install git+https://github.com/iXanadu/saa.git
Server Update
# PyPI version
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx upgrade site-audit-agent
# GitHub version
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx reinstall site-audit-agent
Development Install
cd /path/to/saa
pip install -e .
playwright install chromium
Configuration
Config loads in order (later overrides earlier):
| Location | Purpose | Precedence |
|---|---|---|
/etc/saa/ |
System-wide (admin) | 1 (lowest) |
~/.saa/ |
User config | 2 |
./.env, ./.keys |
Project override | 3 |
| Environment vars | Runtime override | 4 (highest) |
Config Files
~/.saa/ # or /etc/saa/ for system
├── .env # Settings
├── .keys # API keys (keep secret!)
├── audit-plan.md # Default audit plan
└── plans/ # Archived plan versions
Environment Variables
| Variable | Description |
|---|---|
XAI_API_KEY |
xAI API key (for Grok) |
ANTHROPIC_API_KEY |
Anthropic API key (for Claude) |
SAA_DEFAULT_LLM |
Default LLM (e.g., xai:grok, anthropic:sonnet) |
SAA_DEFAULT_PLAN |
Path to default audit plan |
SAA_OUTPUT_DIR |
Directory for auto-saved reports |
SAA_MAX_PAGES |
Max pages to crawl |
SAA_DEFAULT_DEPTH |
Max crawl depth |
Usage
Basic Examples
saa audit https://example.com # Basic audit
saa audit https://mysite.com -o report.md # Save to file
saa audit https://mysite.com -q # Quiet mode (status line only)
saa audit https://mysite.com -v # Verbose output
Audit Modes
saa audit https://mysite.com -m own # Deep audit (default)
saa audit https://competitor.com -m competitor # Light scan
| Mode | Depth | Max Pages | Purpose |
|---|---|---|---|
own |
10 | 200 | Deep audit of your sites |
competitor |
1 | 20 | Light scan for insights |
LLM Options
saa audit URL -l xai:grok # Use xAI Grok
saa audit URL -l anthropic:sonnet # Use Claude Sonnet
saa audit URL --no-llm # Skip LLM (basic report)
Custom Audit Plans
saa audit URL -p ./my-plan.md # Use custom plan
saa audit URL --no-plan # Skip default plan
Crawl Pacing
saa audit URL --pacing off # No delays (fast, detectable)
saa audit URL --pacing low # 0.5-1.5s delays
saa audit URL --pacing medium # 1-3s delays (default)
saa audit URL --pacing high # 2-5s delays (stealthy)
Management Commands
Check for Updates
saa check # Compare installed vs latest
saa update # Update via pipx reinstall
Plan Management
saa plan # Show current plan location
saa plan --view # Output current plan to stdout
saa plan --edit # Open plan in editor ($EDITOR or vi)
saa plan --update # Update to latest bundled plan
saa plan --bundled # Show the bundled default plan
saa plan --list # List archived versions
saa plan --rollback # Restore previous version
View Config
saa config --list # Show current settings
All Options
saa audit [OPTIONS] URL
Options:
-p, --plan PATH Custom audit plan (overrides config)
--no-plan Skip audit plan
-m, --mode [own|competitor] Audit mode
-d, --depth INTEGER Max crawl depth
--max-pages INTEGER Max pages to crawl
-l, --llm TEXT LLM provider:model
--no-llm Skip LLM analysis
-o, --output PATH Output file path
-q, --quiet Quiet mode (status line only)
-v, --verbose Verbose output
--pacing [off|low|medium|high] Crawl pacing
Updating
# Check if update available
saa check
# Update (if installed via pipx)
saa update
# Or manually
pipx reinstall saa
Troubleshooting
"playwright: command not found"
Use Python module directly:
python3 -m playwright install chromium
# Or for pipx install:
~/.local/pipx/venvs/saa/bin/playwright install chromium
"No module named playwright" with sudo
Install to system pipx location:
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install ...
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Acknowledgments
- Built with assistance from Claude (Anthropic)
- Uses Playwright for browser automation
- Stealth capabilities via playwright-stealth
Metadata
Release files for site-audit-agent 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| site_audit_agent-0.5.1.tar.gz | 39.8 kB | Without provenance | Details for site_audit_agent-0.5.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| site_audit_agent-0.5.1-py3-none-any.whl | Python 3 | none | any | Details for site_audit_agent-0.5.1-py3-none-any.whl |
Total release size: 83.5 kB
Release files / site_audit_agent-0.5.1.tar.gz
| Download URL | site_audit_agent-0.5.1.tar.gz |
|---|---|
| Size | 39.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
08b2e85b6588f2161e8547e69a9036dbe4d17425bef2944b2a3f46346ca1c833
|
|
BLAKE2b-256 checksum How to use checksums |
337c6b12ff46c778eac386d75d7c76c436cb3318e1c1db7ee047130459d948bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / site_audit_agent-0.5.1-py3-none-any.whl
| Download URL | site_audit_agent-0.5.1-py3-none-any.whl |
|---|---|
| Size | 43.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
412e906f05986d24f005a340400e84ebad92f31e1f1412aa4320ad3413fee6e3
|
|
BLAKE2b-256 checksum How to use checksums |
93ba9dae8df4fac09c6d5a1ea303544a11e489a5f36a76fab57502b01f6b7fdd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Security for site-audit-agent 0.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.