# spring-ai-alibaba/dataagent architecture

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

- Interactive diagram: https://gitdiagram.com/spring-ai-alibaba/dataagent
- Repository: https://github.com/spring-ai-alibaba/dataagent

## Overview

#### 1. Purpose and deployable entry points
DataAgent is an enterprise AI data analyst: conversational NL-to-SQL, optional sandboxed Python analysis, and report/chart generation. The backend is a Java 17+/Spring Boot application rooted at `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/DataAgentApplication.java`; its API surface is exposed by controllers such as `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/ChatController.java` and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/GraphController.java`.

A separate Nuxt frontend provides the browser UI, entering through `data-agent-frontend-nuxt/app/app.vue` and route pages including `data-agent-frontend-nuxt/app/pages/chat.vue`. Container deployment is defined by `docker-file/docker-compose.yml`, `docker-file/Dockerfile-backend`, and `docker-file/Dockerfile-frontend`.

#### 2. API, security, and application boundary
Controllers separate HTTP/WebFlux concerns from domain services for agents, data sources, knowledge, models, prompts, sessions, and graph execution. Responses use API/streaming-oriented value objects, including `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/vo/ChatResponse.java` and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/vo/SessionUpdateEvent.java`.

Reactive API-key authentication is configured at `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/config/WebFluxSecurityConfiguration.java`, implemented through `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/security/AgentApiKeyReactiveAuthenticationManager.java`, and backed by credential lifecycle handling in `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/security/ApiKeyCredentialService.java`.

#### 3. Conversational graph orchestration
`GraphServiceImpl` is the orchestration boundary from chat requests into a stateful Spring AI Alibaba Graph workflow: `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/GraphServiceImpl.java`. Streaming and multi-turn state are managed by `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/Context/StreamContext.java` and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/Context/MultiTurnContextManager.java`.

The workflow decomposes requests into graph nodes and dispatchers: recognize intent/feasibility, enhance the query, recall schema/evidence, validate semantics, plan and execute, then produce a report. Core node implementations live in `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/PlannerNode.java`, `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/SqlGenerateNode.java`, and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/ReportGeneratorNode.java`. Human feedback is an explicit control-flow branch via `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/HumanFeedbackNode.java`.

#### 4. Data access and NL2SQL execution
Agent-specific datasource configuration and schema metadata drive SQL generation and execution. `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/nl2sql/Nl2SqlServiceImpl.java` provides the NL2SQL service boundary; prompt templates are externalized under `data-agent-management/src/main/resources/prompts/`, including `new-sql-generate.txt` and `planner.txt`.

The connector layer abstracts database access, dialect DDL, pools, and result conversion through `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/connector/SqlExecutor.java`, `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/connector/accessor/AccessorFactory.java`, and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/connector/pool/DBConnectionPoolFactory.java`. Concrete support includes MySQL, PostgreSQL, Oracle, SQL Server, Hive, H2, and Dameng. MySQL is the primary management-store runtime expectation, with schema at `data-agent-management/src/main/resources/sql/schema.sql`.

#### 5. Knowledge, retrieval, and model runtime
Business knowledge, agent knowledge, semantic models, logical relations, and datasource schema are persisted as domain entities and used as retrieval context. The ingestion lifecycle is centered on `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/knowledge/AgentKnowledgeServiceImpl.java` and asynchronous embedding events in `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/event/AgentKnowledgeEventListener.java`.

Vector retrieval is abstracted behind `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreServiceImpl.java`; configurations indicate Milvus and Elasticsearch alternatives in `data-agent-management/src/main/resources/application-milvus.yml` and `data-agent-management/src/main/resources/application-elasticsearch.yml`. Hybrid Elasticsearch retrieval and reciprocal-rank fusion are implemented in `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/hybrid/retrieval/impl/ElasticsearchHybridRetrievalStrategy.java` and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/hybrid/fusion/impl/RrfFusionStrategy.java`.

LLM and embedding providers are dynamically registered/configured via `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/aimodelconfig/AiModelRegistry.java` and `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/aimodelconfig/DynamicModelFactory.java`.

