Subhunt
FreeNot checkedAggregate & dedupe subdomain enumeration from multiple sources
About
Aggregate & dedupe subdomain enumeration from multiple sources
README
SUBHUNT
Aggregate & dedupe subdomain enumeration from multiple sources
PyPI CI License: COCL 1.0 Suite
Part of the Cognis Neural Suite.
pip install cognis-subhunt
subhunt scan . # → prioritized findings in seconds
🔎 Example output
Real, reproducible output from the tool — runs offline:
$ subhunt-emit --version
subhunt 0.1.0
$ subhunt-emit --help
usage: subhunt [-h] [--version] {merge} ...
Aggregate & dedupe subdomain enumeration output from multiple sources into one
clean set (defensive / authorized testing).
positional arguments:
{merge}
merge Merge subdomain source files/dirs into one deduped set.
options:
-h, --help show this help message and exit
--version show program's version number and exit
Blocks above are real
subhuntoutput — reproduce them from a clone.
Sample result format (illustrative values — run on your own data for real findings):
{
"findings": [
{
"id": "123456",
"title": "Suspicious Network Traffic",
"description": "Possible malicious activity detected on port 443",
"created_at": "2023-02-15T14:30:00Z",
"updated_at": "2023-02-15T14:30:01Z",
"labels": ["network", "suspicious"],
"observables": [
{
"type": "ip-dst",
"value": "192.0.2.1"
},
{
"type": "port",
"value": 443
}
]
}
]
}
Usage — step by step
- Install the CLI (console script
subhunt):pip install cognis-subhunt - Merge enumeration output —
mergetakes one or more source files/dirs (one host per line,#comments) and produces one deduped set:subhunt merge amass.txt subfinder.txt assetfinder.txt - Scope and format — restrict to a registrable domain and emit JSON:
subhunt merge ./results/ --scope example.com --format json > subs.json - Read the output — each host lists its source count and which sources reported it; the JSON
statsblock reportsunique,duplicates,invalid, andout_of_scope. Exit code is1when unique hosts were found,0when nothing usable parsed:subhunt merge *.txt --scope example.com --format json | jq '.stats' - Automate in a recon pipeline — feed the deduped set straight into the next tool:
subhunt merge sources/*.txt --scope example.com | awk '{print $1}' | httpx
Contents
- Why subhunt? · Features · Quick start · Example · Architecture · AI stack · How it compares · Integrations · Install anywhere · Related · Contributing
Why subhunt?
one clean subdomain set
subhunt is single-purpose, scriptable, and self-hostable: point it at a target, get prioritized results in the format your workflow already speaks (table · JSON · SARIF), gate CI on it, and let agents drive it over MCP.
Features
- ✅ Normalize Host
- ✅ Is Valid Hostname
- ✅ In Scope
- ✅ Parse Source
- ✅ Aggregate
- ✅ Runs on Linux/macOS/Windows · Docker · devcontainer
- ✅ Ports in Python, JavaScript, Go, and Rust (
ports/)
Quick start
pip install cognis-subhunt
subhunt --version
subhunt scan . # scan current project
subhunt scan . --format json # machine-readable
subhunt scan . --fail-on high # CI gate (non-zero exit)
Example
$ subhunt scan .
[HIGH ] SUB-001 example finding (./src/app.py)
[MEDIUM ] SUB-002 another signal (./config.yaml)
2 findings · risk score 5 · 38ms
Architecture
flowchart LR
IN[target / export] --> P[subhunt<br/>collect + correlate]
P --> OUT[ranked findings]
Use it from any AI stack
subhunt is interoperable with every popular way of using AI:
- MCP server —
subhunt mcp(Claude Desktop, Cursor, Cognis.Studio, uncensored-fleet) - OpenAI-compatible / JSON — pipe
subhunt scan . --format jsoninto any agent or LLM - LangChain · CrewAI · AutoGen · LlamaIndex — wrap the CLI/JSON as a tool in one line
- CI / scripts — exit codes + SARIF for non-AI pipelines
How it compares
| Cognis subhunt | amass | |
|---|---|---|
| Self-hostable, no account | ✅ | varies |
| Single command, zero config | ✅ | ⚠️ |
| JSON + SARIF for CI | ✅ | varies |
| MCP-native (AI agents) | ✅ | ❌ |
| Polyglot ports (JS/Go/Rust) | ✅ | ❌ |
| Open license | ✅ COCL | varies |
Built in the spirit of amass/subfinder, re-framed the Cognis way. Missing a credit? Open a PR.
Integrations
Pipes into your stack: SARIF for code-scanning, JSON for anything, an MCP server (subhunt mcp) for AI agents, and a webhook forwarder for SIEM/Slack/Jira. See docs/INTEGRATIONS.md.
Install — every way, every platform
pip install "git+https://github.com/cognis-digital/subhunt.git" # pip (works today)
pipx install "git+https://github.com/cognis-digital/subhunt.git" # isolated CLI
uv tool install "git+https://github.com/cognis-digital/subhunt.git" # uv
pip install cognis-subhunt # PyPI (when published)
docker run --rm ghcr.io/cognis-digital/subhunt:latest --help # Docker
brew install cognis-digital/tap/subhunt # Homebrew tap
curl -fsSL https://raw.githubusercontent.com/cognis-digital/subhunt/main/install.sh | sh
| Linux | macOS | Windows | Docker | Cloud |
|---|---|---|---|---|
scripts/setup-linux.sh |
scripts/setup-macos.sh |
scripts/setup-windows.ps1 |
docker run ghcr.io/cognis-digital/subhunt |
DEPLOY.md (AWS/Azure/GCP/k8s) |
Related Cognis tools
- portfan — Summarize and diff nmap XML into prioritized, attackable findings
- dirsight — Analyze web content-discovery output (ffuf/gobuster) into ranked endpoints
- jwtinspect — Decode JWTs and lint for alg=none, weak secrets, and missing claims
- corsaudit — Detect permissive/misconfigured CORS from headers or a config
- headerscan — Grade HTTP security headers (CSP/HSTS/XFO) A-F from a response dump
- ssltriage — Grade TLS config (protocols/ciphers/expiry) from openssl/sslyze output
Explore the suite → 🗂️ all 170+ tools · ⭐ awesome-cognis · 🔗 cognis-sources · 🤖 uncensored-fleet · 🧠 engram
Contributing
PRs, new rules, and demo scenarios are welcome under the collaboration-pull model — see CONTRIBUTING.md and SECURITY.md.
⭐ If
subhuntsaved you time, star it — it genuinely helps others find it.
Interoperability
{} composes with the 300+ tool Cognis suite — JSON in/out and a shared
OpenAI-compatible /v1 backbone. See INTEROP.md for the
suite map, composition patterns, and reference stacks.
License
Source-available under the Cognis Open Collaboration License (COCL) v1.0 — free for personal, internal-evaluation, research, and educational use; commercial / production use requires a license ([email protected]). See LICENSE.
Install Subhunt in Claude Desktop, Claude Code & Cursor
unyly install subhuntInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add subhunt -- uvx --from git+https://github.com/cognis-digital/subhunt cognis-subhuntStep-by-step: how to install Subhunt
FAQ
Is Subhunt MCP free?
Yes, Subhunt MCP is free — one-click install via Unyly at no cost.
Does Subhunt need an API key?
No, Subhunt runs without API keys or environment variables.
Is Subhunt hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Subhunt in Claude Desktop, Claude Code or Cursor?
Open Subhunt on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Subhunt with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
