Overview
Architecture
Architecture

Product video
Spice.ai Enterprise is a portable (<150MB) compute engine built in Rust for data-intensive and intelligent applications. It accelerates SQL queries across databases, data warehouses, and data lakes using Apache Arrow, DataFusion, DuckDB, or SQLite. Integrated and co-deployed with data-intensive applications, Spice materializes and accelerates data from object storage, ensuring sub-second query performance and resilient AI applications. Deployable as a container on AWS ECS, EKS, or hybrid cloud & edge, it includes enterprise licensing, support, and SLAs.
Note: Spice.ai Enterprise requires an existing commercial license. For details, please contact sales@spice.ai .
Highlights
- Unified data query and AI engine accelerating SQL queries across databases, data warehouses, and data lakes. Delivers sub-second query performance while grounding mission-critical AI applications with real-time context to minimize errors and hallucinations.
- Advanced AI and retrieval tools, featuring vector and hybrid search, text-to-SQL, and LLM memory, enabling data-grounded AI applications with more than 25 data connectors enabling federated queries and real-time applications.
- Deployable as a container on AWS ECS, EKS, or on-premises, with dedicated support and SLAs for scalable, secure integration into any architecture.
Details
Unlock automation with AI agent solutions

Features and programs
Financing for AWS Marketplace purchases
Quick Launch
Pricing
Vendor refund policy
Refunds for Spice.ai Enterprise container subscriptions are not available after activation, as usage begins immediately upon deployment. Ensure compatibility with AWS ECS, EKS, or on-premises setups before purchase. For billing inquiries, contact AWS Marketplace support or Spice AI directly at support@spice.ai .
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
Container Deployment
- Amazon ECS
- Amazon EKS
- Amazon ECS Anywhere
Container image
Containers are lightweight, portable execution environments that wrap server application software in a filesystem that includes everything it needs to run. Container applications run on supported container runtimes and orchestration services, such as Amazon Elastic Container Service (Amazon ECS) or Amazon Elastic Kubernetes Service (Amazon EKS). Both eliminate the need for you to install and operate your own container orchestration software by managing and scheduling containers on a scalable cluster of virtual machines.
Version release notes
Spice 1.6.1 is a patch release that provides improved Kafka type inference and JSON flattening support, alongside several bug fixes.
What's New in v1.6.1-enterprise
Improved Kafka Type Inference: Improve Kafka type inference by configuring the number of Kafka messages sampled during schema inference. Increasing the sample size can improve the robustness and reliability of inferred schemas, especially in cases where data contains optional fields or varying structures.
Example spicepod.yml:
dataset: - from: kafka:orders_events name: orders params: schema_infer_max_records: 100 # Default 1.For details, see the Kafka Data Connector Documentation .
Improved Kafka JSON Support: Enable nested JSON Kafka messages to be represented in flattened JSON format for the dataset schema.
Example spicepod.yml:
dataset: - from: kafka:orders_events name: orders params: flatten_json: true # default falseFor example, the object:
{ "order_id": "a1f2c3d4-1111-2222-3333-444455556666", "customer": { "id": 101, "name": "Alice", "premium": true, "contact": { "email": "alice@example.com", "phone": "555-1234" } }, "discount": 5.0, "shipped": false }With flatten_json: true the result is:
+------------------------+-----------+-------------+ | column_name | data_type | is_nullable | +------------------------+-----------+-------------+ | order_id | Utf8 | YES | | customer.id | Int64 | YES | | customer.name | Utf8 | YES | | customer.premium | Boolean | YES | | customer.contact.email | Utf8 | YES | | customer.contact.phone | Utf8 | YES | | discount | Float64 | YES | | shipped | Boolean | YES | +------------------------+-----------+-------------+With flatten_json: false or ommitted the result is:
+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | column_name | data_type | is_nullable | +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | order_id | Utf8 | YES | | customer | Struct([Field { name: "id", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "name", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "premium", data_type: Boolean, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "contact", data_type: Struct([Field { name: "email", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "phone", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]) | YES | | discount | Float64 | YES | | shipped | Boolean | YES | +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+For details, see the Kafka Data Connector Documentation .
Contributors
Breaking Changes
No breaking changes.
Cookbook Updates
No new cookbook recipes added in this release.
The Spice Cookbook includes 77 recipes to help you get started with Spice quickly and easily.
Additional details
Usage instructions
Prerequisites
Ensure the following tools and resources are ready before starting:
- Docker: Install from https://docs.docker.com/get-docker/Â .
- AWS CLI: Install from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html .
- AWS ECR Access: Authenticate to the AWS Marketplace registry: aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 709825985650.dkr.ecr.us-east-1.amazonaws.com
- Spicepod Configuration: Prepare a spicepod.yaml file in your working directory. A spicepod is a YAML manifest file that configures which components (i.e. datasets) are loaded. Refer to https://spiceai.org/docs/getting-started/spicepods for details.
- AWS ECS Prerequisites (for ECS deployment): An ECS cluster (Fargate or EC2) configured in your AWS account. An IAM role for ECS task execution (e.g., ecsTaskExecutionRole) with permissions for ECR, CloudWatch, and other required services. A VPC with subnets and a security group allowing inbound traffic on ports 8090 (HTTP) and 50051 (Flight).
Running the Container
- Ensure the spicepod.yaml is in the current directory (e.g., ./spicepod.yaml).
- Launch the container, mounting the current directory to /app and exposing HTTP and Flight endpoints externally:
docker run --name spiceai-enterprise
-v $(pwd):/app
-p 50051:50051
-p 8090:8090
709825985650.dkr.ecr.us-east-1.amazonaws.com/spice-ai/spiceai-enterprise-byol:1.6.1-enterprise-models
--http 0.0.0.0:8090
--flight 0.0.0.0:50051
- The -v $(pwd):/app mounts the current directory to /app, where spicepod.yaml is expected.
- The --http and --flight flags set endpoints to listen on 0.0.0.0, allowing external access (default is 127.0.0.1).
- Ports 8090 (HTTP) and 50051 (Flight) are mapped for external access.
Verify and Monitor the Container
- Confirm the container is running:
docker ps
Look for spiceai-enterprise with a STATUS of Up.
- Inspect logs for troubleshooting:
docker logs spiceai-enterprise
Deploying to AWS ECS Create an ECS Task Definition and use this value for the image: 709825985650.dkr.ecr.us-east-1.amazonaws.com/spice-ai/spiceai-enterprise-byol:1.6.1-enterprise-models. Configure the port mappings for the HTTP and Flight ports (i.e. 8090 and 50051).
Override the command to expose the HTTP and Flight ports publically and link to the Spicepod configuration hosted on S3:
"command": [ "--http", "0.0.0.0:8090", "--flight", "0.0.0.0:50051", "s3://your_bucket/path/to/spicepod.yaml" ]
Register the task definition in your AWS account, i.e. aws ecs register-task-definition --cli-input-json file://spiceai-task-definition.json --region us-east-1
Then run the task as you normally would in ECS.