This file provides instructions for AI coding agents (GitHub Copilot, Claude Code, OpenAI Codex, etc.) working in this repository.
Feast is an open source feature store for machine learning that helps ML platform teams manage features consistently for training and serving.
Feast (Feature Store) is a Python-based project that provides:
- Offline Store: Process historical data for batch scoring or model training
- Online Store: Power real-time predictions with low-latency features
- Feature Server: Serve pre-computed features online
- Point-in-time correctness: Prevent data leakage during model training
- Data infrastructure abstraction: Decouple ML from data infrastructure
# Install development dependencies make install-python-dependencies-dev # Install minimal dependencies make install-python-dependencies-minimal
# Format Python code make format-python # Lint Python code make lint-python # Type check cd sdk/python && python -m mypy feast
# Run unit tests make test-python-unit # Run integration tests (local) make test-python-integration-local # Run integration tests (CI) make test-python-integration # Run all Python tests make test-python-universal
# Compile Python protobuf files make compile-protos-python # Compile all protos make protos
# Build Go code make build-go # Test Go code make test-go # Format Go code make format-go # Lint Go code make lint-go
# Build all Docker images make build-docker # Build feature server Docker image make build-feature-server-docker
# Build Sphinx documentation make build-sphinx # Build templates make build-templates # Build Helm docs make build-helm-docs
feast/
├── sdk/python/ # Python SDK and core implementation
├── go/ # Go implementation
├── ui/ # Web UI
├── docs/ # Documentation
├── examples/ # Example projects
├── infra/ # Infrastructure and deployment
│ ├── charts/ # Helm charts
│ └── feast-operator/ # Kubernetes operator
└── protos/ # Protocol buffer definitions
- Languages: Python (primary), Go
- Dependencies: pandas, pyarrow, SQLAlchemy, FastAPI, protobuf
- Data Sources: BigQuery, Snowflake, Redshift, Parquet, Postgres, Spark
- Online Stores: Redis, DynamoDB, Bigtable, Snowflake, SQLite, Postgres
- Offline Stores: BigQuery, Snowflake, Redshift, Spark, Dask, DuckDB
- Cloud Providers: AWS, GCP, Azure
The project uses pytest for Python testing with extensive integration test suites for different data sources and stores.
- Use type hints on all Python function signatures
- Follow existing patterns in the module you are modifying
- PR titles must follow semantic conventions:
feat:,fix:,ci:,chore:,docs: - Sign off commits with
git commit -s(DCO requirement) - Uses
rufffor Python linting and formatting - Go uses standard
gofmt
Protocol buffers are used for data serialization and gRPC APIs. Recompile protos after making changes to .proto files.
Feast supports Python and Go SDKs. Changes to core functionality may require updates across both languages.
- Blog posts must be placed in
/infra/website/docs/blog/— do NOT create blog posts underdocs/blog/or any other location. - Blog post files must include YAML frontmatter with
title,description,date, andauthorsfields, following the format of existing posts in that directory. - All other reference documentation goes under
docs/.
- Follow the contribution guide
- Set up your development environment
- Run relevant tests before submitting PRs
- Ensure code passes linting and type checking