Notebooks are in alpha. They were previously called Tasks.
- Python
- TypeScript
The Python sandbox runs Python 3.13 and comes with the following libraries pre-installed:The
Every cell has access to a generated Query your lake directly:Use pyiceberg for low-level catalog operations:
The oleander module
Every cell has access to a generated oleander module that wires your catalog and DuckDB connection automatically:BigQuery
If you have BigQuery connections configured, the DuckDBbigquery 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 theoleander.tasks namespace and returns a run ID you can track in the platform. Lineage from Spark cell runs is captured automatically.