# slateintegrations-git/script-spidertracks-pycot architecture

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

- Interactive diagram: https://gitdiagram.com/slateintegrations-git/script-spidertracks-pycot
- Repository: https://github.com/slateintegrations-git/script-spidertracks-pycot

## Overview

This is a small asynchronous integration script: it polls the Spidertracks AFF feed, processes aircraft features and their timestamps, converts positions to Cursor-on-Target (CoT), and sends batches to a TAK server. The main loop owns polling, pagination, sending, reconnection, and scheduling; the feed and CoT helpers provide the internal processing layers. The README confirms the overall fetch-and-convert purpose. Some loop details are omitted from the source excerpt, so links for feature conversion follow that documented workflow rather than a fully visible call site.

Main entry points: [`spidertracks.py`](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py) (Async main loop)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_control["Polling and control"]
  node_main["Async main loop<br/>[spidertracks.py]"]
end

subgraph group_feed["AFF feed processing"]
  node_fetch["AFF fetch<br/>[spidertracks.py]"]
  node_features["Feature extraction<br/>[spidertracks.py]"]
  node_ordering["Feature ordering<br/>[spidertracks.py]"]
  node_cursor["Cursor tracking<br/>[spidertracks.py]"]
end

subgraph group_cot["CoT delivery"]
  node_conversion["CoT conversion<br/>[spidertracks.py]"]
  node_batch["Batch sender<br/>[spidertracks.py]"]
end

node_operator(("Operator"))
node_spidertracks{{"Spidertracks AFF API"}}
node_tak{{"TAK server"}}

node_operator -->|"configures and starts"| node_main
node_main -->|"polls feed"| node_fetch
node_fetch -->|"requests AFF data"| node_spidertracks
node_main -->|"extracts results"| node_features
node_main -->|"sorts features"| node_ordering
node_main -->|"advances cursor"| node_cursor
node_main -->|"converts positions"| node_conversion
node_main -->|"sends batches"| node_batch
node_batch -->|"writes CoT messages"| node_tak

click node_main "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py"
click node_fetch "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py"
click node_features "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py"
click node_ordering "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py"
click node_cursor "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py"
click node_conversion "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py"
click node_batch "https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.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_main toneBlue
class node_fetch,node_features,node_ordering,node_cursor toneAmber
class node_conversion,node_batch,node_spidertracks,node_tak toneMint
class node_operator toneIndigo
```

## Components

### Polling and control

- [Async main loop](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`

### AFF feed processing

- [AFF fetch](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`
- [Feature extraction](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`
- [Feature ordering](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`
- [Cursor tracking](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`

### CoT delivery

- [CoT conversion](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`
- [Batch sender](https://github.com/slateintegrations-git/script-spidertracks-pycot/blob/main/spidertracks.py): `spidertracks.py`

### Other components

- **Operator**
- **Spidertracks AFF API**
- **TAK server**

## Connections

- Operator → Async main loop: configures and starts
- Async main loop → AFF fetch: polls feed
- AFF fetch → Spidertracks AFF API: requests AFF data
- Async main loop → Feature extraction: extracts results
- Async main loop → Feature ordering: sorts features
- Async main loop → Cursor tracking: advances cursor
- Async main loop → CoT conversion: converts positions
- Async main loop → Batch sender: sends batches
- Batch sender → TAK server: writes CoT messages
