Social-Hunt is an OSINT framework for cross-platform username discovery, breach exposure lookups, and avatar-based face matching. It ships with a web dashboard and a CLI, supports data-driven provider packs, and includes optional AI-powered face restoration/demasking.
- Username presence scanning across many platforms using YAML providers.
- Breach intelligence via Have I Been Pwned (HIBP) and BreachVIP.
- Face matching against profile avatars using face recognition and image hashing.
- Reverse image OSINT links (Google Lens, Bing, Yandex, etc.).
- Tor/Onion site support via SOCKS proxy (split-tunneling).
- Optional AI face restoration/demasking via Replicate, IOPaint, or DeepMosaic.
- Plugin system with hot-reload and optional web uploader.
- Demo mode that censors sensitive data for safe demonstrations.
- Dashboard theme applies immediately on selection.
Known-good environments for self-hosting:
- Ubuntu 22.04 LTS (Jammy) on VPS providers (tested)
Notes:
- Other Debian/Ubuntu-based VPS images should work, but may require minor adjustments.
- If you deploy on a different OS/distro, please report your results in an issue or PR.
- Backend: FastAPI + httpx async scanning engine.
- Frontend: Static HTML/CSS/JS dashboard (no heavy framework).
- Core engine: async concurrency with per-provider rules and status heuristics.
git clone https://github.com/AfterPacket/Social-Hunt.git
cd Social-Hunt/docker
docker-compose up -d --buildOpen http://localhost:8000.
Use a proxy profile to expose the app on port 80:
cd Social-Hunt/docker
# Nginx
docker compose --profile nginx up -d --build
# Apache
docker compose --profile apache up -d --buildOpen http://localhost/.
To include IOPaint behind the same proxy:
docker compose --profile nginx --profile iopaint up -d --buildThis enables HTTPS termination and routes / to Social-Hunt and /iopaint to IOPaint.
cd Social-Hunt/docker
python setup_ssl.py
docker compose --profile certbot run --rm --service-ports certbot
docker compose --profile ssl up -dOpen https://your-domain.
git clone https://github.com/AfterPacket/Social-Hunt.git
cd Social-Hunt
python -m pip install -r requirements.txt
# For Tor/SOCKS support, ensure httpx-socks is installed:
python -m pip install httpx[socks]
python run.pyOpen http://localhost:8000.
For a full setup guide (virtualenv, tokens, Docker details), see README_RUN.md.
python -m social_hunt.cli <username> --platforms github twitter redditUseful options:
--format csv|json(default: csv)--max-concurrency 6--face-match /path/to/image1.jpg /path/to/image2.png--verbose(writessocial_hunt.log)
Settings are stored in data/settings.json (or SOCIAL_HUNT_SETTINGS_PATH).
Common keys:
admin_token(dashboard admin token; can be set via the Token page)hibp_api_key(required for HIBP)replicate_api_token(required for Replicate-based demasking)public_url(base URL for reverse-image links)
Settings resolution order is:
data/settings.json(orSOCIAL_HUNT_SETTINGS_PATH)- environment variables:
KEY,KEYuppercased,SOCIAL_HUNT_<KEY uppercased>
| Variable | Purpose |
|---|---|
SOCIAL_HUNT_HOST |
Bind address (default: 0.0.0.0) |
SOCIAL_HUNT_PORT |
Server port (default: 8000) |
SOCIAL_HUNT_RELOAD |
Enable auto-reload (1 for dev) |
SOCIAL_HUNT_SETTINGS_PATH |
Override data/settings.json |
SOCIAL_HUNT_PROVIDERS_YAML |
Override providers.yaml |
SOCIAL_HUNT_JOBS_DIR |
Override jobs output directory |
SOCIAL_HUNT_PUBLIC_URL |
Base URL for reverse image engines |
SOCIAL_HUNT_PLUGIN_TOKEN |
Admin token for protected actions |
SOCIAL_HUNT_ENABLE_TOKEN_BOOTSTRAP |
Allow setting admin token in UI |
SOCIAL_HUNT_BOOTSTRAP_SECRET |
Alternative bootstrap guard via X-Bootstrap-Secret |
SOCIAL_HUNT_ENABLE_WEB_PLUGIN_UPLOAD |
Allow plugin uploads in dashboard |
SOCIAL_HUNT_ALLOW_PY_PLUGINS |
Allow Python plugins (executes code) |
SOCIAL_HUNT_PLUGIN_DIR |
Upload target for web plugins (default: plugins/providers) |
SOCIAL_HUNT_PLUGINS_DIR |
Base plugins directory (default: plugins) |
SOCIAL_HUNT_DEMO_MODE |
Censor sensitive fields in results |
SOCIAL_HUNT_FACE_AI_URL |
External face restoration endpoint |
REPLICATE_API_TOKEN |
Replicate API token for demasking |
SOCIAL_HUNT_PROXY |
SOCKS Proxy URL for .onion/darkweb access (e.g., socks5h://127.0.0.1:9050) |
Social-Hunt supports scanning .onion sites by routing traffic through a Tor proxy. It uses split-tunneling, so regular sites (like Twitter) use your direct connection while .onion sites go through the proxy.
For safety, avatar face matching skips .onion hosts.
- Install Tor (e.g.,
sudo apt install toror use Tor Browser). - Install SOCKS dependencies:
pip install httpx[socks]
Set the SOCIAL_HUNT_PROXY environment variable before starting the app. Use socks5h:// to ensure DNS resolution happens over Tor.
Linux/Mac:
export SOCIAL_HUNT_PROXY="socks5://127.0.0.1:9050"
python run.pyWindows:
$env:SOCIAL_HUNT_PROXY="socks5h://127.0.0.1:9150"
python run.py(Note: Standard Tor service uses port 9050; Tor Browser usually uses 9150).
Social-Hunt supports YAML provider packs and optional Python plugins:
- YAML providers:
plugins/providers/*.yaml - Python providers/addons:
plugins/python/providers/*.py,plugins/python/addons/*.py
To enable Python plugins, set SOCIAL_HUNT_ALLOW_PY_PLUGINS=1.
The dashboard can upload .yaml or .zip bundles when:
SOCIAL_HUNT_ENABLE_WEB_PLUGIN_UPLOAD=1
SOCIAL_HUNT_PLUGIN_TOKEN=long_random_token
See PLUGINS.md for full details and plugin contracts.
Reverse-image links require a public base URL for your instance:
- Set
public_urlin settings orSOCIAL_HUNT_PUBLIC_URLin the environment.
Social-Hunt supports multiple demasking modes:
- Replicate API models (managed SaaS).
- IOPaint WebUI for interactive inpainting.
- DeepMosaic for automated mosaic removal (image/video).
Set a Replicate API token in either:
- Settings:
replicate_api_token - Environment:
REPLICATE_API_TOKEN
When configured, the server uses Replicate models to remove masks and restore facial detail.
Use the IOPaint page in the Demasking menu to:
- Start/stop the local IOPaint server
- Open the IOPaint WebUI
- Select model/device/port
You can also host IOPaint under /iopaint behind the same domain (see
APACHE_SETUP.md and NGINX_SETUP.md).
DeepMosaic can remove mosaics from images or video. Use the DeepMosaic page to:
- Upload image/video
- Choose clean/add/style modes
- Download results or save to notes
Set SOCIAL_HUNT_FACE_AI_URL to an HTTP endpoint that accepts JSON:
{
"image": "<base64 image bytes>",
"fidelity": 0.7,
"task": "face_restoration"
}and returns:
{ "image": "<base64 restored image bytes>" }The repo includes a DeepMosaics/ submodule you can use to build a local restoration service,
but it does not match the /restore JSON contract out of the box. Add a small adapter or
proxy to translate the request/response format, then point SOCIAL_HUNT_FACE_AI_URL at it.
- BreachVIP 403: Cloudflare may block datacenter IPs. Try manual search or change IP.
- HIBP skipped: missing or invalid
hibp_api_key. - Missing Python providers: ensure
SOCIAL_HUNT_ALLOW_PY_PLUGINS=1. - Demask not working: set
REPLICATE_API_TOKENorSOCIAL_HUNT_FACE_AI_URL.
api/FastAPI app and settings storesocial_hunt/core engine, registry, providers, addons, CLIweb/static dashboard UIplugins/YAML providers and optional Python pluginsdata/settings and scan jobsdocker/container build/deploy files
README_RUN.mdexecution and configuration guidePLUGINS.mdplugin formats and uploaderAPACHE_SETUP.mdApache reverse proxy notesNGINX_SETUP.mdNginx reverse proxy notesCANARY.mdcanary warrant templatePGP.mdPGP public key templateNEWS_OSINT.mdOSINT news digest templateLICENSEGPL-3.0
If you want IOPaint under the same domain (e.g., /iopaint), Social-Hunt's API
is moved to /sh-api to avoid conflicts with IOPaint's /api and /socket.io
routes. Make sure your reverse proxy routes /sh-api to the app and /api to
IOPaint as shown in APACHE_SETUP.md.
SUPER IMPORTANT NOTE: You must follow APACHE_SETUP.md or NGINX_SETUP.md for reverse proxy setup.
Self-hosted OSINT aggregator with admin token authentication
Main dashboard showing welcome screen and recent job history
Comprehensive username search across 500+ platforms with real-time status indicators
Data breach lookup powered by BreachVIP
Reverse image search with multiple engine options (Google Lens, Bing, Yandex)
Forensic AI demasking using Replicate or self-hosted models
Encrypted notes with AES-256-GCM encryption
Master password protection for secure notes
YAML provider packs and plugin upload interface
Server configuration, theme selection, and API integrations
Admin token and browser token management
Thanks to everyone who has helped build and maintain Social-Hunt. Add contributors here or link to a CONTRIBUTORS file if you prefer.
Social-Hunt is for lawful, authorized investigations only. You are responsible for complying with platform terms and local laws.
