# outstandingom/ctf-agent-orchestrator architecture

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

- Interactive diagram: https://gitdiagram.com/outstandingom/ctf-agent-orchestrator
- Repository: https://github.com/outstandingom/ctf-agent-orchestrator

## Overview

The repository is a CTF AI orchestration command center: users submit a challenge through the dashboard/API, then the orchestrator routes work to specialist tools and returns findings or a solution. Its broader documented capabilities include crypto and symbolic solving, forensics, browser/web analysis, knowledge retrieval, competition monitoring, and software patching. The Apex Gauntlet and Quantum Vault are companion challenge applications with solvers. Some integrations and agent subsystems are documented but not fully sampled, so those links rely on README evidence.

Main entry points: [`agent.py`](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py) (Tool Router), [`server.py`](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/server.py) (Dashboard API), [`challenges/apex_gauntlet/solvers/solve_full_chain.py`](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/solvers/solve_full_chain.py) (Apex Chain Solver), [`challenges/apex_gauntlet/solvers/solve_playwright_interactive.py`](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/solvers/solve_playwright_interactive.py) (Apex Browser Solver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Command Center"]
  node_dashboard["Dashboard API<br/>[server.py]"]
  node_challenge_upload["Challenge Upload<br/>[server.py]"]
end

subgraph group_orchestration["Agent Orchestration"]
  node_orchestrator["CTF Agent<br/>[agent.py]"]
  node_tool_router["Tool Router<br/>[agent.py]"]
  node_llm_reasoning["LLM Reasoning<br/>[agent.py]"]
  node_patching["SWE Patch Tools<br/>[agent.py]"]
end

subgraph group_analysis["Challenge Analysis"]
  node_crypto["Crypto Solvers<br/>[agent.py]"]
  node_symbolic["SMT Solver<br/>[agent.py]"]
  node_web_fuzz["Web Fuzzing<br/>[agent.py]"]
  node_browser["Browser Automation<br/>[agent.py]"]
  node_forensics["Forensics Engine<br/>[agent.py]"]
  node_sandbox["Python Sandbox<br/>[agent.py]"]
  node_binary_analysis["Binary Analysis<br/>[agent.py]"]
end

subgraph group_knowledge["Knowledge And Integrations"]
  node_rag["Vector RAG<br/>[agent.py]"]
  node_knowledge_graph[("Knowledge Graph")]
  node_ctfd["CTFd Monitor<br/>[agent.py]"]
  node_mcp["MCP Gateway<br/>[agent.py]"]
  node_telemetry[("Solve Ledger<br/>[agent.py]")]
end

subgraph group_challenges["Challenge Labs"]
  node_apex_service["Apex Gauntlet<br/>[app.py]"]
  node_apex_solver["Apex Chain Solver"]
  node_apex_browser_solver["Apex Browser Solver"]
  node_vault_service["Quantum Vault<br/>[app.py]"]
  node_vault_solver["Vault Exploit Solver<br/>[solve_ssti.py]"]
  node_vault_z3["Vault Z3 Solver"]
end

node_user(("CTF Operator"))

node_user -->|"submits challenge"| node_dashboard
node_dashboard -->|"accepts files"| node_challenge_upload
node_dashboard -->|"invokes tools"| node_orchestrator
node_challenge_upload -.->|"provides challenge"| node_orchestrator
node_orchestrator -->|"routes requests"| node_tool_router
node_orchestrator -->|"reasons over task"| node_llm_reasoning
node_tool_router -->|"dispatches attacks"| node_crypto
node_tool_router -->|"dispatches constraints"| node_symbolic
node_tool_router -->|"dispatches probes"| node_web_fuzz
node_tool_router -->|"dispatches browser work"| node_browser
node_tool_router -->|"dispatches inspection"| node_forensics
node_tool_router -->|"executes code"| node_sandbox
node_tool_router -.->|"dispatches analysis"| node_binary_analysis
node_tool_router -->|"searches knowledge"| node_rag
node_rag -.->|"retrieves campaign state"| node_knowledge_graph
node_tool_router -.->|"monitors competitions"| node_ctfd
node_tool_router -->|"requests remote operations"| node_mcp
node_orchestrator -->|"records solves"| node_telemetry
node_tool_router -->|"dispatches patches"| node_patching
node_apex_solver -->|"requests stage APIs"| node_apex_service
node_apex_solver -->|"invokes solving tools"| node_orchestrator
node_apex_browser_solver -->|"drives challenge UI"| node_apex_service
node_apex_browser_solver -->|"invokes solving tools"| node_orchestrator
node_vault_solver -->|"solves passcode"| node_vault_z3
node_vault_solver -->|"submits exploit requests"| node_vault_service
node_vault_z3 -.->|"derives unlock code"| node_vault_service

click node_dashboard "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/server.py"
click node_challenge_upload "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/server.py"
click node_orchestrator "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_tool_router "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_llm_reasoning "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_crypto "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_symbolic "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_web_fuzz "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_browser "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_forensics "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_sandbox "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_binary_analysis "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_rag "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_ctfd "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_mcp "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_telemetry "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_patching "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py"
click node_apex_service "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/app.py"
click node_apex_solver "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/solvers/solve_full_chain.py"
click node_apex_browser_solver "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/solvers/solve_playwright_interactive.py"
click node_vault_service "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/quantum_vault/app.py"
click node_vault_solver "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/quantum_vault/solvers/solve_ssti.py"
click node_vault_z3 "https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/quantum_vault/solvers/solve_z3_passcode.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_dashboard,node_challenge_upload toneBlue
class node_orchestrator,node_tool_router,node_llm_reasoning,node_patching toneAmber
class node_crypto,node_symbolic,node_web_fuzz,node_browser,node_forensics,node_sandbox,node_binary_analysis toneMint
class node_rag,node_knowledge_graph,node_ctfd,node_mcp,node_telemetry toneRose
class node_apex_service,node_apex_solver,node_apex_browser_solver,node_vault_service,node_vault_solver,node_vault_z3,node_user toneIndigo
```

## Components

### Command Center

- [Dashboard API](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/server.py): `server.py`
- [Challenge Upload](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/server.py): `server.py`

### Agent Orchestration

- [CTF Agent](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Tool Router](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [LLM Reasoning](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [SWE Patch Tools](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`

### Challenge Analysis

- [Crypto Solvers](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [SMT Solver](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Web Fuzzing](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Browser Automation](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Forensics Engine](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Python Sandbox](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Binary Analysis](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`

### Knowledge And Integrations

- [Vector RAG](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- **Knowledge Graph**
- [CTFd Monitor](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [MCP Gateway](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`
- [Solve Ledger](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/agent.py): `agent.py`

### Challenge Labs

- [Apex Gauntlet](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/app.py): `challenges/apex_gauntlet/app.py`
- [Apex Chain Solver](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/solvers/solve_full_chain.py): `challenges/apex_gauntlet/solvers/solve_full_chain.py`
- [Apex Browser Solver](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/apex_gauntlet/solvers/solve_playwright_interactive.py): `challenges/apex_gauntlet/solvers/solve_playwright_interactive.py`
- [Quantum Vault](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/quantum_vault/app.py): `challenges/quantum_vault/app.py`
- [Vault Exploit Solver](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/quantum_vault/solvers/solve_ssti.py): `challenges/quantum_vault/solvers/solve_ssti.py`
- [Vault Z3 Solver](https://github.com/outstandingom/ctf-agent-orchestrator/blob/main/challenges/quantum_vault/solvers/solve_z3_passcode.py): `challenges/quantum_vault/solvers/solve_z3_passcode.py`

### Other components

- **CTF Operator**

## Connections

- CTF Operator → Dashboard API: submits challenge (evidence: `README.md`)
- Dashboard API → Challenge Upload: accepts files (evidence: `server.py`)
- Dashboard API → CTF Agent: invokes tools (evidence: `server.py`)
- Challenge Upload → CTF Agent: provides challenge (evidence: `server.py`)
- CTF Agent → Tool Router: routes requests (evidence: `README.md`)
- CTF Agent → LLM Reasoning: reasons over task (evidence: `README.md`)
- Tool Router → Crypto Solvers: dispatches attacks (evidence: `README.md`)
- Tool Router → SMT Solver: dispatches constraints (evidence: `README.md`)
- Tool Router → Web Fuzzing: dispatches probes (evidence: `README.md`)
- Tool Router → Browser Automation: dispatches browser work (evidence: `README.md`)
- Tool Router → Forensics Engine: dispatches inspection (evidence: `README.md`)
- Tool Router → Python Sandbox: executes code (evidence: `README.md`)
- Tool Router → Binary Analysis: dispatches analysis (evidence: `agent.py`)
- Tool Router → Vector RAG: searches knowledge (evidence: `agent.py`)
- Vector RAG → Knowledge Graph: retrieves campaign state
- Tool Router → CTFd Monitor: monitors competitions (evidence: `README.md`)
- Tool Router → MCP Gateway: requests remote operations (evidence: `agent.py`)
- CTF Agent → Solve Ledger: records solves (evidence: `agent.py`)
- Tool Router → SWE Patch Tools: dispatches patches (evidence: `agent.py`)
- Apex Chain Solver → Apex Gauntlet: requests stage APIs (evidence: `challenges/apex_gauntlet/solvers/solve_full_chain.py`)
- Apex Chain Solver → CTF Agent: invokes solving tools (evidence: `challenges/apex_gauntlet/solvers/solve_full_chain.py`)
- Apex Browser Solver → Apex Gauntlet: drives challenge UI (evidence: `challenges/apex_gauntlet/solvers/solve_playwright_interactive.py`)
- Apex Browser Solver → CTF Agent: invokes solving tools (evidence: `challenges/apex_gauntlet/solvers/solve_playwright_interactive.py`)
- Vault Exploit Solver → Vault Z3 Solver: solves passcode (evidence: `challenges/quantum_vault/solvers/solve_ssti.py`)
- Vault Exploit Solver → Quantum Vault: submits exploit requests (evidence: `challenges/quantum_vault/solvers/solve_ssti.py`)
- Vault Z3 Solver → Quantum Vault: derives unlock code
