# yogesh-ss7/orion_recon architecture

> Architecture diagram of the GitHub repository yogesh-ss7/orion_recon, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yogesh-ss7/orion_recon
- Repository: https://github.com/yogesh-ss7/orion_recon

## Overview

Recon Orion is a scope-constrained reconnaissance agent. An operator supplies a scope; the agent coordinates model-proposed tool calls, checks scope, and schedules execution; tool wrappers save raw results, which are parsed into structured findings and digests. Recon capabilities include passive discovery, live-host probing, crawling, JavaScript analysis, directory discovery, and URL-pattern filtering. The excerpts show the orchestration, execution, scope, and parsing boundaries; the README is empty, and unsampled source limits certainty about some runtime wiring.

Main entry points: [`tools.py`](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py) (CLI wrappers), [`agent.py`](https://github.com/yogesh-ss7/orion_recon/blob/main/agent.py) (Recon agent), [`ingest.py`](https://github.com/yogesh-ss7/orion_recon/blob/main/ingest.py) (Output parsers), [`executor.py`](https://github.com/yogesh-ss7/orion_recon/blob/main/executor.py) (Batch executor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Agent orchestration"]
  node_agent["Recon agent<br/>[agent.py]"]
end

subgraph group_controls["Scope and execution"]
  node_scope["Scope checker<br/>[scope.py]"]
  node_executor["Batch executor<br/>[executor.py]"]
end

subgraph group_recon["Recon capabilities"]
  node_tool_wrappers["CLI wrappers<br/>[tools.py]"]
  node_subdomain["Subdomain discovery<br/>[tools.py]"]
  node_archive_urls["Archived URL discovery<br/>[tools.py]"]
  node_live_probe["Live URL probing<br/>[tools.py]"]
  node_directory_scan["Directory discovery<br/>[tools.py]"]
  node_web_crawl["Web crawling<br/>[tools.py]"]
  node_js_discovery["JavaScript discovery<br/>[tools.py]"]
  node_js_analysis["JavaScript endpoints<br/>[tools.py]"]
  node_pattern_scan["Pattern scanning<br/>[tools.py]"]
  node_dedupe_wrapper["Pattern dedupe wrapper<br/>[tools.py]"]
end

subgraph group_results["Results processing"]
  node_dedupe["URL pattern dedupe<br/>[pattern_dedupe.py]"]
  node_ingest["Output parsers<br/>[ingest.py]"]
  node_raw_results["Raw tool outputs"]
  node_parsed_results["Parsed results"]
end

node_operator(("Operator"))
node_model(("Ollama model"))

node_operator -->|"starts run"| node_agent
node_agent -.->|"requests tool calls"| node_model
node_model -.->|"proposes calls"| node_agent
node_agent -->|"checks scope"| node_scope
node_agent -->|"submits calls"| node_executor
node_executor -->|"dispatches calls"| node_tool_wrappers
node_tool_wrappers -->|"runs subfinder"| node_subdomain
node_tool_wrappers -->|"runs gau"| node_archive_urls
node_tool_wrappers -->|"runs httpx"| node_live_probe
node_tool_wrappers -->|"runs ffuf"| node_directory_scan
node_tool_wrappers -->|"runs katana"| node_web_crawl
node_tool_wrappers -->|"runs getJS"| node_js_discovery
node_tool_wrappers -->|"runs linkfinder"| node_js_analysis
node_tool_wrappers -->|"runs gf"| node_pattern_scan
node_tool_wrappers -->|"runs dedupe"| node_dedupe_wrapper
node_live_probe -->|"confirms crawl targets"| node_web_crawl
node_web_crawl -->|"recommends next"| node_dedupe_wrapper
node_dedupe_wrapper -->|"invokes script"| node_dedupe
node_tool_wrappers -->|"writes raw output"| node_raw_results
node_agent -->|"parses tool output"| node_ingest
node_ingest -->|"reads raw output"| node_raw_results
node_ingest -->|"writes parsed output"| node_parsed_results
node_agent -->|"checks discoveries"| node_parsed_results

click node_agent "https://github.com/yogesh-ss7/orion_recon/blob/main/agent.py"
click node_scope "https://github.com/yogesh-ss7/orion_recon/blob/main/scope.py"
click node_executor "https://github.com/yogesh-ss7/orion_recon/blob/main/executor.py"
click node_tool_wrappers "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_subdomain "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_archive_urls "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_live_probe "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_directory_scan "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_web_crawl "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_js_discovery "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_js_analysis "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_pattern_scan "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_dedupe_wrapper "https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py"
click node_dedupe "https://github.com/yogesh-ss7/orion_recon/blob/main/pattern_dedupe.py"
click node_ingest "https://github.com/yogesh-ss7/orion_recon/blob/main/ingest.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_agent toneBlue
class node_scope,node_executor toneAmber
class node_tool_wrappers,node_subdomain,node_archive_urls,node_live_probe,node_directory_scan,node_web_crawl,node_js_discovery,node_js_analysis,node_pattern_scan,node_dedupe_wrapper toneMint
class node_dedupe,node_ingest,node_raw_results,node_parsed_results toneRose
class node_operator,node_model toneIndigo
```

## Components

### Agent orchestration

- [Recon agent](https://github.com/yogesh-ss7/orion_recon/blob/main/agent.py): `agent.py`

### Scope and execution

- [Scope checker](https://github.com/yogesh-ss7/orion_recon/blob/main/scope.py): `scope.py`
- [Batch executor](https://github.com/yogesh-ss7/orion_recon/blob/main/executor.py): `executor.py`

### Recon capabilities

- [CLI wrappers](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Subdomain discovery](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Archived URL discovery](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Live URL probing](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Directory discovery](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Web crawling](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [JavaScript discovery](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [JavaScript endpoints](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Pattern scanning](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`
- [Pattern dedupe wrapper](https://github.com/yogesh-ss7/orion_recon/blob/main/tools.py): `tools.py`

### Results processing

- [URL pattern dedupe](https://github.com/yogesh-ss7/orion_recon/blob/main/pattern_dedupe.py): `pattern_dedupe.py`
- [Output parsers](https://github.com/yogesh-ss7/orion_recon/blob/main/ingest.py): `ingest.py`
- **Raw tool outputs**
- **Parsed results**

### Other components

- **Operator**
- **Ollama model**

## Connections

- Operator → Recon agent: starts run (evidence: `agent.py`)
- Recon agent → Ollama model: requests tool calls
- Ollama model → Recon agent: proposes calls
- Recon agent → Scope checker: checks scope (evidence: `agent.py`)
- Recon agent → Batch executor: submits calls (evidence: `agent.py`)
- Batch executor → CLI wrappers: dispatches calls (evidence: `executor.py`)
- CLI wrappers → Subdomain discovery: runs subfinder (evidence: `tools.py`)
- CLI wrappers → Archived URL discovery: runs gau (evidence: `tools.py`)
- CLI wrappers → Live URL probing: runs httpx (evidence: `tools.py`)
- CLI wrappers → Directory discovery: runs ffuf (evidence: `tools.py`)
- CLI wrappers → Web crawling: runs katana (evidence: `tools.py`)
- CLI wrappers → JavaScript discovery: runs getJS (evidence: `tools.py`)
- CLI wrappers → JavaScript endpoints: runs linkfinder (evidence: `tools.py`)
- CLI wrappers → Pattern scanning: runs gf (evidence: `tools.py`)
- CLI wrappers → Pattern dedupe wrapper: runs dedupe (evidence: `tools.py`)
- Live URL probing → Web crawling: confirms crawl targets (evidence: `tools.py`)
- Web crawling → Pattern dedupe wrapper: recommends next (evidence: `tools.py`)
- Pattern dedupe wrapper → URL pattern dedupe: invokes script (evidence: `tools.py`)
- CLI wrappers → Raw tool outputs: writes raw output (evidence: `tools.py`)
- Recon agent → Output parsers: parses tool output (evidence: `agent.py`)
- Output parsers → Raw tool outputs: reads raw output (evidence: `ingest.py`)
- Output parsers → Parsed results: writes parsed output (evidence: `ingest.py`)
- Recon agent → Parsed results: checks discoveries (evidence: `agent.py`)
