# azmatt/chasing_your_tail architecture

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

- Interactive diagram: https://gitdiagram.com/azmatt/chasing_your_tail
- Repository: https://github.com/azmatt/chasing_your_tail

## Overview

Chasing Your Tail is a Raspberry Pi Wi-Fi device-monitoring tool. Its principal workflow reads Kismet’s SQLite capture database, compares observed MAC addresses and probed SSIDs across time windows against ignore lists, and reports activity through logging and console output. A Tkinter viewer launches monitoring and ignore-list actions. The README only says the project is unmaintained; capabilities and relationships here are based on the sampled source and its reference index, so unsampled shell-script behavior is not inferred.

Main entry points: [`cyt_gui.py`](https://github.com/azmatt/chasing_your_tail/blob/main/cyt_gui.py) (Viewer GUI), [`cyt/chasing_your_tail.py`](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/chasing_your_tail.py) (Activity monitor), [`cyt/create_ignore_list.py`](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/create_ignore_list.py) (Create command), [`cyt/chasing_your_tail.sh`](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/chasing_your_tail.sh) (Run command)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_viewer["Viewer GUI<br/>[cyt_gui.py]"]
  node_status["Status command<br/>[monitor.sh]"]
  node_run_command["Run command"]
  node_delete_command["Delete command"]
  node_create_command["Create command"]
end

subgraph group_monitoring["Device monitoring"]
  node_monitor["Activity monitor"]
  node_capture_db[("Kismet capture DB")]
  node_activity_log["Activity log"]
end

subgraph group_ignore["Ignore-list management"]
  node_mac_list["MAC ignore list<br/>[ignore_list.py]"]
  node_ssid_list["SSID ignore list"]
end

node_user(("Operator"))

node_user -->|"operates"| node_viewer
node_viewer -->|"launches"| node_status
node_viewer -->|"launches"| node_run_command
node_viewer -->|"launches"| node_delete_command
node_viewer -->|"launches"| node_create_command
node_run_command -.->|"runs"| node_monitor
node_monitor -->|"reads"| node_capture_db
node_mac_list -->|"supplies MACs"| node_monitor
node_ssid_list -->|"supplies SSIDs"| node_monitor
node_monitor -->|"writes"| node_activity_log
node_create_command -->|"reads"| node_capture_db
node_create_command -->|"generates"| node_mac_list
node_create_command -->|"generates"| node_ssid_list

click node_viewer "https://github.com/azmatt/chasing_your_tail/blob/main/cyt_gui.py"
click node_status "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/monitor.sh"
click node_run_command "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/chasing_your_tail.sh"
click node_delete_command "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/delete_ignore_lists.sh"
click node_create_command "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/create_ignore_list.py"
click node_monitor "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/chasing_your_tail.py"
click node_mac_list "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/ignore_list.py"
click node_ssid_list "https://github.com/azmatt/chasing_your_tail/blob/main/cyt/ignore_list_ssid.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_viewer,node_status,node_run_command,node_delete_command,node_create_command toneBlue
class node_monitor,node_capture_db,node_activity_log toneAmber
class node_mac_list,node_ssid_list toneMint
class node_user toneIndigo
```

## Components

### User interface

- [Viewer GUI](https://github.com/azmatt/chasing_your_tail/blob/main/cyt_gui.py): `cyt_gui.py`
- [Status command](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/monitor.sh): `cyt/monitor.sh`
- [Run command](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/chasing_your_tail.sh): `cyt/chasing_your_tail.sh`
- [Delete command](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/delete_ignore_lists.sh): `cyt/delete_ignore_lists.sh`
- [Create command](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/create_ignore_list.py): `cyt/create_ignore_list.py`

### Device monitoring

- [Activity monitor](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/chasing_your_tail.py): `cyt/chasing_your_tail.py`
- **Kismet capture DB**
- **Activity log**

### Ignore-list management

- [MAC ignore list](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/ignore_list.py): `cyt/ignore_list.py`
- [SSID ignore list](https://github.com/azmatt/chasing_your_tail/blob/main/cyt/ignore_list_ssid.py): `cyt/ignore_list_ssid.py`

### Other components

- **Operator**

## Connections

- Operator → Viewer GUI: operates
- Viewer GUI → Status command: launches (evidence: `cyt_gui.py`)
- Viewer GUI → Run command: launches (evidence: `cyt_gui.py`)
- Viewer GUI → Delete command: launches (evidence: `cyt_gui.py`)
- Viewer GUI → Create command: launches (evidence: `cyt_gui.py`)
- Run command → Activity monitor: runs
- Activity monitor → Kismet capture DB: reads (evidence: `cyt/chasing_your_tail.py`)
- MAC ignore list → Activity monitor: supplies MACs (evidence: `cyt/chasing_your_tail.py`)
- SSID ignore list → Activity monitor: supplies SSIDs (evidence: `cyt/chasing_your_tail.py`)
- Activity monitor → Activity log: writes (evidence: `cyt/chasing_your_tail.py`)
- Create command → Kismet capture DB: reads (evidence: `cyt/create_ignore_list.py`)
- Create command → MAC ignore list: generates (evidence: `cyt/create_ignore_list.py`)
- Create command → SSID ignore list: generates (evidence: `cyt/create_ignore_list.py`)
