- Python 3.11+
- Docker 24+ & Docker Compose v2 (for full stack)
- Git
git clone https://github.com/aryanajit24/VAPT.git
cd VAPTcd spir
python3.11 -m venv venv
source venv/bin/activate # Linux/macOS
# or: venv\Scripts\activate # Windowspip install -r requirements.txtcp .env.example .envEdit .env β at minimum set:
SPIR_API_KEYβ a random secret key for API authSPIR_SECRET_KEYβ another random key
Generate secure keys:
python -c "import secrets; print(secrets.token_hex(32))"python -m api.appThe API starts at http://localhost:8000. Swagger docs at http://localhost:8000/docs.
python scripts/demo.pypytest tests/ -v# From spir/ directory
docker-compose up -dServices started:
spir-apiβ FastAPI backend on port 8000spir-dashboardβ React frontend on port 3000postgresβ PostgreSQL on port 5432opensearchβ OpenSearch on port 9200redisβ Redis on port 6379
docker-compose ps
curl http://localhost:8000/healthdocker-compose logs -f spir-apidocker-compose downcd dashboard
npm install
npm startDashboard available at http://localhost:3000.
Configure your firewalls/servers to send syslog to SPIR:
# Firewall example (iptables rsyslog):
# /etc/rsyslog.d/spir.conf
*.* @spir-host:514 # UDP
*.* @@spir-host:601 # TCPSet up WEF to forward Windows events to SPIR's syslog TCP port (601).
| Variable | Default | Description |
|---|---|---|
SPIR_ENV |
development |
Environment mode |
SPIR_API_KEY |
change-me |
API authentication key |
SPIR_API_PORT |
8000 |
API server port |
POSTGRES_HOST |
localhost |
PostgreSQL host |
POSTGRES_PASSWORD |
spirpassword |
PostgreSQL password |
OPENSEARCH_HOST |
localhost |
OpenSearch host |
REDIS_HOST |
localhost |
Redis host |
SLACK_WEBHOOK_URL |
β | Slack webhook for alerts |
SMTP_HOST |
localhost |
SMTP server for email alerts |
VAPT_CRITICAL_THRESHOLD_DAYS |
7 |
Alert if critical vuln open > N days |