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

PartRole
ServerThe control plane. Serves the REST + gRPC API, the MCP endpoint, auth, and the optional Web UI's backend. Runs database migrations at boot.
EngineThe data plane. Reads and writes Delta Lake tables and runs queries. Stateless - scales out horizontally under load.
PostgresEddytor's own metadata: users, organisations, storage connections, API keys, encrypted secrets. Not your table data.
Object storageYour 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

  1. A client (CLI, REST, MCP, or the Web UI) calls the server.
  2. The server authenticates, applies permissions, and reads/writes its metadata in Postgres.
  3. For anything touching table data, the server dispatches to an engine.
  4. 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.

On this page