# aegis-timothytimes/osint-panel architecture

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

- Interactive diagram: https://gitdiagram.com/aegis-timothytimes/osint-panel
- Repository: https://github.com/aegis-timothytimes/osint-panel

## Overview

AEGIS OSINT Panel is a Linux desktop control panel for running OSINT tools and building shareable case dossiers. Operators log in, enter identifiers, then either run individual tools or build a dossier; the panel enforces grants and presents live output. The dossier engine gathers results and attachments, records gaps, and produces Markdown/HTML reports for export. The README documents additional capabilities whose detailed implementation is not fully sampled, so those links are shown only where the documented workflow supports them.

Main entry points: [`panel.py`](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py) (Dossier controls), [`users.py`](https://github.com/aegis-timothytimes/osint-panel/blob/main/users.py) (Login and grants), [`dossier.py`](https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py) (Dossier engine), [`keys.py`](https://github.com/aegis-timothytimes/osint-panel/blob/main/keys.py) (API key vault)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_panel["Panel"]
  node_desktop["Panel UI<br/>[panel.py]"]
  node_login["Login and grants<br/>[users.py]"]
  node_console["Live console<br/>[panel.py]"]
  node_keys_ui["Keys tab<br/>[panel.py]"]
  node_systemtab["System telemetry<br/>[panel.py]"]
end

subgraph group_collection["Collection"]
  node_toolcards["Tool cards<br/>[panel.py]"]
  node_dorks["Dork search<br/>[panel.py]"]
  node_toolkit["OSINT tools"]
  node_searchengines["Search engines"]
end

subgraph group_dossier["Dossier"]
  node_dossier_ui["Dossier controls<br/>[panel.py]"]
  node_engine["Dossier engine<br/>[dossier.py]"]
  node_attachments["Notes and attachments<br/>[dossier.py]"]
  node_reports["Compiled reports<br/>[dossier.py]"]
end

subgraph group_state["Local state"]
  node_casefiles["Case files"]
  node_keyvault[("API key vault<br/>[keys.py]")]
  node_toolconfigs[("Tool API configs<br/>[keys.py]")]
  node_userstore[("Operator accounts<br/>[users.py]")]
end

node_operator(("Operator"))

node_operator -->|"uses"| node_desktop
node_desktop -->|"authenticates"| node_login
node_login -->|"reads/writes"| node_userstore
node_desktop -->|"shows"| node_toolcards
node_toolcards -->|"checks grants"| node_login
node_toolcards -->|"streams output"| node_console
node_toolcards -->|"launches"| node_toolkit
node_operator -->|"selects dork"| node_dorks
node_dorks -->|"opens query"| node_searchengines
node_operator -->|"enters case"| node_dossier_ui
node_dossier_ui -->|"checks access"| node_login
node_dossier_ui -->|"starts build"| node_engine
node_dossier_ui -->|"passes notes/files"| node_attachments
node_engine -->|"runs collection"| node_toolkit
node_engine -->|"writes raw results"| node_casefiles
node_engine -->|"compiles"| node_reports
node_dossier_ui -->|"reopens/exports"| node_casefiles
node_operator -->|"manages keys"| node_keys_ui
node_keys_ui -->|"checks access"| node_login
node_keys_ui -->|"loads/saves"| node_keyvault
node_keys_ui -->|"deploys keys"| node_toolconfigs
node_operator -->|"views status"| node_systemtab

click node_desktop "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py"
click node_login "https://github.com/aegis-timothytimes/osint-panel/blob/main/users.py"
click node_toolcards "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py"
click node_console "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py"
click node_dorks "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py"
click node_dossier_ui "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py"
click node_engine "https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py"
click node_attachments "https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py"
click node_reports "https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py"
click node_keys_ui "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py"
click node_keyvault "https://github.com/aegis-timothytimes/osint-panel/blob/main/keys.py"
click node_toolconfigs "https://github.com/aegis-timothytimes/osint-panel/blob/main/keys.py"
click node_userstore "https://github.com/aegis-timothytimes/osint-panel/blob/main/users.py"
click node_systemtab "https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.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_desktop,node_login,node_console,node_keys_ui,node_systemtab toneBlue
class node_toolcards,node_dorks,node_toolkit,node_searchengines toneAmber
class node_dossier_ui,node_engine,node_attachments,node_reports toneMint
class node_casefiles,node_keyvault,node_toolconfigs,node_userstore toneRose
class node_operator toneIndigo
```

## Components

### Panel

- [Panel UI](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`
- [Login and grants](https://github.com/aegis-timothytimes/osint-panel/blob/main/users.py): `users.py`
- [Live console](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`
- [Keys tab](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`
- [System telemetry](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`

### Collection

- [Tool cards](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`
- [Dork search](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`
- **OSINT tools**
- **Search engines**

### Dossier

- [Dossier controls](https://github.com/aegis-timothytimes/osint-panel/blob/main/panel.py): `panel.py`
- [Dossier engine](https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py): `dossier.py`
- [Notes and attachments](https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py): `dossier.py`
- [Compiled reports](https://github.com/aegis-timothytimes/osint-panel/blob/main/dossier.py): `dossier.py`

### Local state

- **Case files**
- [API key vault](https://github.com/aegis-timothytimes/osint-panel/blob/main/keys.py): `keys.py`
- [Tool API configs](https://github.com/aegis-timothytimes/osint-panel/blob/main/keys.py): `keys.py`
- [Operator accounts](https://github.com/aegis-timothytimes/osint-panel/blob/main/users.py): `users.py`

### Other components

- **Operator**

## Connections

- Operator → Panel UI: uses
- Panel UI → Login and grants: authenticates
- Login and grants → Operator accounts: reads/writes
- Panel UI → Tool cards: shows
- Tool cards → Login and grants: checks grants
- Tool cards → Live console: streams output
- Tool cards → OSINT tools: launches
- Operator → Dork search: selects dork
- Dork search → Search engines: opens query
- Operator → Dossier controls: enters case
- Dossier controls → Login and grants: checks access
- Dossier controls → Dossier engine: starts build
- Dossier controls → Notes and attachments: passes notes/files
- Dossier engine → OSINT tools: runs collection
- Dossier engine → Case files: writes raw results
- Dossier engine → Compiled reports: compiles
- Dossier controls → Case files: reopens/exports
- Operator → Keys tab: manages keys
- Keys tab → Login and grants: checks access
- Keys tab → API key vault: loads/saves
- Keys tab → Tool API configs: deploys keys
- Operator → System telemetry: views status
