# apache/seatunnel architecture

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

- Interactive diagram: https://gitdiagram.com/apache/seatunnel
- Repository: https://github.com/apache/seatunnel

## Overview

Apache SeaTunnel is a distributed data integration platform: users configure a job and choose an execution engine, then source connectors read data, optional transforms process it, and sink connectors write it. Its connector model supports batch and streaming/CDC synchronization, including multi-table scenarios; the README also highlights distributed snapshots, multimodal data, and real-time monitoring. The API defines connector and table contracts, while the Zeta engine coordinates jobs and exposes runtime services. The graph combines README-level workflow and capabilities with sampled source; some subsystem wiring is documented rather than verified in the excerpts.

Main entry points: [`seatunnel-connectors-v2/connector-starrocks`](https://github.com/apache/seatunnel/tree/dev/seatunnel-connectors-v2/connector-starrocks) (Source Connectors), [`seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/CoordinatorService.java`](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/CoordinatorService.java) (Zeta Engine), [`seatunnel-connectors-v2/connector-bigquery`](https://github.com/apache/seatunnel/tree/dev/seatunnel-connectors-v2/connector-bigquery) (Sink Connectors), [`seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink`](https://github.com/apache/seatunnel/tree/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink) (Multi-table Sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_contracts["Connector Contracts"]
  node_source_contract["Source API"]
  node_sink_contract["Sink API<br/>[SeaTunnelSink.java]"]
  node_table_model["Table and Schema<br/>[TableSchema.java]"]
end

subgraph group_connectors["Data Connectors"]
  node_source_connectors["Source Connectors"]
  node_sink_connectors["Sink Connectors"]
  node_multitable["Multi-table Sync"]
end

subgraph group_processing["Data Processing"]
  node_transform["SQL Transform<br/>[ZetaSQLEngine.java]"]
  node_multimodal["Multimodal Data"]
  node_snapshot["Distributed Snapshot"]
end

subgraph group_runtime["Execution Runtime"]
  node_zeta["Zeta Engine"]
  node_other_engines["Flink and Spark"]
  node_engine_context["Engine State Context"]
end

subgraph group_operations["Operations and Monitoring"]
  node_job_history[("Job History")]
  node_metrics["Realtime Metrics"]
  node_rest["REST Services<br/>[BaseService.java]"]
  node_task_logs["Task Log Cleanup"]
end

node_user(("Job Author"))
node_config["Job Configuration"]
node_engines["Engine Choice"]
node_external_sources[("External Data Sources")]
node_external_sinks[("External Data Targets")]

node_user -->|"defines job"| node_config
node_user -->|"selects engine"| node_engines
node_config -.->|"submits job"| node_zeta
node_engines -.->|"selects runtime"| node_zeta
node_engines -.->|"selects runtime"| node_other_engines
node_zeta -.->|"runs sources"| node_source_connectors
node_source_connectors -->|"implements"| node_source_contract
node_source_connectors -.->|"reads data"| node_external_sources
node_source_connectors -.->|"uses schemas"| node_table_model
node_source_connectors -.->|"provides rows"| node_transform
node_transform -.->|"transforms rows"| node_sink_connectors
node_sink_connectors -->|"implements"| node_sink_contract
node_sink_connectors -.->|"writes data"| node_external_sinks
node_sink_connectors -.->|"uses schemas"| node_table_model
node_source_connectors -.->|"supports sync"| node_multitable
node_multitable -.->|"coordinates writers"| node_sink_connectors
node_source_connectors -.->|"supports consistency"| node_snapshot
node_source_connectors -.->|"reads varied formats"| node_multimodal
node_sink_connectors -.->|"writes varied formats"| node_multimodal
node_zeta -->|"uses state stores"| node_engine_context
node_zeta -.->|"tracks job state"| node_job_history
node_zeta -.->|"exposes metrics"| node_metrics
node_rest -.->|"serves monitoring"| node_metrics
node_zeta -.->|"cleans retained logs"| node_task_logs

click node_source_contract "https://github.com/apache/seatunnel/blob/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelSource.java"
click node_sink_contract "https://github.com/apache/seatunnel/blob/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SeaTunnelSink.java"
click node_table_model "https://github.com/apache/seatunnel/blob/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java"
click node_source_connectors "https://github.com/apache/seatunnel/tree/dev/seatunnel-connectors-v2/connector-starrocks"
click node_sink_connectors "https://github.com/apache/seatunnel/tree/dev/seatunnel-connectors-v2/connector-bigquery"
click node_multitable "https://github.com/apache/seatunnel/tree/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink"
click node_transform "https://github.com/apache/seatunnel/blob/dev/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sql/zeta/ZetaSQLEngine.java"
click node_zeta "https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/CoordinatorService.java"
click node_engine_context "https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/common/SeaTunnelEngineContext.java"
click node_job_history "https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java"
click node_metrics "https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/observability/RealtimeMetricsService.java"
click node_rest "https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java"
click node_task_logs "https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/telemetry/log/TaskLogManagerService.java"

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_source_contract,node_sink_contract,node_table_model toneBlue
class node_source_connectors,node_sink_connectors,node_multitable,node_external_sources,node_external_sinks toneAmber
class node_transform,node_multimodal,node_snapshot toneMint
class node_zeta,node_other_engines,node_engine_context toneRose
class node_job_history,node_metrics,node_rest,node_task_logs,node_user,node_config,node_engines toneIndigo
```

## Components

### Connector Contracts

- [Source API](https://github.com/apache/seatunnel/blob/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelSource.java): `seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelSource.java`
- [Sink API](https://github.com/apache/seatunnel/blob/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SeaTunnelSink.java): `seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SeaTunnelSink.java`
- [Table and Schema](https://github.com/apache/seatunnel/blob/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java): `seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java`

### Data Connectors

- [Source Connectors](https://github.com/apache/seatunnel/tree/dev/seatunnel-connectors-v2/connector-starrocks): `seatunnel-connectors-v2/connector-starrocks`
- [Sink Connectors](https://github.com/apache/seatunnel/tree/dev/seatunnel-connectors-v2/connector-bigquery): `seatunnel-connectors-v2/connector-bigquery`
- [Multi-table Sync](https://github.com/apache/seatunnel/tree/dev/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink): `seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink`

### Data Processing

- [SQL Transform](https://github.com/apache/seatunnel/blob/dev/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sql/zeta/ZetaSQLEngine.java): `seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sql/zeta/ZetaSQLEngine.java`
- **Multimodal Data**
- **Distributed Snapshot**

### Execution Runtime

- [Zeta Engine](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/CoordinatorService.java): `seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/CoordinatorService.java`
- **Flink and Spark**
- [Engine State Context](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/common/SeaTunnelEngineContext.java): `seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/common/SeaTunnelEngineContext.java`

### Operations and Monitoring

- [Job History](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java): `seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java`
- [Realtime Metrics](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/observability/RealtimeMetricsService.java): `seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/observability/RealtimeMetricsService.java`
- [REST Services](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java): `seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java`
- [Task Log Cleanup](https://github.com/apache/seatunnel/blob/dev/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/telemetry/log/TaskLogManagerService.java): `seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/telemetry/log/TaskLogManagerService.java`

### Other components

- **Job Author**
- **Job Configuration**
- **Engine Choice**
- **External Data Sources**
- **External Data Targets**

## Connections

- Job Author → Job Configuration: defines job
- Job Author → Engine Choice: selects engine
- Job Configuration → Zeta Engine: submits job
- Engine Choice → Zeta Engine: selects runtime
- Engine Choice → Flink and Spark: selects runtime
- Zeta Engine → Source Connectors: runs sources
- Source Connectors → Source API: implements
- Source Connectors → External Data Sources: reads data
- Source Connectors → Table and Schema: uses schemas
- Source Connectors → SQL Transform: provides rows
- SQL Transform → Sink Connectors: transforms rows
- Sink Connectors → Sink API: implements
- Sink Connectors → External Data Targets: writes data
- Sink Connectors → Table and Schema: uses schemas
- Source Connectors → Multi-table Sync: supports sync
- Multi-table Sync → Sink Connectors: coordinates writers
- Source Connectors → Distributed Snapshot: supports consistency
- Source Connectors → Multimodal Data: reads varied formats
- Sink Connectors → Multimodal Data: writes varied formats
- Zeta Engine → Engine State Context: uses state stores
- Zeta Engine → Job History: tracks job state
- Zeta Engine → Realtime Metrics: exposes metrics
- REST Services → Realtime Metrics: serves monitoring
- Zeta Engine → Task Log Cleanup: cleans retained logs
