Attack surface recon tool that runs DNS, port scanning, HTTP, and TLS analysis in parallel, then uses Claude to generate a risk-assessed pentest report.
Project description
For authorized security testing only. Do not scan systems you don't own or don't have explicit written permission to test.
Screenshots
| Dashboard | Live Scan Progress | Report View |
|---|---|---|
The live demo runs on Render's free tier, so the first request after inactivity can take ~50s to wake up.
Table of contents
What it does
Runs four recon modules in parallel against a target domain or IP, then sends the aggregated findings to Claude for AI-driven analysis and risk assessment. Outputs a structured Markdown report, or view it live in the web dashboard with real-time progress over SSE.
| Module | What it collects |
|---|---|
| DNS / WHOIS | Subdomains, registrar info, DNS records |
| Port scan | Open ports (top 20 quick / top 1000 full), service banners |
| HTTP probe | Headers, server tech fingerprinting, security misconfigs |
| SSL/TLS | Certificate details, expiry, cipher weaknesses |
How it works
target ─┬─▶ DNS / WHOIS enumeration ─┐
├─▶ Port scan + banner grab ├─▶ aggregator ─▶ Claude (risk analysis) ─▶ report
├─▶ HTTP header probe │ (CLI: Markdown file · Web: live dashboard)
└─▶ SSL/TLS inspection ──────┘
The four modules run concurrently, and their results are merged into one structured summary. That summary is sent to Claude, which returns a risk level, key findings, and next steps as structured JSON, which then gets rendered into the final report.
Features
- Four recon modules run in parallel: DNS/WHOIS, port scanning with banner grabbing, HTTP header analysis, SSL/TLS inspection
- AI-driven risk assessment via Claude: executive summary, key findings, and recommended next steps
- Live web dashboard with real-time scan progress over Server-Sent Events, plus scan history per browser session
- CLI mode for scripting or offline use (
--no-aiskips the Claude call entirely) - Quick or full scan modes: top 20 ports for a fast pass, top 1000 for deeper coverage
- Rate limited (5 scans per IP per minute on the web dashboard) to keep the demo usable for everyone
- Exportable reports: Markdown download or raw JSON via the dashboard
Usage
CLI
Install once, then run it as a regular command, no cloning required:
pipx install specter-ai # or: pip install specter-ai
export ANTHROPIC_API_KEY=your_key_here
specter-ai --target example.com --mode quick
specter-ai --target example.com --mode full --output report.md
specter-ai --target example.com --no-ai # skip AI analysis
Running from a source checkout instead of PyPI:
pip install -e .
export ANTHROPIC_API_KEY=your_key_here
specter-ai --target example.com --mode quick
# or: python -m specter_ai --target example.com --mode quick
Flags
| Flag | Description |
|---|---|
--target / -t |
Target domain or IP (required) |
--mode / -m |
quick (top 20 ports) or full (top 1000). Default: quick |
--output / -o |
Output filename. Default: <target>_report.md |
--no-ai |
Skip Claude analysis (offline / no API key) |
Web dashboard
The web dashboard isn't published as a standalone package, so run it from a source checkout:
git clone https://github.com/hiratinspace/specter-ai.git
cd specter-ai
pip install -e ".[web]"
python3 web/app.py
# Open http://localhost:5000
Real-time scan progress via SSE, with a full report view and scan history on completion. Try it against a legal test target:
specter-ai --target scanme.nmap.org
Configuration
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
For AI analysis | Claude API key. Omit and pass --no-ai (CLI) or disable "AI Analysis" (web) to run without it |
SECRET_KEY |
Optional | Flask session signing key for the web dashboard. Falls back to a random key generated per process restart |
Requirements
- Python 3.10+
ANTHROPIC_API_KEYenvironment variable (for AI analysis)
Core CLI dependencies (installed automatically via pip/pipx):
anthropic>=0.25.0
dnspython>=2.4.0
python-whois>=0.9.0
requests>=2.31.0
The web dashboard additionally needs the web extra:
flask>=3.0.0
gunicorn>=21.2.0
Project structure
src/specter_ai/ # Installable package (PyPI: specter-ai)
cli.py # CLI entrypoint (console script: specter-ai)
modules/ # dns_enum, port_scan, http_probe, ssl_check
core/ # aggregator, ai_analyst (Claude integration)
report/ # Markdown report generator
web/app.py # Flask web dashboard (run from a source checkout)
assets/screenshots/ # README screenshots
License
Apache License 2.0. See LICENSE for details.
Built with Python, by Hirat Rahman Rahi, first released April 8, 2026.
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 specter_ai-1.0.0.tar.gz.
File metadata
- Download URL: specter_ai-1.0.0.tar.gz
- Upload date:
- Size: 32.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a70eb0b664005184397d4d47c49f188f19d9620dbf74428eef9006f02d79a4d
|
|
| MD5 |
ddcec6b70f10b1b109cf8565b94296fd
|
|
| BLAKE2b-256 |
ff144c2a937858c7df0f4f80d5156d19d0f7b47c44e717e9aca8ffa16120c95d
|
Provenance
The following attestation bundles were made for specter_ai-1.0.0.tar.gz:
Publisher:
publish.yml on hiratinspace/specter-ai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
specter_ai-1.0.0.tar.gz -
Subject digest:
3a70eb0b664005184397d4d47c49f188f19d9620dbf74428eef9006f02d79a4d - Sigstore transparency entry: 2284180662
- Sigstore integration time:
-
Permalink:
hiratinspace/specter-ai@9a8427db87fef82ee27b82a83964c0ff7977a458 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/hiratinspace
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9a8427db87fef82ee27b82a83964c0ff7977a458 -
Trigger Event:
release
-
Statement type:
File details
Details for the file specter_ai-1.0.0-py3-none-any.whl.
File metadata
- Download URL: specter_ai-1.0.0-py3-none-any.whl
- Upload date:
- Size: 32.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f124207bdc09197d6b2ac5c1cf9678c335a5555197ae1b4cb4e0ed0cf933bbc
|
|
| MD5 |
f3203b505d18036f1b3871b686cede01
|
|
| BLAKE2b-256 |
4720714b546fcb1603047ff8afb753882b24578d2071c33826ccca63ea8bf4ba
|
Provenance
The following attestation bundles were made for specter_ai-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on hiratinspace/specter-ai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
specter_ai-1.0.0-py3-none-any.whl -
Subject digest:
1f124207bdc09197d6b2ac5c1cf9678c335a5555197ae1b4cb4e0ed0cf933bbc - Sigstore transparency entry: 2284180854
- Sigstore integration time:
-
Permalink:
hiratinspace/specter-ai@9a8427db87fef82ee27b82a83964c0ff7977a458 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/hiratinspace
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9a8427db87fef82ee27b82a83964c0ff7977a458 -
Trigger Event:
release
-
Statement type: