Skip to main content
Chroma is available as a package for Python, JavaScript, and Go. You can also run it in Docker or build from source.

Python

Requirements

  • Python 3.9 or higher
  • SQLite 3.35.0 or higher (automatically handled on most systems)

Install via pip

pip install chromadb

Verify Installation

import chromadb
print(chromadb.__version__)  # Should print: 1.5.2

client = chromadb.Client()
print("Chroma is working!")
SQLite Version Issue: Chroma requires SQLite 3.35.0 or higher. If you encounter an error about SQLite version:
  • Google Colab: Automatically handled with pysqlite3-binary
  • Other systems: Visit Troubleshooting SQLite for upgrade instructions

Python Client Types

Chroma provides several client types for different use cases:
In-memory client that doesn’t persist data. Perfect for testing.
import chromadb

client = chromadb.EphemeralClient()
# or simply
client = chromadb.Client()

JavaScript

Requirements

  • Node.js 20 or higher

Install via npm

npm install chromadb

Verify Installation

import { ChromaClient } from 'chromadb';

const client = new ChromaClient();
console.log('Chroma is working!');
The JavaScript client (version 3.3.1) includes optional native bindings for better performance on supported platforms:
  • macOS (ARM64 and x64)
  • Linux (ARM64 and x64)
  • Windows (x64 and ARM64)

JavaScript Client Types

In-memory client for testing and development.
import { ChromaClient } from 'chromadb';

const client = new ChromaClient();

Go

Requirements

  • Go 1.23.0 or higher

Install via go get

go get github.com/chroma-core/chroma/go

Usage

import "github.com/chroma-core/chroma/go"

// Your Go code here
The Go client is part of the Chroma server implementation. For client-side usage, consider using the HTTP API with a Go HTTP client.

Docker

Using Pre-built Image

The easiest way to run Chroma server is using the official Docker image:
1

Pull the Image

docker pull ghcr.io/chroma-core/chroma:latest
2

Run the Container

docker run -p 8000:8000 ghcr.io/chroma-core/chroma:latest
3

Verify It's Running

curl http://localhost:8000/api/v2/heartbeat

Using Docker Compose

For persistent storage, use Docker Compose:
version: '3.9'

networks:
  net:
    driver: bridge

services:
  server:
    image: ghcr.io/chroma-core/chroma:latest
    environment:
      - IS_PERSISTENT=TRUE
    volumes:
      - chroma-data:/chroma/chroma/
    ports:
      - 8000:8000
    networks:
      - net

volumes:
  chroma-data:
    driver: local
Save as docker-compose.yml and run:
docker-compose up -d

Docker Configuration

Common environment variables:
  • IS_PERSISTENT=TRUE - Enable persistent storage
  • CHROMA_OPEN_TELEMETRY__ENDPOINT - OpenTelemetry endpoint for observability
  • CHROMA_OPEN_TELEMETRY__SERVICE_NAME - Service name for telemetry
  • OTEL_EXPORTER_OTLP_HEADERS - OTLP headers for authentication

Install from Source

For development or to build from source:
1

Clone the Repository

git clone https://github.com/chroma-core/chroma.git
cd chroma
2

Set Up Python Environment

python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
3

Install Dependencies

pip install -r requirements.txt
pip install -r requirements_dev.txt
4

Install Pre-commit Hooks

pre-commit install
5

Install in Editable Mode

pip install -e .
6

Build Rust Bindings (Optional)

For development with Rust components:
# Install maturin
pip install maturin

# Build Rust bindings
maturin dev

Development Setup

For distributed Chroma development with Kubernetes:
Requirements:
# Start Kubernetes cluster (if using OrbStack, enable it in the UI)

# Start distributed Chroma
tilt up

# Access at http://localhost:8000
# View Tilt dashboard at http://localhost:10350

# Clean up
tilt down

Run the Server

Once installed, you can run the Chroma server:
chroma run --path /chroma_db_path
The server will start on http://localhost:8000 by default.

Verify Installation

Test your installation by connecting to the server:
import chromadb

client = chromadb.HttpClient(host="localhost", port=8000)
print(client.heartbeat())  # Should return a timestamp

Troubleshooting

If you see an error about SQLite version being too old:
# Install pysqlite3-binary
pip install pysqlite3-binary
For more details, see Troubleshooting SQLite.
If port 8000 is already in use:
# Use a different port
chroma run --port 8001

# Or in Docker
docker run -p 8001:8000 ghcr.io/chroma-core/chroma:latest
Make sure the Chroma server is running and accessible:
# Check if server is running
curl http://localhost:8000/api/v2/heartbeat

# Check Docker container logs
docker logs <container-id>
The JavaScript client includes optional native bindings for better performance. If they fail to load, the client will fall back to a pure JavaScript implementation. This is normal and doesn’t affect functionality.

Next Steps

Quickstart

Get up and running with your first collection

Configuration

Configure Chroma for your use case

Deployment

Deploy Chroma to production

API Reference

Explore the full API documentation

Build docs developers (and LLMs) love