Upgrade Guide from v1.x to v2.x
Breaking changes and migration steps when upgrading the Spice runtime from v1.x to v2.x.
Most v1 spicepods continue to work on v2.0. v1 remains supported, and deprecated fields auto-migrate at load time. As a result, many deployments can upgrade by updating the image alone. The steps below cover the breaking changes that may require manual action. Review each before upgrading a production deployment. For the full v2.0 changelog, see the OSS release notes.
1. Adopt Spicepod v2 (recommended)
spice init now creates version: v2 spicepods. v1 spicepods remain supported with automatic migration, but v1beta1 is no longer accepted. To move to v2, set version: v2 and update the following fields. Each field auto-migrates from v1, but an update now clears the deprecation:
| v1 (deprecated) | v2 (preferred) |
|---|---|
runtime.results_cache | runtime.caching.sql_results (cache_max_size becomes max_size) |
runtime.memory_limit | runtime.query.memory_limit |
runtime.temp_directory | runtime.query.temp_directory |
dataset.invalid_type_action | dataset.unsupported_type_action |
2. Update changed configuration
- DuckDB parameter rename:
partitioned_write_flush_thresholdis nowpartitioned_write_flush_threshold_rows. - Default query memory limit raised from 70% to 90%. If you relied on the previous default to leave headroom for other processes on the host, set it explicitly via
runtime.query.memory_limit.
3. Update queries and API clients
- S3 metadata columns renamed:
location,last_modified, andsizeare now_location,_last_modified, and_size. Update any queries that reference these columns. /v1/searchalways returns an array inmatches, even for a single result. Update clients that assumed a scalar value./v1/evalsAPI removed. Remove integrations that depend on it.
4. Update model providers
- Perplexity model provider removed. Re-point affected models to another provider.
- x.ai models use the
/v1/responsesendpoint exclusively. Ensure x.ai integrations target the Responses API.
5. Update observability
- Metric renames:
accelerated_refreshis nowacceleration_refresh, and thelast_refresh_timegauge is renamed to include the milliseconds unit. Update dashboards and alerts that reference these metric names.