Skip to main content
Notebooks are interactive execution environments built into the platform. Each notebook gives you a persistent Python or TypeScript sandbox with your catalogs, lake tables, and external connections already wired in - no credentials to configure, no installs to run.
Notebooks are in alpha. They were previously called Tasks.
New organizations start with an example notebook that loads NYC taxi trips and charts them. Add Python, TypeScript, Spark, or Markdown cells from the add-cell button.
The Python sandbox runs Python 3.13 and comes with the following libraries pre-installed:

The oleander module

Every cell has access to a generated oleander module that wires your catalog and DuckDB connection automatically:
Query your lake directly:
Use pyiceberg for low-level catalog operations:

BigQuery

If you have BigQuery connections configured, the DuckDB bigquery extension is installed automatically. BigQuery tables are accessible as connection_name.dataset.table:

State persistence

Variables persist across cell executions within a session. If you define a DataFrame in one cell, it is available in the next. State is stored in /tmp/_oleander_state.pkl and survives cell reruns.

Output

DataFrames are displayed as structured tables. Matplotlib figures are rendered as inline SVG. Other values are printed as text.

Compute size

The toolbar’s compute selector sizes the sandbox that runs your cells: 2, 4, or 8 CPUs, with 2 GB of memory per CPU. Changing it resizes the sandbox in place, so variables and state carry over. 8 CPUs is the ceiling for notebook sandboxes; it is separate from the larger tiers the query router uses for lake queries.

Ask AI

Press ⌘E in a cell to generate or edit its code from a plain-English prompt. The assistant knows the sandbox’s libraries and your catalog structure.

SQL cells

SQL cells run through the query router, like the lake editor. Auto picks the engine for each run, or you can pin DuckDB, Polars, Bloom, or SparkSQL from the cell’s run settings. SparkSQL writes its result to a table and links to the Spark run instead of returning rows. Pick a catalog to scope table autocomplete. Up to 500 rows of each result are saved with the cell.

Spark cells

Submit inline PySpark code as a managed Spark job directly from a notebook cell. The job runs in the oleander.tasks namespace and returns a run ID you can track in the platform. Lineage from Spark cell runs is captured automatically.