# prudvireddy-git/jarvis-streamlit architecture

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

- Interactive diagram: https://gitdiagram.com/prudvireddy-git/jarvis-streamlit
- Repository: https://github.com/prudvireddy-git/jarvis-streamlit

## Overview

J.A.R.V.I.S. is a voice-enabled assistant that captures a query, classifies and answers it with Groq and information tools, then keeps conversation history and can speak the response. The README describes a FastAPI interface and settings, history, speech, and WebSocket routes, but the only application source in the tree is a partial Streamlit app; its shown implementation does not establish those routes. Accordingly, the graph maps the evidenced Streamlit workflow and records the documented API boundary without asserting its internal wiring.

Main entry points: [`app.py`](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py) (Streamlit UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Interaction"]
  node_streamlit["Streamlit UI<br/>[app.py]"]
  node_speech_capture["Speech capture<br/>[app.py]"]
  node_history[("Conversation history<br/>[app.py]")]
  node_speech_output["Speech output<br/>[app.py]"]
  node_documented_api["Documented REST and WS API"]
end

subgraph group_assistant["Assistant runtime"]
  node_query_processing["Query processing<br/>[app.py]"]
  node_intent["Intent classification<br/>[app.py]"]
  node_answer_synthesis["Answer synthesis<br/>[app.py]"]
  node_wikipedia_tool["Wikipedia lookup<br/>[app.py]"]
  node_arxiv_tool["arXiv lookup<br/>[app.py]"]
  node_news_tool["News lookup<br/>[app.py]"]
  node_web_tool["Web search<br/>[app.py]"]
end

subgraph group_integrations["External services"]
  node_groq["Groq API"]
  node_wikipedia_service["Wikipedia"]
  node_arxiv_service["arXiv"]
  node_news_service["Google News RSS"]
  node_search_service["DuckDuckGo"]
end

node_user(("User"))

node_user -->|"enters query"| node_streamlit
node_streamlit -->|"captures speech"| node_speech_capture
node_streamlit -->|"submits query"| node_query_processing
node_query_processing -->|"classifies query"| node_intent
node_query_processing -->|"builds answer"| node_answer_synthesis
node_intent -->|"classifies with"| node_groq
node_answer_synthesis -->|"generates with"| node_groq
node_wikipedia_tool -->|"looks up"| node_wikipedia_service
node_arxiv_tool -->|"searches"| node_arxiv_service
node_news_tool -->|"fetches feed"| node_news_service
node_web_tool -->|"searches"| node_search_service
node_streamlit -->|"updates and renders"| node_history
node_streamlit -->|"speaks response"| node_speech_output
node_documented_api -.->|"offers documented routes"| node_user

click node_streamlit "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_speech_capture "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_history "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_speech_output "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_query_processing "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_intent "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_answer_synthesis "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_wikipedia_tool "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_arxiv_tool "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_news_tool "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py"
click node_web_tool "https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.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_streamlit,node_speech_capture,node_history,node_speech_output,node_documented_api,node_user toneBlue
class node_query_processing,node_intent,node_answer_synthesis,node_wikipedia_tool,node_arxiv_tool,node_news_tool,node_web_tool toneAmber
class node_groq,node_wikipedia_service,node_arxiv_service,node_news_service,node_search_service toneMint
```

## Components

### Interaction

- [Streamlit UI](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Speech capture](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Conversation history](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Speech output](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- **Documented REST and WS API**

### Assistant runtime

- [Query processing](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Intent classification](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Answer synthesis](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Wikipedia lookup](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [arXiv lookup](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [News lookup](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`
- [Web search](https://github.com/prudvireddy-git/jarvis-streamlit/blob/main/app.py): `app.py`

### External services

- **Groq API**
- **Wikipedia**
- **arXiv**
- **Google News RSS**
- **DuckDuckGo**

### Other components

- **User**

## Connections

- User → Streamlit UI: enters query
- Streamlit UI → Speech capture: captures speech
- Streamlit UI → Query processing: submits query
- Query processing → Intent classification: classifies query
- Query processing → Answer synthesis: builds answer
- Intent classification → Groq API: classifies with
- Answer synthesis → Groq API: generates with
- Wikipedia lookup → Wikipedia: looks up
- arXiv lookup → arXiv: searches
- News lookup → Google News RSS: fetches feed
- Web search → DuckDuckGo: searches
- Streamlit UI → Conversation history: updates and renders
- Streamlit UI → Speech output: speaks response
- Documented REST and WS API → User: offers documented routes
