Feast can generate tailored Jupyter notebooks for any Feast project. The notebooks adapt to your feature_store.yaml configuration and provide a hands-on walkthrough of core Feast functionality.
For each project discovered, Feast creates a directory with notebooks covering:
| Notebook | Description |
|---|---|
| 01 — Feature Store Overview | Explore registered entities, feature views, feature services, and data sources. |
| 02 — Historical Feature Retrieval | Build a training dataset with point-in-time correct joins using get_historical_features. |
| 03 — Online Feature Serving | Materialize features to the online store and retrieve them at low latency with get_online_features. |
The content adapts automatically based on:
- Online / offline store types — descriptions reflect the actual backends configured.
- Registry type — local registries include
feast apply; remote registries userefresh_registry(). - Authentication — auth details from
feature_store.yamlare surfaced when configured. - Vector search — a vector/RAG retrieval section is included when embeddings are detected.
- Python 3.9+
- Feast installed (
pip install feast) - A feature repository with a valid
feature_store.yaml
Run the command from (or pointing to) a directory containing feature_store.yaml:
feast demo-notebooksThis searches for feature_store.yaml in the current directory and every file inside the feast-config/ directory. Each file in feast-config/ is treated as a separate project config. For each project found, notebooks are written to ./feast-demo-notebooks/<project>/.
| Option | Default | Description |
|---|---|---|
-o, --output-dir |
./feast-demo-notebooks |
Root directory for generated notebooks |
--overwrite |
false |
Overwrite if the output directory already exists |
# Write to a custom directory
feast demo-notebooks -o ./my-notebooks
# Overwrite existing notebooks
feast demo-notebooks --overwrite
# Use --chdir to point at a different feature repo
feast -c /path/to/feature_repo demo-notebooksfrom feast import copy_demo_notebooks
copy_demo_notebooks()| Parameter | Type | Default | Description |
|---|---|---|---|
output_dir |
str |
"./feast-demo-notebooks" |
Root directory for generated notebooks |
repo_path |
str |
"." |
Directory to search for feature_store.yaml files |
overwrite |
bool |
False |
Overwrite existing output directories |
from feast import copy_demo_notebooks
# Default — searches current directory, writes to ./feast-demo-notebooks/
copy_demo_notebooks()
# Custom paths
copy_demo_notebooks(
output_dir="/home/user/notebooks",
repo_path="/home/user/feast-projects/my-repo/feature_repo",
overwrite=True,
)If your feast-config/ directory contains multiple files, each is treated as a separate project and a dedicated notebook directory is created:
feast-demo-notebooks/
├── project_alpha/
│ ├── 01_feature_store_overview.ipynb
│ ├── 02_historical_features_training.ipynb
│ └── 03_online_features_serving.ipynb
└── project_beta/
├── 01_feature_store_overview.ipynb
├── 02_historical_features_training.ipynb
└── 03_online_features_serving.ipynb
Open any generated notebook in Jupyter, JupyterLab, or VS Code and run cells from top to bottom. Each notebook:
- Configures the path to your
feature_store.yamlautomatically (no manual editing needed). - Connects to the feature store using the Feast Python SDK.
- Walks through relevant operations with real data from your project.
{% hint style="info" %}
The first notebook (01 — Overview) includes a prerequisites check and feast apply / registry sync step. Subsequent notebooks assume these have already been completed.
{% endhint %}