Skip to main content

osintkit

ci python pypi license ruff

Public-data OSINT for one email, username, domain, or company: gathered from free sources, briefed by an LLM acting as a defensive analyst, rendered as a colour-coded report.

osintkit uses only public sources: certificate transparency, public DNS, WHOIS, public GitHub search, free breach indexes, paste archives, and public profile pages. It never logs in on your behalf and never touches a paid data broker.

osintkit report showing risk, breaches, and recommendations

A full trimmed report, including breach and account sections, is in docs/sample-output.md.

Why

Checking what the public record says about you is tedious: a dozen sites, a dozen formats, no synthesis. osintkit runs those checks concurrently, keeps the raw evidence, and turns it into a briefing with a risk level and concrete hardening advice. Everything is local, every source is named, and every gap is reported instead of hidden.

Intended for personal privacy checks, authorised pre-engagement recon, and quick due diligence on a domain or company. Findings are leads to verify, not facts.

Install

pipx install osintkit
# or
uv tool install osintkit

Every release also carries a wheel with checksums, and pip install -e . works from a clone. Python 3.12+ only.

Quick start

export API_KEY=...                 # model key, any OpenAI-compatible endpoint
osintkit doctor --deep             # prove the key and endpoint work
osintkit lookup alice@example.com

No key? osintkit lookup example.com --raw still collects everything; --dry-run shows the exact synthesis prompt.

Any OpenAI-compatible endpoint works. --provider venice|openrouter|openai picks a preset, and a recognisable key prefix picks one for you; --base-url and --model always win.

Optional keys: HIBP_API_KEY turns on Have I Been Pwned, GITHUB_TOKEN lifts GitHub from 60 to 5000 requests/hour. Everything else needs no credentials.

Commands

Command Purpose
lookup One target, one report (--email, --username, --domain, --company)
batch A CSV of targets, run concurrently, reported in order
diff What changed between two archived runs
history Past runs, replayable by id
doctor Key, endpoint, and directory checks (--deep verifies auth)
collectors Every collector and what it touches
cache / prune Inspect, clear, or age out local state
schema The JSON contract the model must satisfy

Output: default colour report, --json, --markdown (they combine), --raw for collected data, --dry-run for the prompt. Exit codes: 0 ok, 1 synthesis or partial failure, 2 bad input.

How it works

target -> type detection -> collectors (parallel, cached, retried)
                                 |
                                 v
                     merge + risk signals (deterministic)
                                 |
                                 v
           LLM briefing -> pydantic validation -> one repair retry
                                 |
                                 v
              colour report . JSON . Markdown . archive

Collectors degrade to a logged gap, never a dead run; a report is produced even when sources or the model fail.

  • Merged breaches. Three indexes listing one incident collapse into one row with every source and the earliest date.
  • Risk floor. Breach count and credential types set a floor the model may exceed but never undercut.
  • Cached everything. 24h default, shorter for volatile sources; repeat prompts cost nothing.
  • Validated output. Strict JSON schema, one repair round-trip, then a clean failure.

Collectors

Two dozen sources across four target types, all free and login-free: HIBP (key), XposedOrNot, LeakCheck, Gravatar, crt.sh (subdomains, certificates, organisation search), public DNS (A/AAAA/MX/TXT/NS/CNAME plus SPF, DMARC, DKIM, wildcard), passive subdomains, WHOIS, TCP connect probes, GitHub (profile, commits, user search, org repos), psbdmp with a Gist fallback, grep.app, Hacker News, Stack Exchange, and username presence. The full table is in docs/REFERENCE.md or via osintkit collectors.

Safety and legality

  • Public data only. No logins, no scraping behind auth, no paid brokers.
  • Targets are typed and normalised before any request.
  • Requests retry on 429/5xx with backoff and honour GitHub quota headers.
  • Results are evidence, not ground truth; the report says which sources were unavailable.
  • Cache, logs, and reports stay under ~/.osintkit (override with OSINTKIT_HOME). Retention is 30 days by default.

Limitations

WHOIS is often redacted. GitHub search is shallow. Free breach indexes lag. Port probing only sees what your network can reach. Model summaries can overstate weak signals. Read the coverage panel: an empty section may mean "nothing found" or "source skipped".

Development

git clone https://github.com/sjdsjadjajdjsa/osintkit
cd osintkit
uv sync --extra dev
pytest
uvx ruff check src tests

Tests never touch the network: HTTP is mocked with respx, DNS and WHOIS are monkeypatched, and a recorded model reply covers the full-stack path. CI runs on 3.12 and 3.13. See CONTRIBUTING.md for the collector contract and docs/architecture.md for the module map.

Licence

MIT. Security reports: SECURITY.md.

osintkit is independent tooling. It is not affiliated with any source it queries.

Metadata

Release files for osintkit 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for osintkit 0.1.2
File Size Uploaded Provenance Actions
osintkit-0.1.2.tar.gz 155.1 kB With provenance Details for osintkit-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for osintkit 0.1.2
File Interpreter ABI Platform Actions
osintkit-0.1.2-py3-none-any.whl Python 3 none any Details for osintkit-0.1.2-py3-none-any.whl

Total release size: 208.9 kB

Release files / osintkit-0.1.2.tar.gz

Download URL osintkit-0.1.2.tar.gz
Size 155.1 kB
Tags Source
SHA-256 checksum
How to use checksums
76a6c7a284d5771f014f49b3a412a0c92316747a7c2cd5215b1be3359627951d
BLAKE2b-256 checksum
How to use checksums
889ba98dc7bdebf3e7c347fb6d6aa35067603c2a0177cf5d7aa6330bbc4ebb4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / osintkit-0.1.2-py3-none-any.whl

Download URL osintkit-0.1.2-py3-none-any.whl
Size 53.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ee1a67912459e7be020c8ed2bcea9fd82a16044dd761be0ceb381ea7ee8f0ab6
BLAKE2b-256 checksum
How to use checksums
43cf6e433d66f232ee2b596e7d6be8ef6a120c9cb61b29716c58035ae3eaba68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Security for osintkit 0.1.2

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for osintkit-0.1.2.tar.gz

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 Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page