v2.2.0

dream-num/univerv2.2.0Aug 24, 2026by sgrebnov

AI Summary

This release focuses on real-time data capabilities and performance, introducing Cloud Connect for self-hosted runtimes, MySQL and PostgreSQL CDC support, and warm in-memory indexes for faster search.

Key Highlights

  • Cloud Connect links self-hosted runtimes to Spice Cloud for management and observability
  • MySQL CDC supports binlog replication without Kafka or Debezium infrastructure
  • PostgreSQL Catalog CDC accelerates entire databases in real time with few lines of configuration
  • Debezium sources can stream change events directly without a Kafka bus
  • Warm in-memory indexes improve vector and full-text search performance by default

New Features

  • Cloud Connect
  • MySQL CDC
  • PostgreSQL Catalog CDC
  • Direct Debezium streaming
  • Warm in-memory search indexes

Full Release Notes

Spice v2.2.0 focuses on real-time data, performance, and stability. **Cloud Connect** links self-hosted runtimes to [Spice.ai Cloud](https://spice.ai/) for management and observability. MySQL datasets and PostgreSQL catalogs can now stream source changes into accelerated datasets. Debezium sources can send CDC events directly without Kafka. Warm in-memory indexes improve vector and full-text search performance.

Highlights in v2.2.0 include:

- **[Cloud Connect](#cloud-connect)** — link self-hosted runtimes for BYOC (Bring Your Own Cloud) to Spice.ai Cloud for management and observability
- **[MySQL CDC](#mysql-change-data-capture)** — MySQL tables now stay in sync in real time using MySQL binlog replication, with no Kafka or Debezium infrastructure and no scheduled refreshes
- **[PostgreSQL Catalog CDC](#postgresql-catalog-cdc)** — accelerate an entire PostgreSQL database in real time with a few lines of configuration and no per-table setup
- **[Faster Search](#faster-search-with-warm-in-memory-indexes)** — vector and full-text search can now serve from an in-memory index by default, with no configuration change

## What's New in v2.2.0

### Cloud Connect

> Spice Cloud Connect is a feature of [Spice.ai Cloud](https://spice.ai/).

[Spice Cloud Connect](https://spiceai.org/docs/deployment/cloud/cloud-connect) links self-hosted runtimes for BYOC (Bring Your Own Cloud) to Spice.ai Cloud for management and observability. Run [`spice cloud link`](https://spiceai.org/docs/cli/reference/cloud#link) to enroll a standalone runtime.

Try it with the [Cloud Connect on a Development Machine](https://github.com/spiceai/cookbook/tree/trunk/cloud-connect-dev) recipe.

### MySQL Change Data Capture

The [MySQL Data Connector](https://spiceai.org/docs/components/data-connectors/mysql) now supports `refresh_mode: changes`. The runtime loads an initial snapshot of the table. It then applies inserts, updates, and deletes from the MySQL [binlog](https://dev.mysql.com/doc/refman/8.4/en/binary-log.html) as they commit. The acceleration stays current without scheduled refreshes.

```yaml
datasets:
  - from: mysql:orders
    name: orders
    params:
      mysql_host: localhost
      mysql_db: mydb
      mysql_user: replicator
      mysql_pass: ${secrets:mysql_pass}
    acceleration:
      engine: cayenne
      refresh_mode: changes
```

- **Failover-safe GTID positions**: When the source server has [GTID](https://dev.mysql.com/doc/refman/8.4/en/replication-gtids.html) enabled, the runtime tracks the replication position as a GTID set. A GTID position stays valid across a replica promotion, so replication survives a failover to a new primary without a rebuild.

### PostgreSQL Catalog CDC

The [PostgreSQL Catalog Connector](https://spiceai.org/docs/components/catalogs) is now Beta with new Catalog CDC acceleration support at Alpha.

A PostgreSQL catalog can now use `refresh_mode: changes`. One configuration replicates every table that the `include` patterns match. Queries then read fresh PostgreSQL data with no per-table setup.

```yaml
catalogs:
  - from: pg
    name: pg
    include:
      - 'public.*'
    params:
      pg_host: localhost
      pg_db: mydb
      pg_user: postgres
      pg_pass: ${secrets:pg_pass}
    acceleration:
      refresh_mode: changes
```

Known limitations while catalog CDC acceleration is Alpha: configuration may change; a table dropped and recreated in the source can serve rows captured before it was recreated ([#12110](https://github.com/spiceai/spiceai/issues/12110)); and a durable catalog acceleration can come back empty after a restart ([#12729](https://github.com/spiceai/spiceai/issues/12729)). Feedback is welcome in [#11850](https://github.com/spiceai/spiceai/issues/11850).

### Debezium CDC Without Kafka

Any Debezium source plugin can now stream change events directly into Spice, with no Kafka bus in between. A dataset with `from: cdc:…` accepts change events at `POST /v1/datasets/{name}/cdc`, in JSON or Avro. The existing Kafka path (`from: debezium:…`) is unchanged.

### Faster Search with Warm In-Memory Indexes

[Search](https://spiceai.org/docs/features/search) adds a warm in-memory tier for vector and full-text indexes. The runtime writes each change to the warm tier and to the durable store together. Queries read the warm tier first and fall back to the durable store. The warm tier covers vector indexes, full-text indexes, `.vectors` datasets, views, and chunked Elasticsearch vector columns.

More search improvements:

- `cosine_distance` uses SIMD instructions through the `simsimd` library.
- Full-text search applies stemming by default.
- Full-text search pushes SQL filters down into the tantivy index.
- A delete now removes the document from full-text and vector indexes. BM25 statistics no longer count superseded documents.
- The runtime loads local rerankers from `text-embeddings-inference` models.
- The runtime validates vector search parameters before it runs the SQL query.

### Operations & Observability

- **Query timeout**: The new `runtime.query.timeout` setting bounds the duration of every query. An expired query fails with HTTP 504 or gRPC `DEADLINE_EXCEEDED`.

```yaml
runtime:
  query:
    timeout: 30s
```

- **CPU sizing for Kubernetes pods without a CPU limit**: A Spice runtime pod with a CPU request and no CPU limit now sizes itself to twice the request instead of every core on the node. Set `SPICE_CPU_CORES=all` (or `runtime.cpu.cores: all`) to burst to all cores, for example when a 0.5-core request runs on a 24-core node.
- **Trace IDs in logs**: Every log record from a query carries the query's trace ID. Filter the logs by one ID to see everything that query did.
- **Improved dashboards**: The Grafana and Datadog dashboards add new and improved panels, and support multi-replica and Kubernetes deployments.
- **Helm**: The Helm chart supports a custom Deployment strategy and StatefulSet `updateStrategy`.
- **Dataset status**: A non-accelerated dataset now shows the `Error` state when its source is unavailable, instead of appearing healthy while queries fail.

### Other Notable Improvements and Bug Fixes

- **Drasi (Alpha)**: The runtime forwards CDC changes and runtime tables to a [Drasi](https://drasi.io/) source.
- **Microsoft SQL Server**: Kerberos integrated authentication now works on Unix.
- **HTTP connector**: OAuth2 client-credentials authentication.
- **Oracle `DATE`**: Values lost their time of day. They now map to a timestamp.
- **Catalog `exclude` patterns**: The Glue and Cayenne catalogs ignored `exclude` patterns. Both pattern lists now apply.
- **Spice Cayenne schema changes**: Partitioned accelerations could report a source schema change as applied while partitions kept the old schema. This mismatch caused lossy casts or append failures. Cayenne now rejects in-place evolution for partitioned accelerations. The configured schema-change policy then handles the change.
- **Snowflake `NUMBER` values**: The connector could remove fractional digits during schema discovery. It treated numeric metadata as absent and defaulted the scale to zero. It now preserves the source precision and scale.

See the [Changelog](#changelog) for the full list of fixes.

### SDK Updates

Updated SDKs release alongside v2.2.0:

- [spice.js v3.2.0](https://github.com/spiceai/spice.js/releases/tag/v3.2.0) — adds query cancellation (`listActiveQueries`/`cancelActiveQuery`), mTLS client certificates, HTTP fallback when Flight is unavailable, and typed parameter binding via Flight SQL prepared statements. Also fixes `nsql()` and `search()` response handling and named parameters over HTTP.
- [spicepy v4.0.0](https://github.com/spiceai/spicepy/releases/tag/v4.0.0) — adds streaming of large results, natural-language queries (`nsql`), vector and hybrid search, and query cancellation. Spice.ai Cloud users need this update: the legacy hostnames are retired in favor of region-specific endpoints.
- [spice-rs v3.2.0](https://github.com/spiceai/spice-rs/releases/tag/v3.2.0) — adds search, NSQL, async queries, query cancellation, and mTLS.

### Dependency Updates

| Dependency / Component | Version |
| ---------------------- | ------- |
| **DataFusion**         | v54.1   |
| **iceberg-rust**       | v0.10.0 |
| **Turso**              | v0.7.2  |
| **Rust toolchain**     | v1.96.1 |

## New Contributors

- [@boittega](https://github.com/boittega) made their first contribution in [#11509](https://github.com/spiceai/spiceai/pull/11509)
- [@lesbass](https://github.com/lesbass) made their first contribution in [#12253](https://github.com/spiceai/spiceai/pull/12253)

## Contributors

- [@bjchambers](https://github.com/bjchambers)
- [@boittega](https://github.com/boittega)
- [@ewgenius](https://github.com/ewgenius)
- [@Jeadie](https://github.com/Jeadie)
- [@krinart](https://github.com/krinart)
- [@lesbass](https://github.com/lesbass)
- [@lukekim](https://github.com/lukekim)
- [@peasee](https://github.com/peasee)
- [@phillipleblanc](https://github.com/phillipleblanc)
- [@sgrebnov](https://github.com/sgrebnov)
- [@v1gnesh](https://github.com/v1gnesh)

## Breaking Changes

- **CPU sizing for Kubernetes pods without a CPU limit**: A Spice runtime pod with a CPU request and no CPU limit now sizes itself to twice the request instead of every core on the node. Set `SPICE_CPU_CORES=all` (or `runtime.cpu.cores: all`) to keep the previous behavior, or set `runtime.cpu.cores` to a specific core count.
- **Partitioned DuckDB accelerations are removed**: The DuckDB accelerator now rejects `partition_by`. Use the Cayenne or Arrow accelerator for partitioned datasets.
- **Adaptive Cayenne tuning requires an explicit opt-in**: An unset `cayenne_tuning` now resolves to `auto`. Set `cayenne_tuning: adaptive` to enable the closed-loop controller.
- **ONNX ML inference is removed**: The runtime no longer loads ONNX models, and it no longer serves the `/v1/predict` endpoints. Use an LLM model provider instead.
- **One process-wide Vortex segment cache**: Cayenne tables now share one segment cache instead of one cache per table. Set `cayenne_segment_cache_mb` under `runtime.params` to size it. When unset, the cache takes 1/64 of the memory entitlement, clamped to 256 MiB - 2 GiB.
- **The Pingora cache engine is now a Spice.ai Enterprise feature**: An OSS build with `engine: pingora` degrades to the Moka engine and logs the substitution.
- **Deprecated settings**: `pg_replication_temporary_slot` is deprecated. `cayenne_segment_cache_mb` at the table level is deprecated — set it under `runtime.params` instead. This release renames the MongoDB `num_docs_to_infer_schema` setting to `schema_infer_max_records`. The old name still works and warns.

## Cookbook Updates

- Added a new recipe for [MySQL CDC (Binlog Replication)](https://github.com/spiceai/cookbook/tree/trunk/mysql/cdc): stream real-time changes from a MySQL table into Spice with `refresh_mode: changes`.
- Added a new recipe for [Aurora MySQL CDC (Binlog Replication)](https://github.com/spiceai/cookbook/tree/trunk/mysql/rds-aurora-cdc): the same CDC setup for an AWS-hosted Amazon Aurora MySQL cluster.
- Added a new recipe for [PostgreSQL Catalog CDC](https://github.com/spiceai/cookbook/tree/trunk/catalogs/postgres-cdc): replicate every table of a PostgreSQL database with one catalog configuration.
- Added a new recipe for [Cloud Connect on a Development Machine](https://github.com/spiceai/cookbook/tree/trunk/cloud-connect-dev): connect a local Spice instance to Spice.ai Cloud, deploy live changes, and deliver a secret.

The [Spice Cookbook](https://spiceai.org/cookbook) includes more than 104 recipes to help you get started with Spice quickly and easily.

## Upgrading

To upgrade to v2.2.0, use one of the following methods:

**CLI**:

```console
spice upgrade
```

**Homebrew**:

```console
brew upgrade spiceai/spiceai/spice
```

**Docker**:

Pull the `spiceai/spiceai:2.2.0` image:

```console
docker pull spiceai/spiceai:2.2.0
```

For available tags, see [DockerHub](https://hub.docker.com/r/spiceai/spiceai/tags).

**Helm**:

```console
helm repo update
helm upgrade spiceai spiceai/spiceai --version 2.2.0
```

**AWS Marketplace**:

Spice is available in the [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i).

## What's Changed

Full Changelog: https://github.com/spiceai/spiceai/compare/v2.1.0...v2.2.0