# rchava25/devops architecture

> Architecture diagram of the GitHub repository rchava25/devops, 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/rchava25/devops
- Repository: https://github.com/rchava25/devops

## Overview

The clearest runnable product in the sampled source is a Streamlit travel-agent chat app: a user asks about destinations or weather, a LangGraph agent consults an LLM, and tool requests are dispatched and returned to the agent before the response is displayed. The tree also contains a separate static website and contact handler. No README or website-page source was provided, so those components and their wiring are represented conservatively; deployment artifacts are not connected to runtime behavior.

Main entry points: [`travelagent2.py`](https://github.com/rchava25/devops/blob/main/travelagent2.py) (Agent node), [`website/forms/contact.php`](https://github.com/rchava25/devops/blob/main/website/forms/contact.php) (Contact handler), [`website/index.html`](https://github.com/rchava25/devops/blob/main/website/index.html) (Home page), [`website/portfolio-details.html`](https://github.com/rchava25/devops/blob/main/website/portfolio-details.html) (Portfolio page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_chat["Travel chat"]
  node_streamlit["Chat interface<br/>[travelagent2.py]"]
  node_graph["LangGraph app<br/>[travelagent2.py]"]
  node_agent["Agent node<br/>[travelagent2.py]"]
  node_model["Ollama model"]
  node_tool_dispatch["Tool dispatcher<br/>[travelagent2.py]"]
  node_places["Destination lookup<br/>[travelagent2.py]"]
  node_weather["Weather lookup<br/>[travelagent2.py]"]
  node_memory[("Conversation memory<br/>[travelagent2.py]")]
end

subgraph group_web["Website"]
  node_home["Home page<br/>[index.html]"]
  node_portfolio["Portfolio page"]
  node_services["Services page"]
  node_starter["Starter page<br/>[starter-page.html]"]
end

subgraph group_contact["Contact handling"]
  node_contact_form["Contact handler<br/>[contact.php]"]
end

node_traveler(("Traveler"))
node_browser(("Website visitor"))
node_email(("Email recipient"))

node_traveler -->|"asks"| node_streamlit
node_streamlit -->|"streams request"| node_graph
node_graph -->|"runs"| node_agent
node_agent -->|"invokes"| node_model
node_model -->|"returns response"| node_agent
node_agent -->|"dispatches calls"| node_tool_dispatch
node_tool_dispatch -->|"calls"| node_places
node_tool_dispatch -->|"calls"| node_weather
node_tool_dispatch -->|"returns results"| node_agent
node_graph -->|"checkpoints state"| node_memory
node_browser -->|"requests"| node_home
node_browser -->|"requests"| node_portfolio
node_browser -->|"requests"| node_services
node_browser -->|"requests"| node_starter
node_contact_form -->|"sends message"| node_email

click node_streamlit "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_graph "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_agent "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_tool_dispatch "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_places "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_weather "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_memory "https://github.com/rchava25/devops/blob/main/travelagent2.py"
click node_home "https://github.com/rchava25/devops/blob/main/website/index.html"
click node_portfolio "https://github.com/rchava25/devops/blob/main/website/portfolio-details.html"
click node_services "https://github.com/rchava25/devops/blob/main/website/service-details.html"
click node_starter "https://github.com/rchava25/devops/blob/main/website/starter-page.html"
click node_contact_form "https://github.com/rchava25/devops/blob/main/website/forms/contact.php"

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_graph,node_agent,node_model,node_tool_dispatch,node_places,node_weather,node_memory toneBlue
class node_home,node_portfolio,node_services,node_starter toneAmber
class node_contact_form toneMint
class node_traveler,node_browser,node_email toneIndigo
```

## Components

### Travel chat

- [Chat interface](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`
- [LangGraph app](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`
- [Agent node](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`
- **Ollama model**
- [Tool dispatcher](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`
- [Destination lookup](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`
- [Weather lookup](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`
- [Conversation memory](https://github.com/rchava25/devops/blob/main/travelagent2.py): `travelagent2.py`

### Website

- [Home page](https://github.com/rchava25/devops/blob/main/website/index.html): `website/index.html`
- [Portfolio page](https://github.com/rchava25/devops/blob/main/website/portfolio-details.html): `website/portfolio-details.html`
- [Services page](https://github.com/rchava25/devops/blob/main/website/service-details.html): `website/service-details.html`
- [Starter page](https://github.com/rchava25/devops/blob/main/website/starter-page.html): `website/starter-page.html`

### Contact handling

- [Contact handler](https://github.com/rchava25/devops/blob/main/website/forms/contact.php): `website/forms/contact.php`

### Other components

- **Traveler**
- **Website visitor**
- **Email recipient**

## Connections

- Traveler → Chat interface: asks
- Chat interface → LangGraph app: streams request
- LangGraph app → Agent node: runs
- Agent node → Ollama model: invokes
- Ollama model → Agent node: returns response
- Agent node → Tool dispatcher: dispatches calls
- Tool dispatcher → Destination lookup: calls
- Tool dispatcher → Weather lookup: calls
- Tool dispatcher → Agent node: returns results
- LangGraph app → Conversation memory: checkpoints state
- Website visitor → Home page: requests
- Website visitor → Portfolio page: requests
- Website visitor → Services page: requests
- Website visitor → Starter page: requests
- Contact handler → Email recipient: sends message
