Overview
What Eddytor is and how the server, engine, Postgres, and object storage fit together.
Eddytor is a master-data management platform: spreadsheet-easy editing on
real Delta Lake tables in your own object storage (S3,
GCS, or Azure Blob) - your buckets stay the source of truth (see
Connect storage), and Apache
Arrow is the in-memory format used to move data
around. Tables get typed columns, a fully-qualified name
(catalog.schema.table), version history with rollback, and column-level
governance rules ("domains") stored as
metadata on the Delta table itself, so the rules travel with the data. Eddytor
is API-first: the server speaks REST + gRPC + MCP, and the Web UI is
optional. You can run the whole stack yourself - see
Editions & images.
The parts
| Part | Role |
|---|---|
| Server | The control plane. Serves the REST + gRPC API, the MCP endpoint, auth, and the optional Web UI's backend. Runs database migrations at boot. |
| Engine | The data plane. Reads and writes Delta Lake tables and runs queries. Stateless - scales out horizontally under load. |
| Postgres | Eddytor's own metadata: users, organisations, storage connections, API keys, encrypted secrets. Not your table data. |
| Object storage | Your S3 / GCS / Azure Blob buckets, where the Delta tables actually live. Eddytor connects to it; it never copies data elsewhere. |
┌──────────┐ gRPC (h2c) ┌──────────┐
client ───▶│ server │────────────────────▶│ engine │───▶ object storage
CLI/REST │ (control)│◀────────────────────│ (data, │ (your Delta tables)
MCP/UI └────┬─────┘ │ scales) │
│ └──────────┘
▼
┌──────────┐
│ Postgres │ (Eddytor metadata, not your data)
└──────────┘How a request flows
- A client (CLI, REST, MCP, or the Web UI) calls the server.
- The server authenticates, applies permissions, and reads/writes its metadata in Postgres.
- For anything touching table data, the server dispatches to an engine.
- The engine reads/writes the Delta table directly in your object storage and streams results back.
TLS is terminated at the edge, not between the parts - see TLS termination & reverse proxy.
Bulk SQL (eddytor query) goes over Flight SQL on its own port, not the REST
API - see Flight SQL endpoint.