# oleander - [Quickstart](https://docs.oleander.dev/quickstart.md): Connect an agent to oleander, upload or connect your data, and ask your first question in minutes. - [Introduction](https://docs.oleander.dev/introduction.md): The agent-first data lake. - [Architecture](https://docs.oleander.dev/architecture.md): Learn how your data stack connects to oleander through OpenLineage and OpenTelemetry, and how telemetry builds the context graph. - [Bloom](https://docs.oleander.dev/platform/compute/bloom.md): oleander's own SQL engine: Apache DataFusion over Iceberg, running local on a sandbox or distributed across workers. - [DuckDB](https://docs.oleander.dev/platform/compute/duckdb.md): The interactive engine for mutations, external connections, and foreign catalogs. - [Polars](https://docs.oleander.dev/platform/compute/polars.md): Run Polars SQL queries and Python scripts against your Iceberg lake. - [Jobs](https://docs.oleander.dev/platform/compute/spark.md): Run and manage your Spark artifacts and jobs with oleander - [Tasks](https://docs.oleander.dev/platform/compute/tasks.md): Interactive Python and TypeScript environments with pre-wired lake access. - [Catalogs](https://docs.oleander.dev/platform/storage/catalogs.md): Every organization gets a private Iceberg catalog with namespaces for user data and telemetry. - [Tables](https://docs.oleander.dev/platform/storage/tables.md): Create and query tables in your private Iceberg catalog. - [Observability](https://docs.oleander.dev/platform/observability/overview.md): Full visibility into your data pipelines - lineage, traces, logs, and automated investigations. - [Lineage](https://docs.oleander.dev/platform/observability/lineage/overview.md): Unified API for lineage metadata interoperability. - [Alerts](https://docs.oleander.dev/platform/observability/alerts.md): Automatic failure detection and metric anomaly detection for your pipelines. - [Chat](https://docs.oleander.dev/platform/observability/chat.md): Investigate pipelines, trace lineage, and query your lake in plain English. - [Query routing](https://docs.oleander.dev/platform/query-routing/overview.md): One endpoint for every query. oleander parses the SQL, estimates the input, and picks the engine and machine size for you. - [Transpilation](https://docs.oleander.dev/platform/query-routing/transpilation.md): Dialect detection, engine badges, and SQL rewrites across DuckDB, Bloom, Spark, and Polars. - [API Keys](https://docs.oleander.dev/platform/settings/api-keys.md): Create and manage API keys for the oleander API and CLI. - [Integrations](https://docs.oleander.dev/platform/settings/integrations.md): Connect OpenLineage producers to oleander for automatic lineage tracking. - [Environment](https://docs.oleander.dev/platform/settings/environment.md): Store API keys, tokens, and config securely for your organization. - [Webhooks](https://docs.oleander.dev/platform/settings/webhooks.md): Learn how to set up webhooks and use them to forward OpenLineage events. - [Postgres](https://docs.oleander.dev/connections/postgres.md): Query a live Postgres database from the lake, and import tables into Iceberg with a parallel, snapshot-consistent read. - [BigQuery](https://docs.oleander.dev/connections/bigquery.md): Attach a Google Cloud project and query BigQuery tables alongside your Iceberg lake. - [Snowflake](https://docs.oleander.dev/connections/snowflake.md): Query Snowflake tables from the lake, or register Snowflake Horizon as an Iceberg catalog. - [Coding with agents](https://docs.oleander.dev/mcp/introduction.md): Give your coding agent access to your lake, pipelines, and lineage through the oleander MCP server and CLI. - [Claude](https://docs.oleander.dev/mcp/claude.md): Install the oleander plugin and MCP server in Claude Code and Claude Cowork - [OpenAI Codex](https://docs.oleander.dev/mcp/codex.md): Configure the oleander MCP server in OpenAI Codex - [Cursor](https://docs.oleander.dev/mcp/cursor.md): Configure the oleander MCP server in Cursor - [OpenCode](https://docs.oleander.dev/mcp/opencode.md): Configure the oleander MCP server in OpenCode - [MCP Tools Reference](https://docs.oleander.dev/mcp/protocol.md): All 50 tools exposed by the oleander MCP server. - [Intro](https://docs.oleander.dev/cli/introduction.md): Install and configure the oleander CLI to manage Spark jobs, query the lake, manage catalogs and tables, handle environment variables, and save queries from your terminal. - [Spark](https://docs.oleander.dev/cli/spark.md): Initialize workspaces, upload artifacts, submit jobs, and register clusters from the CLI. - [Lake](https://docs.oleander.dev/cli/lake.md): Query the lake, explore catalogs, register catalogs, and launch a DuckDB terminal from the CLI. - [Polars](https://docs.oleander.dev/cli/polars.md): Run Polars workloads against your lake - SQL queries or Python scripts - from the CLI. - [Env](https://docs.oleander.dev/cli/env.md): Manage organization-level environment variables from the CLI. - [Queries](https://docs.oleander.dev/cli/queries.md): Save, retrieve, and manage named SQL queries from the CLI. - [Spark](https://docs.oleander.dev/integrations/spark.md): Configure oleander with Apache Spark - [Airflow](https://docs.oleander.dev/integrations/airflow.md): Configure oleander with Apache Airflow - [dbt](https://docs.oleander.dev/integrations/dbt.md): Configure oleander with dbt - [OpenLineage producers](https://docs.oleander.dev/build-deploy.md): Connect any OpenLineage-compatible tool to oleander for automatic lineage tracking. - [API Reference](https://docs.oleander.dev/api-reference/introduction.md): REST API for ingesting lineage events and querying the oleander lake. - [Record event](https://docs.oleander.dev/api-reference/record-event.md): Submit an OpenLineage compliant event to record lineage metadata. This is the primary endpoint for ingesting lineage data from your pipelines and integrations. - [Retrieve events](https://docs.oleander.dev/api-reference/retrieve-events.md): List lineage events. Supports filtering by time range, run, state, namespace, job, and integrations. Results can be paginated and sorted. - [Query (routed)](https://docs.oleander.dev/api-reference/query-routed.md): The unified query endpoint. oleander parses the SQL, estimates how much data the referenced tables hold, and picks the engine (DuckDB, Polars, Bloom, or Spark) and machine size to match. Leave `engine` on `auto` unless you need a specific one. - [DuckDB (legacy)](https://docs.oleander.dev/api-reference/duckdb-legacy.md): Legacy endpoint. Executes SQL against the oleander lake, always on DuckDB, sized by the organization's default sandbox setting rather than by the query. Prefer POST /api/v1/query, which routes to the right engine and machine; use this only for autoSaveByHash. All queries capture lineage metadata aut… - [Spark](https://docs.oleander.dev/api-reference/spark.md): Execute a SQL query against the oleander lake using managed Spark. The query runs as a named job in the specified namespace. Results are written to `output_table` as an Iceberg table. Lineage is captured automatically for every run. - [Polars](https://docs.oleander.dev/api-reference/polars.md): Execute a Polars workload against your Iceberg lake tables. Supports two modes: **query** (Polars SQL run against registered tables) and **script** (user-authored Python that assigns `result` to a LazyFrame or DataFrame). Workloads run in an isolated sandbox; pass `distributed: true` to offload exec… - [Intro](https://docs.oleander.dev/sdk/typescript/introduction.md): Use the oleander API from TypeScript: query the lake, inspect Spark clusters, and submit Spark jobs. - [Query](https://docs.oleander.dev/sdk/typescript/query.md): Run and submit queries through the oleander query router. - [Spark Jobs](https://docs.oleander.dev/sdk/typescript/spark-jobs.md): Inspect Spark clusters, upload and list artifacts, submit jobs, and monitor runs. - [Spark SQL](https://docs.oleander.dev/sdk/typescript/spark-sql.md): Submit Spark SQL queries that write results to Iceberg tables. - [Polars](https://docs.oleander.dev/sdk/typescript/polars.md): Run Polars SQL queries or Python scripts over lake tables. - [Catalogs](https://docs.oleander.dev/sdk/typescript/catalogs.md): Browse Iceberg catalogs, namespaces, and tables, and inspect table metadata, schemas, and sizes. - [Environment Variables](https://docs.oleander.dev/sdk/typescript/environment-variables.md): Manage organization environment variables available to Spark jobs and scripts. - [Intro](https://docs.oleander.dev/sdk/python/introduction.md): Use the oleander API from Python: query the lake, inspect Spark clusters, and submit Spark jobs. - [Query](https://docs.oleander.dev/sdk/python/query.md): Run and submit queries through the oleander query router. - [Spark Jobs](https://docs.oleander.dev/sdk/python/spark-jobs.md): Inspect Spark clusters, list uploaded artifacts, submit jobs, and monitor runs. - [Spark SQL](https://docs.oleander.dev/sdk/python/spark-sql.md): Submit Spark SQL queries that write results to Iceberg tables. - [Polars](https://docs.oleander.dev/sdk/python/polars.md): Run Polars SQL queries or Python scripts over lake tables. - [Catalogs](https://docs.oleander.dev/sdk/python/catalogs.md): Browse Iceberg catalogs, namespaces, and tables, and inspect table metadata, schemas, and sizes. - [Environment Variables](https://docs.oleander.dev/sdk/python/environment-variables.md): Manage organization environment variables available to Spark jobs and scripts. ## OpenAPI Specs - [openapi](/api-reference/openapi.json) ## Optional - [Slack](https://join.slack.com/t/oleander-hq/shared_invite/zt-2wzl5ncjb-c~ZubVAHVzBP7OZM~Hwuyw) - [Blog](https://oleander.dev/blog)