#### 6. Analysis output, integrations, and frontend flow
Workflow plans may execute generated Python after SQL extraction; the isolation boundary is `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/code/sandbox/SaaSandboxPythonCodeExecutorService.java` and its task runtime `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/code/sandbox/runtime/SaaSandboxRuntime.java`. Docker is materially required for this sandbox path.

The backend can also operate as an MCP tool server through `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/mcp/McpServerService.java`, and emits Langfuse-oriented node tracing through `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/langfuse/NodeTracingLifecycleListener.java`.

The Nuxt UI calls backend service modules, maintains chat state, and renders streamed workflow progress/results: `data-agent-frontend-nuxt/app/services/chat/index.ts`, `data-agent-frontend-nuxt/app/stores/chat.ts`, and `data-agent-frontend-nuxt/app/components/chat/ChatWorkflowTimeline.vue`. Markdown reports and ECharts rendering are handled at `data-agent-frontend-nuxt/app/components/chat/ChatMarkdownReport.vue` and `data-agent-frontend-nuxt/app/utils/markdown/markdown-plugin-echarts.ts`.

Main entry points: [`data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/PlannerNode.java`](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/PlannerNode.java) (Planning, SQL & reporting nodes), [`data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/GraphServiceImpl.java`](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/GraphServiceImpl.java) (Graph orchestrator), [`data-agent-frontend-nuxt/app/pages/chat.vue`](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/pages/chat.vue) (Chat page & state), [`data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/ChatController.java`](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/ChatController.java) (HTTP controllers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Nuxt frontend"]
  node_ui["Browser UI<br/>Nuxt app<br/>[app.vue]"]
  node_chat_page["Chat page &amp; state<br/>Nuxt chat<br/>[chat.vue]"]
  node_chat_client["Chat service<br/>frontend API client<br/>[index.ts]"]
  node_workflow_timeline["Workflow timeline<br/>chat component"]
  node_report_renderer["Report &amp; charts<br/>Markdown/ECharts renderer"]
end

subgraph group_api["Backend API &amp; security"]
  node_backend["Spring Boot backend<br/>Java application"]
  node_controllers["HTTP controllers<br/>WebFlux API"]
  node_api_security["API-key security<br/>reactive authentication"]
  node_credential_service["Credential lifecycle<br/>API-key service"]
end

subgraph group_workflow["AI workflow"]
  node_graph_service{{"Graph orchestrator<br/>stateful workflow service"}}
  node_conversation_context["Stream &amp; multi-turn context<br/>conversation state<br/>[StreamContext.java]"]
  node_workflow_nodes["Planning, SQL &amp; reporting nodes<br/>graph nodes<br/>[PlannerNode.java]"]
  node_human_feedback["Human feedback branch<br/>workflow control node"]
end

subgraph group_data["Data &amp; AI runtime"]
  node_nl2sql["NL2SQL service<br/>SQL generation service"]
  node_sql_connectors["SQL connector layer<br/>database abstraction<br/>[SqlExecutor.java]"]
  node_management_db[("Management store<br/>MySQL schema<br/>[schema.sql]")]
  node_knowledge_retrieval["Knowledge ingestion &amp; retrieval<br/>vector/hybrid retrieval"]
  node_model_runtime["LLM &amp; embedding runtime<br/>dynamic model registry"]
end

subgraph group_integrations["Execution &amp; observability"]
  node_python_sandbox{{"Python sandbox<br/>containerized executor"}}
  node_mcp_server["MCP tool server<br/>external tool interface"]
  node_tracing["Node tracing<br/>Langfuse listener"]
  node_deployment["Container deployment<br/>Docker Compose<br/>[docker-compose.yml]"]
end

node_ui --> node_chat_page
node_chat_page -->|"chat requests"| node_chat_client
node_chat_page -->|"stream progress"| node_workflow_timeline
node_chat_page -->|"report results"| node_report_renderer
node_chat_client -->|"HTTP/streaming API"| node_controllers
node_backend -->|"hosts"| node_controllers
node_controllers -->|"authenticated by"| node_api_security
node_api_security -->|"validates keys"| node_credential_service
node_controllers -->|"chat and graph requests"| node_graph_service
node_graph_service -->|"maintains state"| node_conversation_context
node_graph_service -->|"dispatches"| node_workflow_nodes
node_workflow_nodes -.->|"feedback branch"| node_human_feedback
node_workflow_nodes -->|"plans and generates SQL"| node_nl2sql
node_workflow_nodes -->|"retrieves evidence"| node_knowledge_retrieval
node_workflow_nodes -->|"LLM inference"| node_model_runtime
node_workflow_nodes -.->|"optional Python analysis"| node_python_sandbox
node_nl2sql -->|"execute SQL"| node_sql_connectors
node_sql_connectors -->|"agent metadata and schema"| node_management_db
node_knowledge_retrieval -->|"knowledge metadata"| node_management_db
node_graph_service -.->|"node lifecycle events"| node_tracing
node_mcp_server -->|"tool-driven execution"| node_graph_service
node_deployment -->|"deploys"| node_ui
node_deployment -->|"deploys"| node_backend
node_deployment -->|"Docker runtime"| node_python_sandbox

click node_ui "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/app.vue"
click node_chat_page "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/pages/chat.vue"
click node_chat_client "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/services/chat/index.ts"
click node_workflow_timeline "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/components/chat/ChatWorkflowTimeline.vue"
click node_report_renderer "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/components/chat/ChatMarkdownReport.vue"
click node_backend "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/DataAgentApplication.java"
click node_controllers "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/ChatController.java"
click node_api_security "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/config/WebFluxSecurityConfiguration.java"
click node_credential_service "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/security/ApiKeyCredentialService.java"
click node_graph_service "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/GraphServiceImpl.java"
click node_conversation_context "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/Context/StreamContext.java"
click node_workflow_nodes "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/PlannerNode.java"
click node_human_feedback "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/HumanFeedbackNode.java"
click node_nl2sql "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/nl2sql/Nl2SqlServiceImpl.java"
click node_sql_connectors "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/connector/SqlExecutor.java"
click node_management_db "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/resources/sql/schema.sql"
click node_knowledge_retrieval "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/knowledge/AgentKnowledgeServiceImpl.java"
click node_model_runtime "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/aimodelconfig/AiModelRegistry.java"
click node_python_sandbox "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/code/sandbox/SaaSandboxPythonCodeExecutorService.java"
click node_mcp_server "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/mcp/McpServerService.java"
click node_tracing "https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/langfuse/NodeTracingLifecycleListener.java"
click node_deployment "https://github.com/spring-ai-alibaba/dataagent/blob/main/docker-file/docker-compose.yml"

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_ui,node_chat_page,node_chat_client,node_workflow_timeline,node_report_renderer toneBlue
class node_backend,node_controllers,node_api_security,node_credential_service toneAmber
class node_graph_service,node_conversation_context,node_workflow_nodes,node_human_feedback toneMint
class node_nl2sql,node_sql_connectors,node_management_db,node_knowledge_retrieval,node_model_runtime toneRose
class node_python_sandbox,node_mcp_server,node_tracing,node_deployment toneIndigo
```

## Components

### Nuxt frontend

- [Browser UI](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/app.vue): Nuxt app · `data-agent-frontend-nuxt/app/app.vue`
- [Chat page & state](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/pages/chat.vue): Nuxt chat · Streams workflow progress and renders reports. · `data-agent-frontend-nuxt/app/pages/chat.vue`
- [Chat service](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/services/chat/index.ts): frontend API client · `data-agent-frontend-nuxt/app/services/chat/index.ts`
- [Workflow timeline](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/components/chat/ChatWorkflowTimeline.vue): chat component · `data-agent-frontend-nuxt/app/components/chat/ChatWorkflowTimeline.vue`
- [Report & charts](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-frontend-nuxt/app/components/chat/ChatMarkdownReport.vue): Markdown/ECharts renderer · `data-agent-frontend-nuxt/app/components/chat/ChatMarkdownReport.vue`

### Backend API & security

- [Spring Boot backend](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/DataAgentApplication.java): Java application · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/DataAgentApplication.java`
- [HTTP controllers](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/ChatController.java): WebFlux API · Chat and graph endpoints expose request and streaming APIs. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/controller/ChatController.java`
- [API-key security](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/config/WebFluxSecurityConfiguration.java): reactive authentication · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/config/WebFluxSecurityConfiguration.java`
- [Credential lifecycle](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/security/ApiKeyCredentialService.java): API-key service · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/security/ApiKeyCredentialService.java`

### AI workflow

- [Graph orchestrator](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/GraphServiceImpl.java): stateful workflow service · Starts graph execution for conversational requests. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/GraphServiceImpl.java`
- [Stream & multi-turn context](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/Context/StreamContext.java): conversation state · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/graph/Context/StreamContext.java`
- [Planning, SQL & reporting nodes](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/PlannerNode.java): graph nodes · Plans, generates SQL, executes workflow branches, and produces reports. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/PlannerNode.java`
- [Human feedback branch](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/HumanFeedbackNode.java): workflow control node · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/workflow/node/HumanFeedbackNode.java`

### Data & AI runtime

- [NL2SQL service](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/nl2sql/Nl2SqlServiceImpl.java): SQL generation service · Uses schema, retrieval context, and external prompt templates. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/nl2sql/Nl2SqlServiceImpl.java`
- [SQL connector layer](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/connector/SqlExecutor.java): database abstraction · Creates dialect-aware accessors, pools, and result conversion. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/connector/SqlExecutor.java`
- [Management store](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/resources/sql/schema.sql): MySQL schema · Persists agents, knowledge, models, relations, and datasource metadata. · `data-agent-management/src/main/resources/sql/schema.sql`
- [Knowledge ingestion & retrieval](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/knowledge/AgentKnowledgeServiceImpl.java): vector/hybrid retrieval · Embeds knowledge asynchronously and retrieves evidence. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/knowledge/AgentKnowledgeServiceImpl.java`
- [LLM & embedding runtime](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/aimodelconfig/AiModelRegistry.java): dynamic model registry · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/aimodelconfig/AiModelRegistry.java`

### Execution & observability

- [Python sandbox](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/code/sandbox/SaaSandboxPythonCodeExecutorService.java): containerized executor · Runs generated analysis code in an isolated task runtime. · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/code/sandbox/SaaSandboxPythonCodeExecutorService.java`
- [MCP tool server](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/mcp/McpServerService.java): external tool interface · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/mcp/McpServerService.java`
- [Node tracing](https://github.com/spring-ai-alibaba/dataagent/blob/main/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/langfuse/NodeTracingLifecycleListener.java): Langfuse listener · `data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/langfuse/NodeTracingLifecycleListener.java`
- [Container deployment](https://github.com/spring-ai-alibaba/dataagent/blob/main/docker-file/docker-compose.yml): Docker Compose · Deploys frontend, backend, and required container runtime. · `docker-file/docker-compose.yml`

## Connections

- Browser UI → Chat page & state
- Chat page & state → Chat service: chat requests
- Chat page & state → Workflow timeline: stream progress
- Chat page & state → Report & charts: report results
- Chat service → HTTP controllers: HTTP/streaming API
- Spring Boot backend → HTTP controllers: hosts
- HTTP controllers → API-key security: authenticated by
- API-key security → Credential lifecycle: validates keys
- HTTP controllers → Graph orchestrator: chat and graph requests
- Graph orchestrator → Stream & multi-turn context: maintains state
- Graph orchestrator → Planning, SQL & reporting nodes: dispatches
- Planning, SQL & reporting nodes → Human feedback branch: feedback branch
- Planning, SQL & reporting nodes → NL2SQL service: plans and generates SQL
- Planning, SQL & reporting nodes → Knowledge ingestion & retrieval: retrieves evidence
- Planning, SQL & reporting nodes → LLM & embedding runtime: LLM inference
- Planning, SQL & reporting nodes → Python sandbox: optional Python analysis
- NL2SQL service → SQL connector layer: execute SQL
- SQL connector layer → Management store: agent metadata and schema
- Knowledge ingestion & retrieval → Management store: knowledge metadata
- Graph orchestrator → Node tracing: node lifecycle events
- MCP tool server → Graph orchestrator: tool-driven execution
- Container deployment → Browser UI: deploys
- Container deployment → Spring Boot backend: deploys
- Container deployment → Python sandbox: Docker runtime
