# iamakashtechie/travel-concierge-agent architecture

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

- Interactive diagram: https://gitdiagram.com/iamakashtechie/travel-concierge-agent
- Repository: https://github.com/iamakashtechie/travel-concierge-agent

## Overview

Travel Concierge is a local ADK multi-agent demo: a traveler asks for trip help, the root concierge delegates to planning, booking, or pre-trip assistance, and the specialist returns a response using tools and session resources. Planning captures trip details and creates saved itineraries; booking consults those details or an itinerary before showing demo options and requires approval for demo confirmation. Pre-trip research combines destination, language, and weather information. The API exposes chat and health endpoints. Edges use the README and shown source; ADK-mediated calls and unsampled specialist routing are described at a high level rather than inferred as direct calls.

Main entry points: [`runtime.py`](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py) (ADK runtime), [`sub_agents/booking/agent.py`](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/booking/agent.py) (Booking specialist), [`agent.py`](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/agent.py) (Root concierge), [`sub_agents/planning/agent.py`](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/planning/agent.py) (Trip planning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry"]
  node_http_api["Chat API<br/>[app.py]"]
  node_runtime["ADK runtime<br/>[runtime.py]"]
end

subgraph group_agents["Agent workflows"]
  node_root["Root concierge<br/>[agent.py]"]
  node_planning["Trip planning<br/>[agent.py]"]
  node_booking["Booking specialist<br/>[agent.py]"]
  node_pre_trip["Pre-trip specialist<br/>[agent.py]"]
end

subgraph group_domain["Travel operations"]
  node_trip_state[("Trip details<br/>[trip_state.py]")]
  node_itinerary[("Itinerary artifacts<br/>[trip_state.py]")]
  node_booking_search["Flight and hotel search<br/>[booking.py]"]
  node_confirmation["Demo confirmation"]
end

subgraph group_services["Session services"]
  node_memory[("Cross-session memory<br/>[runtime.py]")]
  node_session_service[("Session service<br/>[runtime.py]")]
  node_artifact_service[("Artifact service<br/>[runtime.py]")]
end

subgraph group_research["Pre-trip research"]
  node_workflow["Pre-trip workflow"]
  node_destination["Destination facts"]
  node_language["Local phrases<br/>[translation.py]"]
  node_weather["Weather service<br/>[weather.py]"]
end

node_traveler(("Traveler"))
node_weather_provider["Weather provider"]

node_traveler -->|"sends chat"| node_http_api
node_http_api -->|"runs turn"| node_runtime
node_runtime -->|"runs agent"| node_root
node_runtime -->|"manages sessions"| node_session_service
node_runtime -->|"configures memory"| node_memory
node_runtime -->|"configures artifacts"| node_artifact_service
node_root -->|"delegates requests"| node_planning
node_root -->|"delegates requests"| node_booking
node_root -->|"delegates requests"| node_pre_trip
node_planning -->|"reads and saves"| node_trip_state
node_planning -->|"saves and loads"| node_itinerary
node_planning -->|"recalls preferences"| node_memory
node_booking -->|"reads details"| node_trip_state
node_booking -->|"loads itinerary"| node_itinerary
node_booking -->|"searches options"| node_booking_search
node_booking -->|"confirms approval"| node_confirmation
node_pre_trip -->|"gets phrases"| node_language
node_workflow -->|"researches facts"| node_destination
node_workflow -->|"researches phrases"| node_language
node_workflow -->|"gets forecast"| node_weather
node_weather -->|"fetches forecast"| node_weather_provider
node_weather -.->|"optionally uses Open-Meteo"| node_weather_provider
node_itinerary -->|"stores session artifact"| node_artifact_service
node_http_api -->|"returns response"| node_traveler

click node_http_api "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/app.py"
click node_runtime "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py"
click node_root "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/agent.py"
click node_planning "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/planning/agent.py"
click node_booking "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/booking/agent.py"
click node_pre_trip "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/pre_trip/agent.py"
click node_workflow "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/orchestration/pre_trip_workflow.py"
click node_destination "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/destination_info.py"
click node_language "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/pre_trip/translation.py"
click node_weather "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/weather.py"
click node_trip_state "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/trip_state.py"
click node_itinerary "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/trip_state.py"
click node_booking_search "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/booking.py"
click node_confirmation "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/booking_confirmation.py"
click node_memory "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py"
click node_session_service "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py"
click node_artifact_service "https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.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_http_api,node_runtime toneBlue
class node_root,node_planning,node_booking,node_pre_trip toneAmber
class node_trip_state,node_itinerary,node_booking_search,node_confirmation toneMint
class node_memory,node_session_service,node_artifact_service toneRose
class node_workflow,node_destination,node_language,node_weather,node_traveler,node_weather_provider toneIndigo
```

## Components

### User entry

- [Chat API](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/app.py): `app.py`
- [ADK runtime](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py): `runtime.py`

### Agent workflows

- [Root concierge](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/agent.py): `agent.py`
- [Trip planning](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/planning/agent.py): `sub_agents/planning/agent.py`
- [Booking specialist](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/booking/agent.py): `sub_agents/booking/agent.py`
- [Pre-trip specialist](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/pre_trip/agent.py): `sub_agents/pre_trip/agent.py`

### Travel operations

- [Trip details](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/trip_state.py): `tools/trip_state.py`
- [Itinerary artifacts](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/trip_state.py): `tools/trip_state.py`
- [Flight and hotel search](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/booking.py): `tools/booking.py`
- [Demo confirmation](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/booking_confirmation.py): `tools/booking_confirmation.py`

### Session services

- [Cross-session memory](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py): `runtime.py`
- [Session service](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py): `runtime.py`
- [Artifact service](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/runtime.py): `runtime.py`

### Pre-trip research

- [Pre-trip workflow](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/orchestration/pre_trip_workflow.py): `orchestration/pre_trip_workflow.py`
- [Destination facts](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/destination_info.py): `tools/destination_info.py`
- [Local phrases](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/sub_agents/pre_trip/translation.py): `sub_agents/pre_trip/translation.py`
- [Weather service](https://github.com/iamakashtechie/travel-concierge-agent/blob/main/tools/weather.py): `tools/weather.py`

### Other components

- **Traveler**
- **Weather provider**

## Connections

- Traveler → Chat API: sends chat (evidence: `README.md`)
- Chat API → ADK runtime: runs turn (evidence: `app.py`)
- ADK runtime → Root concierge: runs agent (evidence: `runtime.py`)
- ADK runtime → Session service: manages sessions (evidence: `runtime.py`)
- ADK runtime → Cross-session memory: configures memory (evidence: `runtime.py`)
- ADK runtime → Artifact service: configures artifacts (evidence: `runtime.py`)
- Root concierge → Trip planning: delegates requests (evidence: `README.md`)
- Root concierge → Booking specialist: delegates requests (evidence: `README.md`)
- Root concierge → Pre-trip specialist: delegates requests (evidence: `README.md`)
- Trip planning → Trip details: reads and saves (evidence: `sub_agents/planning/agent.py`)
- Trip planning → Itinerary artifacts: saves and loads (evidence: `sub_agents/planning/agent.py`)
- Trip planning → Cross-session memory: recalls preferences (evidence: `sub_agents/planning/agent.py`)
- Booking specialist → Trip details: reads details (evidence: `sub_agents/booking/agent.py`)
- Booking specialist → Itinerary artifacts: loads itinerary (evidence: `sub_agents/booking/agent.py`)
- Booking specialist → Flight and hotel search: searches options (evidence: `sub_agents/booking/agent.py`)
- Booking specialist → Demo confirmation: confirms approval (evidence: `sub_agents/booking/agent.py`)
- Pre-trip specialist → Local phrases: gets phrases (evidence: `sub_agents/pre_trip/agent.py`)
- Pre-trip workflow → Destination facts: researches facts (evidence: `orchestration/pre_trip_workflow.py`)
- Pre-trip workflow → Local phrases: researches phrases (evidence: `orchestration/pre_trip_workflow.py`)
- Pre-trip workflow → Weather service: gets forecast (evidence: `orchestration/pre_trip_workflow.py`)
- Weather service → Weather provider: fetches forecast (evidence: `tools/weather.py`)
- Weather service → Weather provider: optionally uses Open-Meteo (evidence: `README.md`)
- Itinerary artifacts → Artifact service: stores session artifact (evidence: `README.md`)
- Chat API → Traveler: returns response (evidence: `README.md`)
