____ ____ ___ _ _ _____ ____ ____
/ __ \/ __ `__ \ | | |_ _| / __ \/ __ \
/ / / / / / / / / | | | | | / / / / / / /
/ /_/ / /_/ /_/ /| |_| | | | / /_/ / /_/ /
\____/\__,_|\__,_| \__,_| |_| \____/\____/
Advanced identity correlation and cognitive profiling CLI
OSINT-D2 ingests usernames and/or emails, aggregates public evidence from multiple OSINT sources, and enriches the dataset with targeted scrapers. A DeepSeek/OpenAI-compatible analyst can turn the evidence into hypothesis-driven intelligence. The CLI defaults to English while still supporting a full Spanish experience (--spanish).
- Multi-source correlation that links usernames, emails, and derived aliases in a single run.
- Modular async pipeline with reusable services, Sherlock integration, and support for WhatsMyName-style site lists.
- Cognitive AI analysis (
--deep-analyze) generating structured summaries, highlights, and confidence levels. - Professional dossier exports (JSON + PDF/HTML) suitable for incident response or executive briefings.
- Typer + Rich CLI with contextual help, interactive wizard, and JSON-first automation outputs.
Prerequisites
- Python 3.11 or newer
- Poetry
- WeasyPrint system dependencies (for PDF generation)
Setup
git clone https://github.com/Doble-2/osint-d2.git
cd osint-d2
poetry installCopy .env.example to .env and configure at least:
OSINT_D2_AI_API_KEY
Optional overrides:
OSINT_D2_AI_BASE_URL(defaults to DeepSeek)OSINT_D2_AI_MODELOSINT_D2_AI_TIMEOUT_SECONDSOSINT_D2_DEFAULT_LANGUAGE(enores)
PDF exports rely on WeasyPrint 60.1 and pydyf < 0.11 for compatibility.
Interactive wizard (default command):
poetry run osint-d2Direct help:
poetry run osint-d2 --help
poetry run osint-d2 hunt --help| Command | Summary |
|---|---|
wizard |
Guided workflow asking for usernames/emails, language, Sherlock, site-lists, and exports. |
scan |
Lightweight username sweep across built-in sources. |
scan-email |
Email-centric scan with optional local-part username pivot. |
hunt |
Full pipeline orchestrating usernames, emails, Sherlock, and site-lists with optional AI. |
analyze |
Re-run AI analysis against a previously exported JSON dossier. |
doctor |
Environment diagnostics (HTTP connectivity, WeasyPrint smoke test, config checks). |
Key flags (apply to the relevant commands):
--site-lists / --no-site-listsenables large data-driven site manifests.--sherlock / --no-sherlockdownloads and executes the Sherlock manifest (~400 sites).--strict / --no-strictapplies defensive heuristics to reduce false positives.--export-jsonwritesreports/<target>.json.--export-pdfwritesreports/<target>.pdf(falls back to HTML if PDF fails).--format jsonproduces machine-friendly output (recommended for automation).-s, --spanish / --englishtoggles localized prompts and AI analysis.
Examples:
# Full hunt: usernames, email, Sherlock, site lists, PDF dossier
poetry run osint-d2 hunt \
--usernames exampleuser \
--emails user@example.com \
--site-lists \
--sherlock \
--strict \
--export-pdf
# Quick email triage with AI analysis disabled
poetry run osint-d2 scan-email user@example.com --no-deep-analyze
# Re-run the AI profiler over an exported dossier in Spanish
poetry run osint-d2 analyze reports/example.json --spanish- English is the default CLI and AI language. Use
--spanish(orOSINT_D2_DEFAULT_LANGUAGE=es) to switch. - AI analysis is optional. When enabled, the AsyncOpenAI client targets the DeepSeek-compatible endpoint and may retry transient errors.
--json-rawembeds the provider payload underanalysis.rawfor auditing.- Treat AI output as hypothesis generation; always confirm with primary evidence.
- JSON exports mirror the internal Pydantic models, making them easy to post-process.
- PDF/HTML dossiers are rendered via Jinja2 templates and WeasyPrint, including summary tables and AI narratives when available.
- Exports are written under
reports/with filenames sanitised via the pipeline helpers.
src/core/domain models, configuration, resources loader, and orchestrating services (identity pipeline, language utilities).src/adapters/integrations: HTTP client, Sherlock runner, site lists, AI analyst, exporters, specific scrapers.src/cli/Typer commands, interactive wizard, doctor utilities, and Rich UI components.
The CLI delegates business logic to the service layer (core/services/identity_pipeline.py), keeping commands thin and testable. Async operations are wrapped with asyncio.run(...) to stay Typer-friendly.
poetry run osint-d2 doctorvalidates API keys, HTTP connectivity, and WeasyPrint support.- Enable
--format jsonto capture exact outputs for bug reports or automated pipelines. - Use
--no-deep-analyzeif you prefer to skip AI calls during debugging.
OSINT-D2 is intended for lawful defensive and investigative use (incident response, fraud, brand protection, self-audits). Respect privacy, terms of service, and local regulations.
- Do not use this tool for harassment, doxxing, or unauthorized intrusion.
- Correlation workflows can produce false positives; verify with additional evidence.
- AI-generated content can be biased or incorrect; treat it as guidance rather than fact.
Released under the MIT License. See LICENSE for details.