date: 2026-03-04 title: 'Spice v2.0-rc.1 (Mar 4, 2026)' type: blog authors: [sgrebnov] tags: [release, distributed-query, cayenne, datafusion, ducklake, gcp, rust, data-connector]
Announcing the release of Spice v2.0-rc.1! 🚀
v2.0.0-rc.1 is the first release candidate for early testing of v2.0.
Highlights in this release candidate include:
CREATE TABLE and DROP TABLE via SQL for Iceberg and Cayenne catalogsSpice v2.0 includes several breaking changes. Review the breaking changes section before upgrading.
AI/ML support including local LLM/ML model and hosted LLM inference is now included in the default Spice build and image. The separate models build variant has been removed.
With models now included by default, the data-only distribution (without AI/ML support) is only published in nightly builds. Official production-ready data-only distributions are available exclusively through Spice Cloud and the Enterprise release.
A new Network Attached Storage (NAS) distribution with built-in SMB and NFS data connector support is also now available in nightly builds and with Spice.ai Enterprise.
| Distribution / Variant | Open Source | Spice Cloud | Enterprise |
|---|---|---|---|
| Default | ✅ | ✅ | ✅ |
| Data | Nightly only | ✅ | ✅ |
| NAS (SMB + NFS) | Nightly only | ❌ | ✅ |
| Metal (macOS) | ✅ | ✅ | ✅ |
| CUDA (Linux) | Nightly only | ✅ | ✅ |
| Allocator variants | Nightly only | ✅ | ✅ |
| ODBC connector | Local build only | ✅ | ✅ |
For more details, see the Distributions documentation.
Distributed Query exits Beta with active-active highly-available object-store-based distributed query.
Distributed query supports two execution modes:
/v1/queries API and results are materialized to object storage for later retrieval. Best for long-running analytical workloads, batch processing, and non-accelerated datasets in distributed mode.Key improvements:
/v1/sql and FlightSQL queries now execute synchronously on the scheduler when appropriate, reducing inter-node overhead for queries that don't benefit from distribution.The Spice Cayenne data accelerator exits Beta with significant reliability and performance improvements:
partition_by: [col1, col2] using hierarchical path-like keys (e.g., 2025/10/15).UPDATE operations.DELETE + UPSERT sequences could produce duplicate primary keys across protected snapshots. Improved upsert handling during runtime restarts.Apache DataFusion has been upgraded to v52.2.0, bringing significant performance improvements, new query features, and enhanced extensibility.
Performance Improvements:
CASE Expressions: Lookup-table-based evaluation for certain CASE expressions avoids repeated evaluation, accelerating common ETL patternsMIN/MAX Aggregate Dynamic Filters: Queries with MIN/MAX aggregates now create dynamic filters during scan to prune files and rows as tighter bounds are discovered during executionMajor Features:
DESC queries on ASC-sorted filesTableProvider supports DELETE and UPDATE: New hooks for DELETE and UPDATE statements in the TableProvider trait, enabling Iceberg and Cayenne connectors to implement SQL DELETE and UPDATE operationsRelationPlanner API for extending SQL planning for FROM clauses, enabling support for vendor-specific SQL dialectsSQL Schema Management: Spice now supports CREATE TABLE and DROP TABLE DDL operations for Iceberg and Cayenne catalogs via FlightSQL and the /v1/sql API. DML validation has been updated for catalog-level writability.
Lakehouse-Style Data Management: New DuckLake catalog and data connector enable lakehouse-style data management with DuckDB as the metadata catalog and object storage for data files. DuckLake provides ACID transactions, time travel, and schema evolution on top of Parquet files.
Google Cloud Storage Support: New Google Cloud Storage data connector enables federated queries against data stored in GCS buckets, with Iceberg table support.
Unified Single-Binary Experience: The Spice CLI has been completely rewritten from Go to Rust, eliminating the Go dependency and providing a single spice binary built from the same codebase as spiced. This improves startup performance, reduces distribution size, and ensures consistent behavior between CLI and runtime.
Key Features:
spice query Command: Interactive REPL for async queries via the /v1/queries API with multi-line SQL input, spinner progress indicator, Ctrl+C cancellation, and partial query ID matching--output=json Flag: Machine-readable JSON output for CLI commands, enabling scripting and automationspice login --output: New output modes (env, json, keychain) for flexible credential managementspice cloud metrics: New command for Spice Cloud deployment metricsLocal LLM/ML model inference (via mistral.rs) is now included in the default Spice build. The separate models build variant has been removed. This simplifies installation and ensures all users have access to local AI inference capabilities.
The /v1/datasets and /v1/models APIs now return structured error information when a component is in an Error state. The ?status=true query parameter must be passed to retrieve the real-time component status, including the error state and details. Previously, the status field only indicated Error with no further detail. Now, two new fields are included when ?status=true is specified:
error: A structured object with category, type, and code fields for programmatic error handling (e.g. { "category": "dataset", "type": "auth", "code": "dataset.auth" }).error_message: A human-readable description of why the component entered an error state.These fields are only present when ?status=true is passed and the component is in an error state.
Example /v1/datasets?status=true response:
The spice datasets and spice models CLI commands now include an ERROR column that displays the error message for any component in an error state.
| Dependency | Version |
|---|---|
| Ballista | v52.0.0 |
| DuckDB | v1.4.4 |
| delta_kernel | v0.18.2 |
| mistral.rs | v0.7.0 (candle fork removed, now uses candle 0.9.2 from crates.io) |
| Turso (libsql) | v0.4.4 |
| Vortex | Upgraded with CASE-WHEN support |
| AWS SDK | Multiple crates updated + APN user-agent support |
v2, and spice init generates spicepod.yaml files with version: v2 by default while maintaining backward compatibility for existing v1 spicepods./v1/responses endpoint with rate limiting support.snowflake_private_key parameter for key-pair authentication.rows_written, bytes_written, and dataset_acceleration_size_bytes metrics for acceleration refresh ingestion.grpc+tls:// endpoints with custom CA certificate support.Spicepod v2 introduces configuration improvements while maintaining backward compatibility with v1. Existing v1 spicepods continue to work — deprecated fields are automatically migrated at load time.
Version support:
| Version | Status |
|---|---|
v2 | Default. Used by spice init. |
v1 | Supported. Deprecated fields auto-migrate. |
v1beta1 | Removed. No longer accepted. |
Configuration changes:
| v1 (deprecated) | v2 (preferred) | Notes |
|---|---|---|
runtime.results_cache | runtime.caching.sql_results | All fields migrate automatically. cache_max_size → max_size. |
runtime.memory_limit | runtime.query.memory_limit | Auto-migrated. query.memory_limit takes priority if both set. |
runtime.temp_directory | runtime.query.temp_directory | Auto-migrated. query.temp_directory takes priority if both set. |
dataset.invalid_type_action | dataset.unsupported_type_action | Auto-migrated. v2 adds a new string variant. |
New v2 fields:
runtime.ready_state — Controls when the runtime reports ready (on_load default, or on_registration).runtime.flight.do_put_rate_limit_enabled — Enable/disable FlightSQL DoPut rate limiting (default: true).runtime.query.spill_compression — Compression for query spill files (e.g., lz4_frame).runtime.scheduler.partition_management — Configure partition assignment interval, limits, and timeouts for distributed mode.runtime.caching.sql_results.stale_while_revalidate_ttl — Serve stale cached results while revalidating in the background.runtime.caching.sql_results.encoding — Cache entry compression (e.g., zstd).catalog.access: read_write_create — New access mode for catalogs that support DDL operations.Migration note: When both the deprecated v1 field and its v2 equivalent are set, the v2 field takes priority.
models build variant has been removed. Local LLM inference is now always included.v2: New spicepods created with spice init now default to version: v2. Existing v1 spicepods remain supported, and v1beta1 is no longer accepted.accelerated_refresh metrics renamed to acceleration_refresh for consistency. last_refresh_time gauge renamed to include milliseconds unit.ResultsCache replaced with SQLResultsCacheConfig in configuration.partitioned_write_flush_threshold renamed to partitioned_write_flush_threshold_rows.New and updated Spice Cookbook recipes:
The Spice Cookbook includes 88 recipes to help you get started with Spice quickly and easily.
To upgrade to v2.0.0-rc.1, use one of the following methods:
CLI:
Homebrew:
Docker:
Pull the spiceai/spiceai:2.0.0-rc.1 image:
For available tags, see DockerHub.
Helm:
AWS Marketplace:
Spice is available in the AWS Marketplace.
Full Changelog: https://github.com/spiceai/spiceai/compare/v1.11.2...v2.0.0-rc.1
serde_yaml with an internal YAML implementation./v1/search API now always returns an array in matches, even for single results./v1/responses endpoint.time_interval and fix snapshots_creation_policy: on_change by @sgrebnov in #9026PartitionManagementTask for scheduler to update accelerated table partition assignments by @Jeadie in #9378spice query CLI response deserialization by @phillipleblanc in #9588