# owlinkai/redroom architecture

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

- Interactive diagram: https://gitdiagram.com/owlinkai/redroom
- Repository: https://github.com/owlinkai/redroom

## Overview

Redroom is a full-stack OSINT platform: curated sources are collected and processed into intelligence records, which analysts explore through live feeds and analytical dashboards. The graph preserves the documented collection, analysis, and dissemination capabilities, plus the API, storage, and live-update layers. README descriptions establish several subsystem relationships; sampled source confirms the client transport, live-stream subscription, and narrative engine’s database and LLM use. Other unsampled internals are represented only where the tree and README support them.

Main entry points: [`client/src/main.tsx`](https://github.com/owlinkai/redroom/blob/main/client/src/main.tsx) (tRPC Client), [`server/db.ts`](https://github.com/owlinkai/redroom/blob/main/server/db.ts) (Intelligence Database), [`client/src/pages/IntelPlatform.tsx`](https://github.com/owlinkai/redroom/blob/main/client/src/pages/IntelPlatform.tsx) (Intel Dashboard), [`client/src/pages/tabs/FeedTab.tsx`](https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/FeedTab.tsx) (Live Feed)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Analyst Interface"]
  node_app["App Router<br/>[App.tsx]"]
  node_platform["Intel Dashboard<br/>[IntelPlatform.tsx]"]
  node_feed["Live Feed<br/>[FeedTab.tsx]"]
  node_explore["Explore Analysis<br/>[ExploreTab.tsx]"]
  node_narratives_ui["Narrative Tracker<br/>[NarrativesTab.tsx]"]
  node_facilities_ui["Facilities Intel<br/>[FacilitiesTab.tsx]"]
  node_orbit_ui["Orbit Dashboard<br/>[Orbit.tsx]"]
  node_sigint_ui["SIGINT Dashboard<br/>[Sigint.tsx]"]
  node_cms_ui["CMS Admin<br/>[AdminCMS.tsx]"]
end

subgraph group_collection["Collection Processing"]
  node_crawler["Article Crawler<br/>[crawler.ts]"]
  node_missions["Mission Scheduler"]
  node_scheduler["Scheduler<br/>[scheduler.ts]"]
end

subgraph group_analysis["Intelligence Analysis"]
  node_narrative_engine["Narrative Engine<br/>[narrativeEngine.ts]"]
  node_reference["Reference Checker"]
  node_orbit_api["Orbit Data API<br/>[orbit.ts]"]
  node_sigint_api["SIGINT Data API<br/>[sigint.ts]"]
end

subgraph group_services["Platform Services"]
  node_transport["tRPC Client<br/>[main.tsx]"]
  node_live_hook["Live Stream Hook<br/>[useLiveStream.ts]"]
  node_api["tRPC API<br/>[routers.ts]"]
  node_cms_api["CMS API<br/>[cms.ts]"]
  node_db[("Intelligence Database<br/>[db.ts]")]
  node_live_server["Live Stream Service<br/>[sseDataPump.ts]"]
end

node_analyst(("Analyst"))
node_sources(("News Sources"))
node_llm{{"LLM Service"}}

node_analyst -->|"uses"| node_app
node_app -->|"routes to"| node_platform
node_platform -->|"presents"| node_feed
node_platform -->|"presents"| node_explore
node_platform -->|"presents"| node_narratives_ui
node_platform -->|"presents"| node_facilities_ui
node_analyst -->|"opens"| node_orbit_ui
node_analyst -->|"opens"| node_sigint_ui
node_analyst -->|"administers"| node_cms_ui
node_feed -->|"queries"| node_transport
node_explore -->|"queries"| node_transport
node_narratives_ui -->|"queries"| node_transport
node_facilities_ui -->|"queries"| node_transport
node_orbit_ui -->|"queries"| node_transport
node_sigint_ui -->|"queries"| node_transport
node_cms_ui -->|"mutates"| node_transport
node_transport -->|"calls"| node_api
node_transport -->|"calls"| node_cms_api
node_feed -->|"subscribes"| node_live_hook
node_live_hook -->|"connects"| node_live_server
node_sources -->|"provides articles"| node_crawler
node_scheduler -->|"schedules"| node_missions
node_missions -->|"dispatches"| node_crawler
node_crawler -->|"stores articles"| node_db
node_api -->|"reads and writes"| node_db
node_cms_api -->|"manages records"| node_db
node_narrative_engine -->|"reads articles"| node_db
node_narrative_engine -.->|"requests analysis"| node_llm
node_api -->|"checks citations"| node_reference
node_orbit_ui -->|"queries"| node_orbit_api
node_sigint_ui -->|"queries"| node_sigint_api
node_orbit_api -->|"reads data"| node_db
node_sigint_api -->|"reads data"| node_db

click node_app "https://github.com/owlinkai/redroom/blob/main/client/src/App.tsx"
click node_platform "https://github.com/owlinkai/redroom/blob/main/client/src/pages/IntelPlatform.tsx"
click node_feed "https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/FeedTab.tsx"
click node_explore "https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/ExploreTab.tsx"
click node_narratives_ui "https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/NarrativesTab.tsx"
click node_facilities_ui "https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/FacilitiesTab.tsx"
click node_orbit_ui "https://github.com/owlinkai/redroom/blob/main/client/src/pages/Orbit.tsx"
click node_sigint_ui "https://github.com/owlinkai/redroom/blob/main/client/src/pages/Sigint.tsx"
click node_cms_ui "https://github.com/owlinkai/redroom/blob/main/client/src/pages/AdminCMS.tsx"
click node_transport "https://github.com/owlinkai/redroom/blob/main/client/src/main.tsx"
click node_live_hook "https://github.com/owlinkai/redroom/blob/main/client/src/hooks/useLiveStream.ts"
click node_api "https://github.com/owlinkai/redroom/blob/main/server/routers.ts"
click node_cms_api "https://github.com/owlinkai/redroom/blob/main/server/routers/cms.ts"
click node_crawler "https://github.com/owlinkai/redroom/blob/main/server/crawler.ts"
click node_missions "https://github.com/owlinkai/redroom/blob/main/server/missionScheduler.ts"
click node_narrative_engine "https://github.com/owlinkai/redroom/blob/main/server/narrativeEngine.ts"
click node_reference "https://github.com/owlinkai/redroom/blob/main/server/referenceChecker.ts"
click node_orbit_api "https://github.com/owlinkai/redroom/blob/main/server/routers/orbit.ts"
click node_sigint_api "https://github.com/owlinkai/redroom/blob/main/server/routers/sigint.ts"
click node_db "https://github.com/owlinkai/redroom/blob/main/server/db.ts"
click node_scheduler "https://github.com/owlinkai/redroom/blob/main/server/scheduler.ts"
click node_live_server "https://github.com/owlinkai/redroom/blob/main/server/sseDataPump.ts"

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_app,node_platform,node_feed,node_explore,node_narratives_ui,node_facilities_ui,node_orbit_ui,node_sigint_ui,node_cms_ui toneBlue
class node_crawler,node_missions,node_scheduler toneAmber
class node_narrative_engine,node_reference,node_orbit_api,node_sigint_api toneMint
class node_transport,node_live_hook,node_api,node_cms_api,node_db,node_live_server toneRose
class node_analyst,node_sources,node_llm toneIndigo
```

## Components

### Analyst Interface

- [App Router](https://github.com/owlinkai/redroom/blob/main/client/src/App.tsx): `client/src/App.tsx`
- [Intel Dashboard](https://github.com/owlinkai/redroom/blob/main/client/src/pages/IntelPlatform.tsx): `client/src/pages/IntelPlatform.tsx`
- [Live Feed](https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/FeedTab.tsx): `client/src/pages/tabs/FeedTab.tsx`
- [Explore Analysis](https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/ExploreTab.tsx): `client/src/pages/tabs/ExploreTab.tsx`
- [Narrative Tracker](https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/NarrativesTab.tsx): `client/src/pages/tabs/NarrativesTab.tsx`
- [Facilities Intel](https://github.com/owlinkai/redroom/blob/main/client/src/pages/tabs/FacilitiesTab.tsx): `client/src/pages/tabs/FacilitiesTab.tsx`
- [Orbit Dashboard](https://github.com/owlinkai/redroom/blob/main/client/src/pages/Orbit.tsx): `client/src/pages/Orbit.tsx`
- [SIGINT Dashboard](https://github.com/owlinkai/redroom/blob/main/client/src/pages/Sigint.tsx): `client/src/pages/Sigint.tsx`
- [CMS Admin](https://github.com/owlinkai/redroom/blob/main/client/src/pages/AdminCMS.tsx): `client/src/pages/AdminCMS.tsx`

### Collection Processing

- [Article Crawler](https://github.com/owlinkai/redroom/blob/main/server/crawler.ts): `server/crawler.ts`
- [Mission Scheduler](https://github.com/owlinkai/redroom/blob/main/server/missionScheduler.ts): `server/missionScheduler.ts`
- [Scheduler](https://github.com/owlinkai/redroom/blob/main/server/scheduler.ts): `server/scheduler.ts`

### Intelligence Analysis

- [Narrative Engine](https://github.com/owlinkai/redroom/blob/main/server/narrativeEngine.ts): `server/narrativeEngine.ts`
- [Reference Checker](https://github.com/owlinkai/redroom/blob/main/server/referenceChecker.ts): `server/referenceChecker.ts`
- [Orbit Data API](https://github.com/owlinkai/redroom/blob/main/server/routers/orbit.ts): `server/routers/orbit.ts`
- [SIGINT Data API](https://github.com/owlinkai/redroom/blob/main/server/routers/sigint.ts): `server/routers/sigint.ts`

### Platform Services

- [tRPC Client](https://github.com/owlinkai/redroom/blob/main/client/src/main.tsx): `client/src/main.tsx`
- [Live Stream Hook](https://github.com/owlinkai/redroom/blob/main/client/src/hooks/useLiveStream.ts): `client/src/hooks/useLiveStream.ts`
- [tRPC API](https://github.com/owlinkai/redroom/blob/main/server/routers.ts): `server/routers.ts`
- [CMS API](https://github.com/owlinkai/redroom/blob/main/server/routers/cms.ts): `server/routers/cms.ts`
- [Intelligence Database](https://github.com/owlinkai/redroom/blob/main/server/db.ts): `server/db.ts`
- [Live Stream Service](https://github.com/owlinkai/redroom/blob/main/server/sseDataPump.ts): `server/sseDataPump.ts`

### Other components

- **Analyst**
- **News Sources**
- **LLM Service**

## Connections

- Analyst → App Router: uses
- App Router → Intel Dashboard: routes to
- Intel Dashboard → Live Feed: presents
- Intel Dashboard → Explore Analysis: presents
- Intel Dashboard → Narrative Tracker: presents
- Intel Dashboard → Facilities Intel: presents
- Analyst → Orbit Dashboard: opens
- Analyst → SIGINT Dashboard: opens
- Analyst → CMS Admin: administers
- Live Feed → tRPC Client: queries
- Explore Analysis → tRPC Client: queries
- Narrative Tracker → tRPC Client: queries
- Facilities Intel → tRPC Client: queries
- Orbit Dashboard → tRPC Client: queries
- SIGINT Dashboard → tRPC Client: queries
- CMS Admin → tRPC Client: mutates
- tRPC Client → tRPC API: calls
- tRPC Client → CMS API: calls
- Live Feed → Live Stream Hook: subscribes
- Live Stream Hook → Live Stream Service: connects
- News Sources → Article Crawler: provides articles
- Scheduler → Mission Scheduler: schedules
- Mission Scheduler → Article Crawler: dispatches
- Article Crawler → Intelligence Database: stores articles
- tRPC API → Intelligence Database: reads and writes
- CMS API → Intelligence Database: manages records
- Narrative Engine → Intelligence Database: reads articles
- Narrative Engine → LLM Service: requests analysis
- tRPC API → Reference Checker: checks citations
- Orbit Dashboard → Orbit Data API: queries
- SIGINT Dashboard → SIGINT Data API: queries
- Orbit Data API → Intelligence Database: reads data
- SIGINT Data API → Intelligence Database: reads data
