# tb245950-wq/patrict-osint architecture

> Architecture diagram of the GitHub repository tb245950-wq/patrict-osint, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tb245950-wq/patrict-osint
- Repository: https://github.com/tb245950-wq/patrict-osint

## Overview

PATRICT-OSINT is a modular OSINT and digital-forensics framework. An investigator supplies a target and investigation type to the CLI; the orchestrator loads configured plugins, runs the relevant reconnaissance or file-analysis modules, and presents findings through reports and an interactive relationship graph. The README documents the major investigation domains and outputs; sampled source confirms plugin discovery, shared HTTP support, and representative analysis behavior. Some subsystem wiring is documented but not shown in the sampled excerpts, so uncertain module-to-module relationships are omitted.

Main entry points: [`core/plugin_loader.py`](https://github.com/tb245950-wq/patrict-osint/blob/main/core/plugin_loader.py) (Plugin Loader), [`main.py`](https://github.com/tb245950-wq/patrict-osint/blob/main/main.py) (CLI Orchestrator), [`core/async_client.py`](https://github.com/tb245950-wq/patrict-osint/blob/main/core/async_client.py) (Async HTTP Client), [`reports/report_generator.py`](https://github.com/tb245950-wq/patrict-osint/blob/main/reports/report_generator.py) (Report Generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Orchestration"]
  node_main["CLI Orchestrator<br/>[main.py]"]
  node_config["Configuration<br/>[config_manager.py]"]
  node_loader["Plugin Loader<br/>[plugin_loader.py]"]
  node_http["Async HTTP Client<br/>[async_client.py]"]
end

subgraph group_phone["Phone Intelligence"]
  node_phone["Phone Recon<br/>[phone_osint.py]"]
  node_caller["Caller ID<br/>[caller_id_osint.py]"]
  node_location["Geolocation<br/>[location_osint.py]"]
  node_social["Social Footprint<br/>[social_osint.py]"]
  node_email["Email Discovery<br/>[email_osint.py]"]
  node_whatsapp["WhatsApp Intel<br/>[whatsapp_osint.py]"]
  node_network["Network Intel<br/>[network_osint.py]"]
  node_history["Web Archive<br/>[web_history.py]"]
  node_dorking["Search Dorking<br/>[dorking_osint.py]"]
end

subgraph group_web["Web Reconnaissance"]
  node_webscan["Web Intelligence<br/>[web_osint.py]"]
end

subgraph group_forensics["File Forensics"]
  node_forensic["Media Analysis<br/>[file_forensics.py]"]
end

subgraph group_outputs["Analysis Outputs"]
  node_report["Report Generator"]
  node_graph["Relationship Graph<br/>[graph_engine.py]"]
  node_templates["Report Templates"]
end

node_investigator(("Investigator"))
node_target["Phone, URL, or File"]
node_websources(("Web Sources"))
node_results["Investigation Results"]

node_investigator -->|"starts scan"| node_main
node_target -->|"provides target"| node_main
node_main -->|"loads settings"| node_config
node_main -->|"discovers plugins"| node_loader
node_loader -->|"loads modules"| node_phone
node_loader -->|"loads modules"| node_caller
node_loader -->|"loads modules"| node_location
node_loader -->|"loads modules"| node_social
node_loader -->|"loads modules"| node_email
node_loader -->|"loads modules"| node_whatsapp
node_loader -->|"loads modules"| node_network
node_loader -->|"loads modules"| node_history
node_loader -->|"loads modules"| node_dorking
node_loader -->|"loads modules"| node_webscan
node_loader -->|"loads modules"| node_forensic
node_phone -->|"requests data"| node_http
node_dorking -->|"searches via"| node_http
node_webscan -->|"probes via"| node_http
node_http -->|"sends requests"| node_websources
node_main -->|"exports findings"| node_report
node_main -->|"builds graph"| node_graph
node_report -->|"renders with"| node_templates
node_report -->|"writes reports"| node_results
node_graph -->|"writes graph"| node_results

click node_main "https://github.com/tb245950-wq/patrict-osint/blob/main/main.py"
click node_config "https://github.com/tb245950-wq/patrict-osint/blob/main/core/config_manager.py"
click node_loader "https://github.com/tb245950-wq/patrict-osint/blob/main/core/plugin_loader.py"
click node_http "https://github.com/tb245950-wq/patrict-osint/blob/main/core/async_client.py"
click node_phone "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/phone_osint.py"
click node_caller "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/caller_id_osint.py"
click node_location "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/location_osint.py"
click node_social "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/social_osint.py"
click node_email "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/email_osint.py"
click node_whatsapp "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/whatsapp_osint.py"
click node_network "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/network_osint.py"
click node_history "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/web_history.py"
click node_dorking "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/dorking_osint.py"
click node_webscan "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/web_osint.py"
click node_forensic "https://github.com/tb245950-wq/patrict-osint/blob/main/modules/file_forensics.py"
click node_report "https://github.com/tb245950-wq/patrict-osint/blob/main/reports/report_generator.py"
click node_graph "https://github.com/tb245950-wq/patrict-osint/blob/main/visualizers/graph_engine.py"
click node_templates "https://github.com/tb245950-wq/patrict-osint/tree/main/reports/templates"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_config,node_loader,node_http toneBlue
class node_phone,node_caller,node_location,node_social,node_email,node_whatsapp,node_network,node_history,node_dorking toneAmber
class node_webscan toneMint
class node_forensic toneRose
class node_report,node_graph,node_templates,node_investigator,node_target,node_websources,node_results toneIndigo
```

## Components

### Orchestration

- [CLI Orchestrator](https://github.com/tb245950-wq/patrict-osint/blob/main/main.py): `main.py`
- [Configuration](https://github.com/tb245950-wq/patrict-osint/blob/main/core/config_manager.py): `core/config_manager.py`
- [Plugin Loader](https://github.com/tb245950-wq/patrict-osint/blob/main/core/plugin_loader.py): `core/plugin_loader.py`
- [Async HTTP Client](https://github.com/tb245950-wq/patrict-osint/blob/main/core/async_client.py): `core/async_client.py`

### Phone Intelligence

- [Phone Recon](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/phone_osint.py): `modules/phone_osint.py`
- [Caller ID](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/caller_id_osint.py): `modules/caller_id_osint.py`
- [Geolocation](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/location_osint.py): `modules/location_osint.py`
- [Social Footprint](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/social_osint.py): `modules/social_osint.py`
- [Email Discovery](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/email_osint.py): `modules/email_osint.py`
- [WhatsApp Intel](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/whatsapp_osint.py): `modules/whatsapp_osint.py`
- [Network Intel](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/network_osint.py): `modules/network_osint.py`
- [Web Archive](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/web_history.py): `modules/web_history.py`
- [Search Dorking](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/dorking_osint.py): `modules/dorking_osint.py`

### Web Reconnaissance

- [Web Intelligence](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/web_osint.py): `modules/web_osint.py`

### File Forensics

- [Media Analysis](https://github.com/tb245950-wq/patrict-osint/blob/main/modules/file_forensics.py): `modules/file_forensics.py`

### Analysis Outputs

- [Report Generator](https://github.com/tb245950-wq/patrict-osint/blob/main/reports/report_generator.py): `reports/report_generator.py`
- [Relationship Graph](https://github.com/tb245950-wq/patrict-osint/blob/main/visualizers/graph_engine.py): `visualizers/graph_engine.py`
- [Report Templates](https://github.com/tb245950-wq/patrict-osint/tree/main/reports/templates): `reports/templates`

### Other components

- **Investigator**
- **Phone, URL, or File**
- **Web Sources**
- **Investigation Results**

## Connections

- Investigator → CLI Orchestrator: starts scan
- Phone, URL, or File → CLI Orchestrator: provides target
- CLI Orchestrator → Configuration: loads settings
- CLI Orchestrator → Plugin Loader: discovers plugins
- Plugin Loader → Phone Recon: loads modules
- Plugin Loader → Caller ID: loads modules
- Plugin Loader → Geolocation: loads modules
- Plugin Loader → Social Footprint: loads modules
- Plugin Loader → Email Discovery: loads modules
- Plugin Loader → WhatsApp Intel: loads modules
- Plugin Loader → Network Intel: loads modules
- Plugin Loader → Web Archive: loads modules
- Plugin Loader → Search Dorking: loads modules
- Plugin Loader → Web Intelligence: loads modules
- Plugin Loader → Media Analysis: loads modules
- Phone Recon → Async HTTP Client: requests data
- Search Dorking → Async HTTP Client: searches via
- Web Intelligence → Async HTTP Client: probes via
- Async HTTP Client → Web Sources: sends requests
- CLI Orchestrator → Report Generator: exports findings
- CLI Orchestrator → Relationship Graph: builds graph
- Report Generator → Report Templates: renders with
- Report Generator → Investigation Results: writes reports
- Relationship Graph → Investigation Results: writes graph
