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.
Metadata
Release files for specter-ai 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| specter_ai-1.0.0.tar.gz | 32.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| specter_ai-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.3 kB
Release files / specter_ai-1.0.0.tar.gz
| Download URL | specter_ai-1.0.0.tar.gz |
|---|---|
| Size | 32.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a70eb0b664005184397d4d47c49f188f19d9620dbf74428eef9006f02d79a4d
|
|
BLAKE2b-256 checksum How to use checksums |
ff144c2a937858c7df0f4f80d5156d19d0f7b47c44e717e9aca8ffa16120c95d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.
Transparency logRelease files / specter_ai-1.0.0-py3-none-any.whl
| Download URL | specter_ai-1.0.0-py3-none-any.whl |
|---|---|
| Size | 32.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f124207bdc09197d6b2ac5c1cf9678c335a5555197ae1b4cb4e0ed0cf933bbc
|
|
BLAKE2b-256 checksum How to use checksums |
4720714b546fcb1603047ff8afb753882b24578d2071c33826ccca63ea8bf4ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.
Transparency log