# ruxakk/friday_jarvis architecture

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

- Interactive diagram: https://gitdiagram.com/ruxakk/friday_jarvis
- Repository: https://github.com/ruxakk/friday_jarvis

## Overview

Friday is a personal AI assistant centered on a LiveKit agent session: a user interacts by voice and video, the session starts the assistant and generates an opening reply, and the assistant can use weather, web-search, and email tools. The assistant’s persona and session behavior come from prompts.py; tools.py implements the three integrations. The README also advertises web-app chat and vision, but the supplied tree contains no web-app implementation. The map reflects only the shown agent and tool code; other advertised capabilities may be implemented elsewhere or remain undocumented here.

Main entry points: [`agent.py`](https://github.com/ruxakk/friday_jarvis/blob/main/agent.py) (Friday assistant), [`tools.py`](https://github.com/ruxakk/friday_jarvis/blob/main/tools.py) (Weather lookup), [`prompts.py`](https://github.com/ruxakk/friday_jarvis/blob/main/prompts.py) (Instructions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_session["LiveKit session"]
  node_livekit["LiveKit runtime"]
  node_entrypoint["Agent entrypoint<br/>[agent.py]"]
  node_session_run["Agent session<br/>[agent.py]"]
  node_video_input["Video input<br/>[agent.py]"]
  node_noise_cancel["Noise cancellation<br/>[agent.py]"]
end

subgraph group_assistant["Assistant behavior"]
  node_assistant_agent["Friday assistant<br/>[agent.py]"]
  node_prompts["Instructions<br/>[prompts.py]"]
end

subgraph group_tools["Assistant tools"]
  node_weather["Weather lookup<br/>[tools.py]"]
  node_web_search["Web search<br/>[tools.py]"]
  node_email["Email sending<br/>[tools.py]"]
end

subgraph group_services["External services"]
  node_google_model["Google realtime model"]
  node_weather_service["wttr.in"]
  node_duckduckgo["DuckDuckGo search"]
  node_gmail["Gmail SMTP"]
end

node_user(("User"))

node_user -->|"interacts with"| node_session_run
node_livekit -->|"runs worker"| node_entrypoint
node_entrypoint -->|"creates"| node_assistant_agent
node_entrypoint -->|"starts"| node_session_run
node_entrypoint -->|"generates reply"| node_session_run
node_session_run -->|"runs"| node_assistant_agent
node_session_run -->|"enables"| node_video_input
node_session_run -->|"configures"| node_noise_cancel
node_assistant_agent -->|"uses instructions"| node_prompts
node_assistant_agent -->|"configures model"| node_google_model
node_assistant_agent -->|"registers tool"| node_weather
node_assistant_agent -->|"registers tool"| node_web_search
node_assistant_agent -->|"registers tool"| node_email
node_weather -->|"requests weather"| node_weather_service
node_web_search -->|"searches query"| node_duckduckgo
node_email -->|"sends email"| node_gmail

click node_entrypoint "https://github.com/ruxakk/friday_jarvis/blob/main/agent.py"
click node_session_run "https://github.com/ruxakk/friday_jarvis/blob/main/agent.py"
click node_video_input "https://github.com/ruxakk/friday_jarvis/blob/main/agent.py"
click node_noise_cancel "https://github.com/ruxakk/friday_jarvis/blob/main/agent.py"
click node_assistant_agent "https://github.com/ruxakk/friday_jarvis/blob/main/agent.py"
click node_prompts "https://github.com/ruxakk/friday_jarvis/blob/main/prompts.py"
click node_weather "https://github.com/ruxakk/friday_jarvis/blob/main/tools.py"
click node_web_search "https://github.com/ruxakk/friday_jarvis/blob/main/tools.py"
click node_email "https://github.com/ruxakk/friday_jarvis/blob/main/tools.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_livekit,node_entrypoint,node_session_run,node_video_input,node_noise_cancel,node_user toneBlue
class node_assistant_agent,node_prompts toneAmber
class node_weather,node_web_search,node_email toneMint
class node_google_model,node_weather_service,node_duckduckgo,node_gmail toneRose
```

## Components

### LiveKit session

- **LiveKit runtime**
- [Agent entrypoint](https://github.com/ruxakk/friday_jarvis/blob/main/agent.py): `agent.py`
- [Agent session](https://github.com/ruxakk/friday_jarvis/blob/main/agent.py): `agent.py`
- [Video input](https://github.com/ruxakk/friday_jarvis/blob/main/agent.py): `agent.py`
- [Noise cancellation](https://github.com/ruxakk/friday_jarvis/blob/main/agent.py): `agent.py`

### Assistant behavior

- [Friday assistant](https://github.com/ruxakk/friday_jarvis/blob/main/agent.py): `agent.py`
- [Instructions](https://github.com/ruxakk/friday_jarvis/blob/main/prompts.py): `prompts.py`

### Assistant tools

- [Weather lookup](https://github.com/ruxakk/friday_jarvis/blob/main/tools.py): `tools.py`
- [Web search](https://github.com/ruxakk/friday_jarvis/blob/main/tools.py): `tools.py`
- [Email sending](https://github.com/ruxakk/friday_jarvis/blob/main/tools.py): `tools.py`

### External services

- **Google realtime model**
- **wttr.in**
- **DuckDuckGo search**
- **Gmail SMTP**

### Other components

- **User**

## Connections

- User → Agent session: interacts with (evidence: `README.md`)
- LiveKit runtime → Agent entrypoint: runs worker (evidence: `agent.py`)
- Agent entrypoint → Friday assistant: creates (evidence: `agent.py`)
- Agent entrypoint → Agent session: starts (evidence: `agent.py`)
- Agent entrypoint → Agent session: generates reply (evidence: `agent.py`)
- Agent session → Friday assistant: runs (evidence: `agent.py`)
- Agent session → Video input: enables (evidence: `agent.py`)
- Agent session → Noise cancellation: configures (evidence: `agent.py`)
- Friday assistant → Instructions: uses instructions (evidence: `agent.py`)
- Friday assistant → Google realtime model: configures model (evidence: `agent.py`)
- Friday assistant → Weather lookup: registers tool (evidence: `agent.py`)
- Friday assistant → Web search: registers tool (evidence: `agent.py`)
- Friday assistant → Email sending: registers tool (evidence: `agent.py`)
- Weather lookup → wttr.in: requests weather (evidence: `tools.py`)
- Web search → DuckDuckGo search: searches query (evidence: `tools.py`)
- Email sending → Gmail SMTP: sends email (evidence: `tools.py`)
