# michiko-hagakure/fluffy-fiesta architecture

> Architecture diagram of the GitHub repository michiko-hagakure/fluffy-fiesta, 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/michiko-hagakure/fluffy-fiesta
- Repository: https://github.com/michiko-hagakure/fluffy-fiesta

## Overview

The repository contains two independent alerting tools: Pluffy Intel polls configured cybersecurity RSS feeds, suppresses previously posted links, and sends article embeds to Discord; custom-discord.py reads a Wazuh alert file and forwards selected alert fields to Discord. The principal workflows and persisted state are visible in the sampled scripts; no README documents additional capabilities.

Main entry points: [`pluffy-intel.py`](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py) (Intel polling run), [`custom-discord.py`](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.py) (CLI argument parsing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intel["RSS intelligence"]
  node_intel_run["Intel polling run<br/>[pluffy-intel.py]"]
  node_feed_config["Feed configuration<br/>[pluffy-intel.py]"]
  node_feed_sources["Cybersecurity feeds"]
  node_fetch_feed["Fetch and parse feed<br/>[pluffy-intel.py]"]
  node_dedupe["Link deduplication<br/>[pluffy-intel.py]"]
  node_discord_embed["Article alert builder<br/>[pluffy-intel.py]"]
end

subgraph group_wazuh["Wazuh forwarding"]
  node_alert_file["Wazuh alert JSON"]
  node_cli["CLI argument parsing<br/>[custom-discord.py]"]
  node_alert_reader["Read latest alert<br/>[custom-discord.py]"]
  node_wazuh_formatter["Format alert message<br/>[custom-discord.py]"]
end

subgraph group_state["Local state"]
  node_posted_store[("Posted links<br/>[pluffy-intel.py]")]
  node_gif_choice["GIF selection<br/>[pluffy-intel.py]"]
  node_gif_store[("Last GIF state<br/>[pluffy-intel.py]")]
end

node_scheduler(("Scheduled invocation"))
node_discord{{"Discord webhook"}}
node_wazuh(("Wazuh alert runner"))

node_scheduler -->|"invokes"| node_intel_run
node_intel_run -->|"reads"| node_feed_config
node_intel_run -->|"loads and saves"| node_posted_store
node_intel_run -->|"fetches each feed"| node_fetch_feed
node_fetch_feed -->|"requests"| node_feed_sources
node_intel_run -->|"checks links"| node_dedupe
node_dedupe -->|"checks recorded links"| node_posted_store
node_intel_run -->|"sends new entries"| node_discord_embed
node_discord_embed -->|"selects image"| node_gif_choice
node_gif_choice -->|"reads and writes"| node_gif_store
node_discord_embed -->|"posts embed"| node_discord
node_wazuh -->|"invokes"| node_cli
node_cli -->|"selects path"| node_alert_file
node_cli -->|"loads alert"| node_alert_reader
node_alert_reader -->|"reads latest JSON"| node_alert_file
node_cli -->|"formats fields"| node_wazuh_formatter
node_cli -->|"posts message"| node_discord

click node_intel_run "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_feed_config "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_fetch_feed "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_dedupe "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_discord_embed "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_posted_store "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_gif_choice "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_gif_store "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py"
click node_cli "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.py"
click node_alert_reader "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.py"
click node_wazuh_formatter "https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.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_intel_run,node_feed_config,node_feed_sources,node_fetch_feed,node_dedupe,node_discord_embed toneBlue
class node_alert_file,node_cli,node_alert_reader,node_wazuh_formatter toneAmber
class node_posted_store,node_gif_choice,node_gif_store,node_discord toneMint
class node_scheduler,node_wazuh toneIndigo
```

## Components

### RSS intelligence

- [Intel polling run](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`
- [Feed configuration](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`
- **Cybersecurity feeds**
- [Fetch and parse feed](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`
- [Link deduplication](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`
- [Article alert builder](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`

### Wazuh forwarding

- **Wazuh alert JSON**
- [CLI argument parsing](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.py): `custom-discord.py`
- [Read latest alert](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.py): `custom-discord.py`
- [Format alert message](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/custom-discord.py): `custom-discord.py`

### Local state

- [Posted links](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`
- [GIF selection](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`
- [Last GIF state](https://github.com/michiko-hagakure/fluffy-fiesta/blob/main/pluffy-intel.py): `pluffy-intel.py`

### Other components

- **Scheduled invocation**
- **Discord webhook**
- **Wazuh alert runner**

## Connections

- Scheduled invocation → Intel polling run: invokes
- Intel polling run → Feed configuration: reads
- Intel polling run → Posted links: loads and saves
- Intel polling run → Fetch and parse feed: fetches each feed
- Fetch and parse feed → Cybersecurity feeds: requests
- Intel polling run → Link deduplication: checks links
- Link deduplication → Posted links: checks recorded links
- Intel polling run → Article alert builder: sends new entries
- Article alert builder → GIF selection: selects image
- GIF selection → Last GIF state: reads and writes
- Article alert builder → Discord webhook: posts embed
- Wazuh alert runner → CLI argument parsing: invokes
- CLI argument parsing → Wazuh alert JSON: selects path
- CLI argument parsing → Read latest alert: loads alert
- Read latest alert → Wazuh alert JSON: reads latest JSON
- CLI argument parsing → Format alert message: formats fields
- CLI argument parsing → Discord webhook: posts message
