# smittix/intercept architecture

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

- Interactive diagram: https://gitdiagram.com/smittix/intercept
- Repository: https://github.com/smittix/intercept
- Video tour (about a minute): https://gitdiagram.com/smittix/intercept/video

## Overview

INTERCEPT is a web-based signal-intelligence platform: users select a monitoring mode, the server controls or receives data from radio and network sensors, and the interface presents decoded messages, tracks, alerts, and analysis. The map captures the major documented capabilities and shared event handling. Several feature implementations are represented by their enclosing directories because their source was not sampled; those links are limited to documented behavior.

Main entry points: [`app.py`](https://github.com/smittix/intercept/blob/main/app.py) (Flask application), [`static/js/core/app.js`](https://github.com/smittix/intercept/blob/main/static/js/core/app.js) (Web interface), [`utils/event_pipeline.py`](https://github.com/smittix/intercept/blob/main/utils/event_pipeline.py) (Event pipeline), [`static/js/modes`](https://github.com/smittix/intercept/tree/main/static/js/modes) (Mode dashboards)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_browser["Web interface<br/>[app.js]"]
  node_modeui["Mode dashboards"]
  node_server["Flask application<br/>[app.py]"]
  node_settings["Settings and offline"]
end

subgraph group_reception["Signal reception"]
  node_sensor["Sensor and meter decoding<br/>[sensor.py]"]
  node_listening["Listening post"]
  node_subghz["Sub-GHz analysis<br/>[subghz.py]"]
end

subgraph group_tracking["Tracking and decoding"]
  node_aircraft["Aircraft and ACARS<br/>[adsb.py]"]
  node_maritime["Maritime and APRS<br/>[ais.py]"]
  node_satellite["Satellite and weather<br/>[satellite.py]"]
  node_radio["Radio message modes<br/>[pager.py]"]
  node_mesh["Mesh networks<br/>[meshtastic.py]"]
  node_space["Space weather and stations<br/>[space_weather.py]"]
end

subgraph group_security["Security and field tools"]
  node_wifi_bt["WiFi and Bluetooth<br/>[wifi.py]"]
  node_tscm["TSCM surveys"]
  node_drone["Drone intelligence<br/>[drone.py]"]
  node_locate["Device location<br/>[bt_locate.py]"]
end

subgraph group_shared["Shared services"]
  node_pipeline["Event pipeline<br/>[event_pipeline.py]"]
  node_store[("Persistent state<br/>[database.py]")]
  node_agents["Remote agents<br/>[controller.py]"]
  node_agentclient["Agent HTTP client<br/>[agent_client.py]"]
  node_alerts["Alerts and recordings<br/>[alerts.py]"]
end

node_operator(("Operator"))

node_operator -->|"uses"| node_browser
node_browser -->|"sends requests"| node_server
node_browser -->|"selects mode"| node_modeui
node_browser -->|"configures"| node_settings
node_server -->|"routes requests"| node_sensor
node_server -->|"routes requests"| node_listening
node_server -->|"routes requests"| node_subghz
node_server -->|"routes requests"| node_wifi_bt
node_server -->|"routes requests"| node_tscm
node_server -->|"routes requests"| node_drone
node_server -->|"routes requests"| node_locate
node_server -->|"routes requests"| node_aircraft
node_server -->|"routes requests"| node_maritime
node_server -->|"routes requests"| node_satellite
node_server -->|"routes requests"| node_radio
node_server -->|"routes requests"| node_mesh
node_server -->|"routes requests"| node_space
node_sensor -->|"submits events"| node_pipeline
node_aircraft -->|"submits events"| node_pipeline
node_pipeline -->|"processes events"| node_alerts
node_pipeline -->|"records events"| node_store
node_server -->|"reads and writes"| node_store
node_server -->|"routes requests"| node_agents
node_agents -->|"calls"| node_agentclient
node_modeui -->|"requests mode data"| node_server

click node_browser "https://github.com/smittix/intercept/blob/main/static/js/core/app.js"
click node_modeui "https://github.com/smittix/intercept/tree/main/static/js/modes"
click node_server "https://github.com/smittix/intercept/blob/main/app.py"
click node_settings "https://github.com/smittix/intercept/blob/main/static/js/core/settings-manager.js"
click node_sensor "https://github.com/smittix/intercept/blob/main/routes/sensor.py"
click node_listening "https://github.com/smittix/intercept/tree/main/routes/listening_post"
click node_subghz "https://github.com/smittix/intercept/blob/main/routes/subghz.py"
click node_wifi_bt "https://github.com/smittix/intercept/blob/main/routes/wifi.py"
click node_tscm "https://github.com/smittix/intercept/tree/main/routes/tscm"
click node_drone "https://github.com/smittix/intercept/blob/main/routes/drone.py"
click node_locate "https://github.com/smittix/intercept/blob/main/routes/bt_locate.py"
click node_aircraft "https://github.com/smittix/intercept/blob/main/routes/adsb.py"
click node_maritime "https://github.com/smittix/intercept/blob/main/routes/ais.py"
click node_satellite "https://github.com/smittix/intercept/blob/main/routes/satellite.py"
click node_radio "https://github.com/smittix/intercept/blob/main/routes/pager.py"
click node_mesh "https://github.com/smittix/intercept/blob/main/routes/meshtastic.py"
click node_space "https://github.com/smittix/intercept/blob/main/routes/space_weather.py"
click node_pipeline "https://github.com/smittix/intercept/blob/main/utils/event_pipeline.py"
click node_store "https://github.com/smittix/intercept/blob/main/utils/database.py"
click node_agents "https://github.com/smittix/intercept/blob/main/routes/controller.py"
click node_agentclient "https://github.com/smittix/intercept/blob/main/utils/agent_client.py"
click node_alerts "https://github.com/smittix/intercept/blob/main/utils/alerts.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_browser,node_modeui,node_server,node_settings toneBlue
class node_sensor,node_listening,node_subghz toneAmber
class node_aircraft,node_maritime,node_satellite,node_radio,node_mesh,node_space toneMint
class node_wifi_bt,node_tscm,node_drone,node_locate toneRose
class node_pipeline,node_store,node_agents,node_agentclient,node_alerts,node_operator toneIndigo
```

## Components

### Web interface

- [Web interface](https://github.com/smittix/intercept/blob/main/static/js/core/app.js): `static/js/core/app.js`
- [Mode dashboards](https://github.com/smittix/intercept/tree/main/static/js/modes): `static/js/modes`
- [Flask application](https://github.com/smittix/intercept/blob/main/app.py): `app.py`
- [Settings and offline](https://github.com/smittix/intercept/blob/main/static/js/core/settings-manager.js): `static/js/core/settings-manager.js`

### Signal reception

- [Sensor and meter decoding](https://github.com/smittix/intercept/blob/main/routes/sensor.py): `routes/sensor.py`
- [Listening post](https://github.com/smittix/intercept/tree/main/routes/listening_post): `routes/listening_post`
- [Sub-GHz analysis](https://github.com/smittix/intercept/blob/main/routes/subghz.py): `routes/subghz.py`

### Tracking and decoding

- [Aircraft and ACARS](https://github.com/smittix/intercept/blob/main/routes/adsb.py): `routes/adsb.py`
- [Maritime and APRS](https://github.com/smittix/intercept/blob/main/routes/ais.py): `routes/ais.py`
- [Satellite and weather](https://github.com/smittix/intercept/blob/main/routes/satellite.py): `routes/satellite.py`
- [Radio message modes](https://github.com/smittix/intercept/blob/main/routes/pager.py): `routes/pager.py`
- [Mesh networks](https://github.com/smittix/intercept/blob/main/routes/meshtastic.py): `routes/meshtastic.py`
- [Space weather and stations](https://github.com/smittix/intercept/blob/main/routes/space_weather.py): `routes/space_weather.py`

### Security and field tools

- [WiFi and Bluetooth](https://github.com/smittix/intercept/blob/main/routes/wifi.py): `routes/wifi.py`
- [TSCM surveys](https://github.com/smittix/intercept/tree/main/routes/tscm): `routes/tscm`
- [Drone intelligence](https://github.com/smittix/intercept/blob/main/routes/drone.py): `routes/drone.py`
- [Device location](https://github.com/smittix/intercept/blob/main/routes/bt_locate.py): `routes/bt_locate.py`

### Shared services

- [Event pipeline](https://github.com/smittix/intercept/blob/main/utils/event_pipeline.py): `utils/event_pipeline.py`
- [Persistent state](https://github.com/smittix/intercept/blob/main/utils/database.py): `utils/database.py`
- [Remote agents](https://github.com/smittix/intercept/blob/main/routes/controller.py): `routes/controller.py`
- [Agent HTTP client](https://github.com/smittix/intercept/blob/main/utils/agent_client.py): `utils/agent_client.py`
- [Alerts and recordings](https://github.com/smittix/intercept/blob/main/utils/alerts.py): `utils/alerts.py`

### Other components

- **Operator**

## Connections

- Operator → Web interface: uses
- Web interface → Flask application: sends requests
- Web interface → Mode dashboards: selects mode
- Web interface → Settings and offline: configures
- Flask application → Sensor and meter decoding: routes requests
- Flask application → Listening post: routes requests
- Flask application → Sub-GHz analysis: routes requests
- Flask application → WiFi and Bluetooth: routes requests
- Flask application → TSCM surveys: routes requests
- Flask application → Drone intelligence: routes requests
- Flask application → Device location: routes requests
- Flask application → Aircraft and ACARS: routes requests
- Flask application → Maritime and APRS: routes requests
- Flask application → Satellite and weather: routes requests
- Flask application → Radio message modes: routes requests
- Flask application → Mesh networks: routes requests
- Flask application → Space weather and stations: routes requests
- Sensor and meter decoding → Event pipeline: submits events
- Aircraft and ACARS → Event pipeline: submits events
- Event pipeline → Alerts and recordings: processes events
- Event pipeline → Persistent state: records events
- Flask application → Persistent state: reads and writes
- Flask application → Remote agents: routes requests
- Remote agents → Agent HTTP client: calls
- Mode dashboards → Flask application: requests mode data
