# trsi-me/ts-osint architecture

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

- Interactive diagram: https://gitdiagram.com/trsi-me/ts-osint
- Repository: https://github.com/trsi-me/ts-osint

## Overview

TS-OSINT is a menu-driven, command-line OSINT application. A user selects an investigation capability, supplies a target or query, and receives findings interactively and, for documented search options, optionally as saved results. The README documents a broad set of distinct investigations; these are implemented in the monolithic TS-OSINT.py, so related capabilities share that source path. The search_engines package provides a separate reusable multi-engine search and result-export layer. The available excerpts are partial, so links between individual menu options and internal routines are not expanded beyond documented behavior.

Main entry points: [`TS-OSINT.py`](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py) (Option dispatch), [`search_engines/engine.py`](https://github.com/trsi-me/ts-osint/blob/main/search_engines/engine.py) (Search engine), [`search_engines/multiple_search_engines.py`](https://github.com/trsi-me/ts-osint/blob/main/search_engines/multiple_search_engines.py) (Engine coordinator), [`search_engines/http_client.py`](https://github.com/trsi-me/ts-osint/blob/main/search_engines/http_client.py) (HTTP client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application flow"]
  node_menu["CLI menu<br/>[TS-OSINT.py]"]
  node_dispatch["Option dispatch<br/>[TS-OSINT.py]"]
end

subgraph group_identity["Identity research"]
  node_profile["Account profiles<br/>[TS-OSINT.py]"]
  node_username["Username lookup<br/>[TS-OSINT.py]"]
  node_email["Email lookup<br/>[TS-OSINT.py]"]
  node_phone["Phone lookup<br/>[TS-OSINT.py]"]
  node_vehicle["Vehicle lookup<br/>[TS-OSINT.py]"]
end

subgraph group_network["Network intelligence"]
  node_domain["Domain intelligence<br/>[TS-OSINT.py]"]
  node_ip["IP intelligence<br/>[TS-OSINT.py]"]
  node_localnet["Device networking<br/>[TS-OSINT.py]"]
  node_ports["Port scanning<br/>[TS-OSINT.py]"]
  node_mac["MAC lookup<br/>[TS-OSINT.py]"]
  node_image["Image metadata<br/>[TS-OSINT.py]"]
end

subgraph group_web["Web investigations"]
  node_scrape["Web scraping<br/>[TS-OSINT.py]"]
  node_login["Login discovery<br/>[TS-OSINT.py]"]
  node_vuln["Vulnerability checks<br/>[TS-OSINT.py]"]
  node_leaks["Exposure checks<br/>[TS-OSINT.py]"]
  node_cameras["Camera browsing<br/>[TS-OSINT.py]"]
end

subgraph group_search["Search package"]
  node_search_entry["Search options<br/>[TS-OSINT.py]"]
  node_multi["Engine coordinator"]
  node_engine["Search engine<br/>[engine.py]"]
  node_providers["Search providers"]
  node_http["HTTP client<br/>[http_client.py]"]
  node_results["Result collection<br/>[results.py]"]
  node_output["Result export<br/>[output.py]"]
end

node_user(("Operator"))
node_external_web(("External websites"))
node_external_net(("Network targets"))
node_external_search(("Search services"))

node_user -->|"selects options"| node_menu
node_menu -->|"dispatches choice"| node_dispatch
node_dispatch -->|"runs lookup"| node_profile
node_dispatch -->|"runs lookup"| node_username
node_dispatch -->|"runs lookup"| node_email
node_dispatch -->|"runs lookup"| node_phone
node_dispatch -->|"runs lookup"| node_vehicle
node_dispatch -->|"runs lookup"| node_domain
node_dispatch -->|"runs lookup"| node_ip
node_dispatch -->|"runs lookup"| node_localnet
node_dispatch -->|"runs lookup"| node_ports
node_dispatch -->|"runs lookup"| node_mac
node_dispatch -->|"runs lookup"| node_image
node_dispatch -->|"runs lookup"| node_scrape
node_dispatch -->|"runs lookup"| node_login
node_dispatch -->|"runs lookup"| node_vuln
node_dispatch -->|"runs lookup"| node_leaks
node_dispatch -->|"runs lookup"| node_cameras
node_dispatch -->|"runs search"| node_search_entry
node_domain -.->|"queries target"| node_external_web
node_ip -.->|"queries target"| node_external_net
node_ports -.->|"scans target"| node_external_net
node_scrape -.->|"fetches pages"| node_external_web
node_login -.->|"checks pages"| node_external_web
node_vuln -.->|"tests website"| node_external_web
node_cameras -.->|"browses cameras"| node_external_web
node_search_entry -->|"delegates search"| node_multi
node_multi -->|"runs engines"| node_engine
node_engine -->|"queries provider"| node_providers
node_engine -->|"requests pages"| node_http
node_http -->|"sends requests"| node_external_search
node_engine -->|"collects results"| node_results
node_multi -->|"formats output"| node_output

click node_menu "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_dispatch "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_profile "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_username "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_email "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_phone "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_vehicle "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_domain "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_ip "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_localnet "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_ports "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_mac "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_image "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_scrape "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_login "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_vuln "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_leaks "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_cameras "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_search_entry "https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py"
click node_multi "https://github.com/trsi-me/ts-osint/blob/main/search_engines/multiple_search_engines.py"
click node_engine "https://github.com/trsi-me/ts-osint/blob/main/search_engines/engine.py"
click node_providers "https://github.com/trsi-me/ts-osint/tree/main/search_engines/engines"
click node_http "https://github.com/trsi-me/ts-osint/blob/main/search_engines/http_client.py"
click node_results "https://github.com/trsi-me/ts-osint/blob/main/search_engines/results.py"
click node_output "https://github.com/trsi-me/ts-osint/blob/main/search_engines/output.py"

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_menu,node_dispatch toneBlue
class node_profile,node_username,node_email,node_phone,node_vehicle toneAmber
class node_domain,node_ip,node_localnet,node_ports,node_mac,node_image toneMint
class node_scrape,node_login,node_vuln,node_leaks,node_cameras toneRose
class node_search_entry,node_multi,node_engine,node_providers,node_http,node_results,node_output,node_user,node_external_web,node_external_net,node_external_search toneIndigo
```

## Components

### Application flow

- [CLI menu](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Option dispatch](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`

### Identity research

- [Account profiles](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Username lookup](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Email lookup](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Phone lookup](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Vehicle lookup](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`

### Network intelligence

- [Domain intelligence](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [IP intelligence](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Device networking](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Port scanning](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [MAC lookup](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Image metadata](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`

### Web investigations

- [Web scraping](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Login discovery](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Vulnerability checks](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Exposure checks](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Camera browsing](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`

### Search package

- [Search options](https://github.com/trsi-me/ts-osint/blob/main/TS-OSINT.py): `TS-OSINT.py`
- [Engine coordinator](https://github.com/trsi-me/ts-osint/blob/main/search_engines/multiple_search_engines.py): `search_engines/multiple_search_engines.py`
- [Search engine](https://github.com/trsi-me/ts-osint/blob/main/search_engines/engine.py): `search_engines/engine.py`
- [Search providers](https://github.com/trsi-me/ts-osint/tree/main/search_engines/engines): `search_engines/engines`
- [HTTP client](https://github.com/trsi-me/ts-osint/blob/main/search_engines/http_client.py): `search_engines/http_client.py`
- [Result collection](https://github.com/trsi-me/ts-osint/blob/main/search_engines/results.py): `search_engines/results.py`
- [Result export](https://github.com/trsi-me/ts-osint/blob/main/search_engines/output.py): `search_engines/output.py`

### Other components

- **Operator**
- **External websites**
- **Network targets**
- **Search services**

## Connections

- Operator → CLI menu: selects options
- CLI menu → Option dispatch: dispatches choice
- Option dispatch → Account profiles: runs lookup
- Option dispatch → Username lookup: runs lookup
- Option dispatch → Email lookup: runs lookup
- Option dispatch → Phone lookup: runs lookup
- Option dispatch → Vehicle lookup: runs lookup
- Option dispatch → Domain intelligence: runs lookup
- Option dispatch → IP intelligence: runs lookup
- Option dispatch → Device networking: runs lookup
- Option dispatch → Port scanning: runs lookup
- Option dispatch → MAC lookup: runs lookup
- Option dispatch → Image metadata: runs lookup
- Option dispatch → Web scraping: runs lookup
- Option dispatch → Login discovery: runs lookup
- Option dispatch → Vulnerability checks: runs lookup
- Option dispatch → Exposure checks: runs lookup
- Option dispatch → Camera browsing: runs lookup
- Option dispatch → Search options: runs search
- Domain intelligence → External websites: queries target
- IP intelligence → Network targets: queries target
- Port scanning → Network targets: scans target
- Web scraping → External websites: fetches pages
- Login discovery → External websites: checks pages
- Vulnerability checks → External websites: tests website
- Camera browsing → External websites: browses cameras
- Search options → Engine coordinator: delegates search
- Engine coordinator → Search engine: runs engines
- Search engine → Search providers: queries provider
- Search engine → HTTP client: requests pages
- HTTP client → Search services: sends requests
- Search engine → Result collection: collects results
- Engine coordinator → Result export: formats output
