# forces23/personal_assistant architecture

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

- Interactive diagram: https://gitdiagram.com/forces23/personal_assistant
- Repository: https://github.com/forces23/personal_assistant

## Overview

This repository is a collection of J.A.R.V.I.S. assistant prototypes rather than one integrated application. Its clearest web workflow renders a chat interface, receives a Flask chat request, invokes the selected Llama 2 adapter, and returns text; the sampled React chatbot does not establish the client-to-server request wiring. Separate experiments cover voice capture, speech output, and standalone assistant capabilities. The legacy assistant entry points and several feature modules are represented by their tree paths, but their internal wiring was not sampled.

Main entry points: [`personal_assistant_web_app/backend/flask-server/LLM_LLama2.py`](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/backend/flask-server/LLM_LLama2.py) (Llama adapter), [`personal_assistant_web_app/backend/flask-server/server.py`](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/backend/flask-server/server.py) (Chat endpoint), [`Personal_Jarvis/ai_chatbox/ai_chatbot_terminal.py`](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/ai_chatbox/ai_chatbot_terminal.py) (Terminal chat), [`personal_assistant_web_app/client/src/App.js`](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/client/src/App.js) (React app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web chat"]
  node_app["React app<br/>[App.js]"]
  node_chatbot["Chat UI<br/>[chatbot.js]"]
  node_flask["Chat endpoint<br/>[server.py]"]
end

subgraph group_voice["Voice assistant"]
  node_v1_main["Assistant entry<br/>[jarvis_main.py]"]
  node_v1_brains["Assistant logic<br/>[brains.py]"]
  node_v1_keywords["Keyword capture"]
  node_v2_main["Assistant entry<br/>[jarvis_main.py]"]
  node_v2_brains["Assistant logic<br/>[brains.py]"]
  node_v2_speech["Speech synthesis<br/>[speaking.py]"]
end

subgraph group_experiments["Assistant experiments"]
  node_terminal_chat["Terminal chat"]
  node_desktop_chat["Desktop chat"]
  node_standalone_chat["Standalone chat<br/>[ai_chatGPT.py]"]
  node_bard["Bard client<br/>[ai_google_bard.py]"]
  node_weather["Weather lookup<br/>[weather_api.py]"]
  node_search["Web search<br/>[google_search.py]"]
  node_time["World clock"]
  node_translate["Audio translation"]
end

subgraph group_providers["AI services"]
  node_llama["Llama adapter<br/>[LLM_LLama2.py]"]
end

node_web_user(("Web user"))
node_replicate{{"Replicate API"}}
node_google_speech{{"Google speech services"}}
node_openai{{"OpenAI API"}}
node_speech_dataset[("Speaker dataset")]

node_web_user -->|"opens"| node_app
node_app -->|"renders"| node_chatbot
node_web_user -->|"posts message"| node_flask
node_flask -->|"calls"| node_llama
node_llama -->|"runs model"| node_replicate
node_llama -->|"returns text"| node_flask
node_v1_keywords -->|"recognizes audio"| node_google_speech
node_terminal_chat -->|"requests response"| node_openai
node_terminal_chat -->|"synthesizes speech"| node_google_speech
node_desktop_chat -.->|"requests response"| node_openai
node_v2_speech -->|"loads speakers"| node_speech_dataset
node_standalone_chat -.->|"uses model"| node_openai

click node_app "https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/client/src/App.js"
click node_chatbot "https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/client/src/chatbot.js"
click node_flask "https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/backend/flask-server/server.py"
click node_llama "https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/backend/flask-server/LLM_LLama2.py"
click node_v1_main "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v1_0/jarvis_main.py"
click node_v1_brains "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v1_0/brains.py"
click node_v1_keywords "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v1_0/keyword_detection.py"
click node_v2_main "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v2_0/jarvis_main.py"
click node_v2_brains "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v2_0/brains.py"
click node_v2_speech "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v2_0/speaking.py"
click node_terminal_chat "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/ai_chatbox/ai_chatbot_terminal.py"
click node_desktop_chat "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/ai_chatbox/ai_chatbot_with_ui.py"
click node_standalone_chat "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/ai_chatGPT.py"
click node_bard "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/ai_google_bard.py"
click node_weather "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/weather_api.py"
click node_search "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/google_search.py"
click node_time "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/current_time_any_location.py"
click node_translate "https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/translate_recording.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_app,node_chatbot,node_flask,node_web_user toneBlue
class node_v1_main,node_v1_brains,node_v1_keywords,node_v2_main,node_v2_brains,node_v2_speech,node_speech_dataset toneAmber
class node_terminal_chat,node_desktop_chat,node_standalone_chat,node_bard,node_weather,node_search,node_time,node_translate,node_replicate,node_openai toneMint
class node_llama toneRose
class node_google_speech toneIndigo
```

## Components

### Web chat

- [React app](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/client/src/App.js): `personal_assistant_web_app/client/src/App.js`
- [Chat UI](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/client/src/chatbot.js): `personal_assistant_web_app/client/src/chatbot.js`
- [Chat endpoint](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/backend/flask-server/server.py): `personal_assistant_web_app/backend/flask-server/server.py`

### Voice assistant

- [Assistant entry](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v1_0/jarvis_main.py): `Personal_Jarvis/jarvis-v1_0/jarvis_main.py`
- [Assistant logic](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v1_0/brains.py): `Personal_Jarvis/jarvis-v1_0/brains.py`
- [Keyword capture](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v1_0/keyword_detection.py): `Personal_Jarvis/jarvis-v1_0/keyword_detection.py`
- [Assistant entry](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v2_0/jarvis_main.py): `Personal_Jarvis/jarvis-v2_0/jarvis_main.py`
- [Assistant logic](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v2_0/brains.py): `Personal_Jarvis/jarvis-v2_0/brains.py`
- [Speech synthesis](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/jarvis-v2_0/speaking.py): `Personal_Jarvis/jarvis-v2_0/speaking.py`

### Assistant experiments

- [Terminal chat](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/ai_chatbox/ai_chatbot_terminal.py): `Personal_Jarvis/ai_chatbox/ai_chatbot_terminal.py`
- [Desktop chat](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/ai_chatbox/ai_chatbot_with_ui.py): `Personal_Jarvis/ai_chatbox/ai_chatbot_with_ui.py`
- [Standalone chat](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/ai_chatGPT.py): `Personal_Jarvis/standalone_programs/ai_chatGPT.py`
- [Bard client](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/ai_google_bard.py): `Personal_Jarvis/standalone_programs/ai_google_bard.py`
- [Weather lookup](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/weather_api.py): `Personal_Jarvis/standalone_programs/weather_api.py`
- [Web search](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/google_search.py): `Personal_Jarvis/standalone_programs/google_search.py`
- [World clock](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/current_time_any_location.py): `Personal_Jarvis/standalone_programs/current_time_any_location.py`
- [Audio translation](https://github.com/forces23/personal_assistant/blob/master/Personal_Jarvis/standalone_programs/translate_recording.py): `Personal_Jarvis/standalone_programs/translate_recording.py`

### AI services

- [Llama adapter](https://github.com/forces23/personal_assistant/blob/master/personal_assistant_web_app/backend/flask-server/LLM_LLama2.py): `personal_assistant_web_app/backend/flask-server/LLM_LLama2.py`

### Other components

- **Web user**
- **Replicate API**
- **Google speech services**
- **OpenAI API**
- **Speaker dataset**

## Connections

- Web user → React app: opens
- React app → Chat UI: renders
- Web user → Chat endpoint: posts message
- Chat endpoint → Llama adapter: calls
- Llama adapter → Replicate API: runs model
- Llama adapter → Chat endpoint: returns text
- Keyword capture → Google speech services: recognizes audio
- Terminal chat → OpenAI API: requests response
- Terminal chat → Google speech services: synthesizes speech
- Desktop chat → OpenAI API: requests response
- Speech synthesis → Speaker dataset: loads speakers
- Standalone chat → OpenAI API: uses model
