title: 'Spicepods' sidebar_label: 'Spicepods' sidebar_position: 1 description: 'An introduction to Spicepods' pagination_next: null tags:
A Spicepod is a configuration package that defines application-specific datasets, catalogs, machine learning (ML) models, and secrets. It functions similarly to a code packaging system (such as npm or pip), but is designed for data and AI components rather than code libraries.
Spicepods are defined in a YAML manifest file, typically named spicepod.yaml, and can be shared, versioned, and reused across projects.
To create a new Spicepod, run:
This generates a spicepod.yaml file in the my_app directory with the minimum required fields:
A Spicepod is described by a YAML manifest file, typically named spicepod.yaml, which includes the following key sections:
Datasets in a Spicepod define the tables available for SQL queries. Each dataset specifies a source (using the from field) and optionally an acceleration engine for local materialization. Sources include local files, databases (PostgreSQL, MySQL), cloud warehouses (Snowflake, Databricks), object storage (S3), and more.
Learn more at Datasets.
Catalogs in a Spicepod can contain multiple schemas. Each schema, in turn, contains multiple tables where the actual data is stored.
Learn more at Catalogs.
ML and language models are configured in the Spicepod similarly to datasets. Models can reference hosted services (OpenAI, Anthropic) or local files (Hugging Face models). When tools are enabled, models can query datasets and run SQL during inference.
Learn more at Models.
Spice supports various secret stores to manage sensitive information such as API keys or database credentials. Supported secret store types include environment variables, files, AWS Secrets Manager, Kubernetes secrets, and keyrings.
Reference secrets in dataset or model params using the ${secrets:KEY_NAME} syntax. The env secret store (enabled by default) reads from environment variables and .env files:
Learn more at Secret Stores