# Feast - Agent Instructions This file provides instructions for AI coding agents (GitHub Copilot, Claude Code, OpenAI Codex, etc.) working in this repository. ## Project Overview 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 ## Development Commands ### Setup ```bash # Install development dependencies make install-python-dependencies-dev # Install minimal dependencies make install-python-dependencies-minimal ``` ### Code Quality ```bash # Format Python code make format-python # Lint Python code make lint-python # Type check cd sdk/python && python -m mypy feast ``` ### Testing ```bash # 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 ``` ### Protobuf Compilation ```bash # Compile Python protobuf files make compile-protos-python # Compile all protos make protos ``` ### Go Development ```bash # Build Go code make build-go # Test Go code make test-go # Format Go code make format-go # Lint Go code make lint-go ``` ### Docker ```bash # Build all Docker images make build-docker # Build feature server Docker image make build-feature-server-docker ``` ### Documentation ```bash # Build Sphinx documentation make build-sphinx # Build templates make build-templates # Build Helm docs make build-helm-docs ``` ## Project Structure ``` 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 ``` ## Key Technologies - **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 ## Common Development Tasks ### Running Tests The project uses pytest for Python testing with extensive integration test suites for different data sources and stores. ### Code Style - 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 `ruff` for Python linting and formatting - Go uses standard `gofmt` ### Protobuf Development Protocol buffers are used for data serialization and gRPC APIs. Recompile protos after making changes to `.proto` files. ### Multi-language Support Feast supports Python and Go SDKs. Changes to core functionality may require updates across both languages. ## Documentation and Blog Posts - **Blog posts must be placed in `/infra/website/docs/blog/`** â do NOT create blog posts under `docs/blog/` or any other location. - Blog post files must include YAML frontmatter with `title`, `description`, `date`, and `authors` fields, following the format of existing posts in that directory. - All other reference documentation goes under `docs/`. ## Contributing 1. Follow the [contribution guide](docs/project/contributing.md) 2. Set up your development environment 3. Run relevant tests before submitting PRs 4. Ensure code passes linting and type checking