# nukeratframework/nukerat architecture

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

- Interactive diagram: https://gitdiagram.com/nukeratframework/nukerat
- Repository: https://github.com/nukeratframework/nukerat

## Overview

NukeRat is a post-exploitation and red-team operations framework. Operators use its desktop console to manage servers and listeners, inspect hosts and activity, and access tasking and reporting tools; implants communicate through server-side listeners, while a NukeScripts worker supports command validation and automation. The graph groups the console, API/domain services, runtime infrastructure, and implant capabilities. The README documents broad capabilities, but many implementation paths were not sampled, so uncertain integrations are shown as dashed links rather than asserted call chains.

Main entry points: [`server/core/server.py`](https://github.com/nukeratframework/nukerat/blob/main/server/core/server.py) (Admin API), [`server/infra/database/database.py`](https://github.com/nukeratframework/nukerat/blob/main/server/infra/database/database.py) (SQLite Store), [`client/gui/src/components/canva/main.tsx`](https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/components/canva/main.tsx) (Console Workspace), [`server/infra/listeners/http/manage.py`](https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/http/manage.py) (HTTP Listener)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Operator Console"]
  node_desktop["Desktop Shell<br/>[app.tsx]"]
  node_console_ui["Console Workspace<br/>[main.tsx]"]
  node_console_state["Workspace State<br/>[logic.tsx]"]
  node_topbar["Operations Panels"]
  node_workspace["Host Workspaces"]
  node_client_api["Client API"]
end

subgraph group_services["API and Domain Services"]
  node_admin_api["Admin API<br/>[server.py]"]
  node_domain["Domain Services"]
  node_queue["Task Queue<br/>[querys.py]"]
end

subgraph group_runtime["Server Runtime"]
  node_database[("SQLite Store<br/>[database.py]")]
  node_http_listener["HTTP Listener<br/>[manage.py]"]
  node_file_listener["File Server<br/>[manage.py]"]
  node_port_forward["Port Forwarding<br/>[manage.py]"]
  node_socks["SOCKS Listener<br/>[manage.py]"]
  node_logging["Logging<br/>[create_log.py]"]
end

subgraph group_implant["Implant Runtime"]
  node_mac_loader["macOS Loader"]
  node_mac_stageless["macOS Stageless"]
end

subgraph group_automation["Automation and Reporting"]
  node_nukescripts["NukeScripts Worker<br/>[main.py]"]
  node_reports["Reports"]
  node_agents["AI Agents"]
end

node_operator(("Operator"))

node_operator -.->|"opens"| node_desktop
node_desktop -.->|"renders"| node_console_ui
node_console_ui -->|"uses"| node_console_state
node_console_ui -->|"renders"| node_topbar
node_console_ui -->|"renders"| node_workspace
node_console_state -->|"fetches"| node_client_api
node_client_api -.->|"requests"| node_admin_api
node_admin_api -.->|"routes to"| node_domain
node_domain -.->|"reads and writes"| node_database
node_domain -.->|"tasking"| node_queue
node_http_listener -->|"persists listener state"| node_database
node_file_listener -->|"uses"| node_database
node_port_forward -->|"uses"| node_database
node_port_forward -->|"bridges to"| node_socks
node_admin_api -->|"starts"| node_http_listener
node_admin_api -->|"starts"| node_file_listener
node_admin_api -->|"starts"| node_port_forward
node_admin_api -->|"starts"| node_socks
node_mac_loader -.->|"communicates through"| node_http_listener
node_mac_stageless -.->|"communicates through"| node_http_listener
node_admin_api -->|"starts worker"| node_nukescripts
node_nukescripts -->|"reads and updates"| node_database
node_admin_api -.->|"exposes"| node_reports
node_admin_api -.->|"exposes"| node_agents

click node_desktop "https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/app.tsx"
click node_console_ui "https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/components/canva/main.tsx"
click node_console_state "https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/components/canva/logic.tsx"
click node_topbar "https://github.com/nukeratframework/nukerat/tree/main/client/gui/src/components/canva/topbar"
click node_workspace "https://github.com/nukeratframework/nukerat/tree/main/client/gui/src/components/canva/workspace"
click node_client_api "https://github.com/nukeratframework/nukerat/tree/main/client/gui/src/api"
click node_admin_api "https://github.com/nukeratframework/nukerat/blob/main/server/core/server.py"
click node_domain "https://github.com/nukeratframework/nukerat/tree/main/server/core/logic"
click node_queue "https://github.com/nukeratframework/nukerat/blob/main/server/core/utils/querys.py"
click node_database "https://github.com/nukeratframework/nukerat/blob/main/server/infra/database/database.py"
click node_http_listener "https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/http/manage.py"
click node_file_listener "https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/file_server/manage.py"
click node_port_forward "https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/port_forward/manage.py"
click node_socks "https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/socks/manage.py"
click node_mac_loader "https://github.com/nukeratframework/nukerat/tree/main/implants/mac/loader"
click node_mac_stageless "https://github.com/nukeratframework/nukerat/tree/main/implants/mac/stageless"
click node_nukescripts "https://github.com/nukeratframework/nukerat/blob/main/server/workers/nukescripts/main.py"
click node_reports "https://github.com/nukeratframework/nukerat/tree/main/server/core/logic/reports"
click node_agents "https://github.com/nukeratframework/nukerat/tree/main/server/core/logic/agents"
click node_logging "https://github.com/nukeratframework/nukerat/blob/main/server/infra/general/create_log.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_console_ui,node_console_state,node_topbar,node_workspace,node_client_api toneBlue
class node_admin_api,node_domain,node_queue toneAmber
class node_database,node_http_listener,node_file_listener,node_port_forward,node_socks,node_logging toneMint
class node_mac_loader,node_mac_stageless toneRose
class node_nukescripts,node_reports,node_agents,node_operator toneIndigo
```

## Components

### Operator Console

- [Desktop Shell](https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/app.tsx): `client/gui/src/app.tsx`
- [Console Workspace](https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/components/canva/main.tsx): `client/gui/src/components/canva/main.tsx`
- [Workspace State](https://github.com/nukeratframework/nukerat/blob/main/client/gui/src/components/canva/logic.tsx): `client/gui/src/components/canva/logic.tsx`
- [Operations Panels](https://github.com/nukeratframework/nukerat/tree/main/client/gui/src/components/canva/topbar): `client/gui/src/components/canva/topbar`
- [Host Workspaces](https://github.com/nukeratframework/nukerat/tree/main/client/gui/src/components/canva/workspace): `client/gui/src/components/canva/workspace`
- [Client API](https://github.com/nukeratframework/nukerat/tree/main/client/gui/src/api): `client/gui/src/api`

### API and Domain Services

- [Admin API](https://github.com/nukeratframework/nukerat/blob/main/server/core/server.py): `server/core/server.py`
- [Domain Services](https://github.com/nukeratframework/nukerat/tree/main/server/core/logic): `server/core/logic`
- [Task Queue](https://github.com/nukeratframework/nukerat/blob/main/server/core/utils/querys.py): `server/core/utils/querys.py`

### Server Runtime

- [SQLite Store](https://github.com/nukeratframework/nukerat/blob/main/server/infra/database/database.py): `server/infra/database/database.py`
- [HTTP Listener](https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/http/manage.py): `server/infra/listeners/http/manage.py`
- [File Server](https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/file_server/manage.py): `server/infra/listeners/file_server/manage.py`
- [Port Forwarding](https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/port_forward/manage.py): `server/infra/listeners/port_forward/manage.py`
- [SOCKS Listener](https://github.com/nukeratframework/nukerat/blob/main/server/infra/listeners/socks/manage.py): `server/infra/listeners/socks/manage.py`
- [Logging](https://github.com/nukeratframework/nukerat/blob/main/server/infra/general/create_log.py): `server/infra/general/create_log.py`

### Implant Runtime

- [macOS Loader](https://github.com/nukeratframework/nukerat/tree/main/implants/mac/loader): `implants/mac/loader`
- [macOS Stageless](https://github.com/nukeratframework/nukerat/tree/main/implants/mac/stageless): `implants/mac/stageless`

### Automation and Reporting

- [NukeScripts Worker](https://github.com/nukeratframework/nukerat/blob/main/server/workers/nukescripts/main.py): `server/workers/nukescripts/main.py`
- [Reports](https://github.com/nukeratframework/nukerat/tree/main/server/core/logic/reports): `server/core/logic/reports`
- [AI Agents](https://github.com/nukeratframework/nukerat/tree/main/server/core/logic/agents): `server/core/logic/agents`

### Other components

- **Operator**

## Connections

- Operator → Desktop Shell: opens (evidence: `README.md`)
- Desktop Shell → Console Workspace: renders
- Console Workspace → Workspace State: uses (evidence: `client/gui/src/components/canva/main.tsx`)
- Console Workspace → Operations Panels: renders (evidence: `client/gui/src/components/canva/main.tsx`)
- Console Workspace → Host Workspaces: renders (evidence: `client/gui/src/components/canva/main.tsx`)
- Workspace State → Client API: fetches (evidence: `client/gui/src/components/canva/logic.tsx`)
- Client API → Admin API: requests
- Admin API → Domain Services: routes to (evidence: `server/core/server.py`)
- Domain Services → SQLite Store: reads and writes
- Domain Services → Task Queue: tasking
- HTTP Listener → SQLite Store: persists listener state (evidence: `server/infra/listeners/http/manage.py`)
- File Server → SQLite Store: uses (evidence: `server/infra/listeners/file_server/manage.py`)
- Port Forwarding → SQLite Store: uses (evidence: `server/infra/listeners/port_forward/manage.py`)
- Port Forwarding → SOCKS Listener: bridges to (evidence: `server/infra/listeners/port_forward/manage.py`)
- Admin API → HTTP Listener: starts (evidence: `server/core/server.py`)
- Admin API → File Server: starts (evidence: `server/core/server.py`)
- Admin API → Port Forwarding: starts (evidence: `server/core/server.py`)
- Admin API → SOCKS Listener: starts (evidence: `server/core/server.py`)
- macOS Loader → HTTP Listener: communicates through
- macOS Stageless → HTTP Listener: communicates through
- Admin API → NukeScripts Worker: starts worker (evidence: `server/core/server.py`)
- NukeScripts Worker → SQLite Store: reads and updates
- Admin API → Reports: exposes
- Admin API → AI Agents: exposes
