Source: https://seerepo.com/r/chroma-core/chroma/built
Markdown source: https://seerepo.com/r/chroma-core/chroma/built.md
Description: chroma is a Rust repo built with axum, FastAPI, Tokio, tower, and uvicorn. It stores its data in arrow, sqlx, foyer, Postgres, and object_store.

# What is chroma built with?

chroma is a Rust repo built with axum, FastAPI, Tokio, tower, and uvicorn. It stores its data in arrow, sqlx, foyer, Postgres, and object_store, reaches it with gorm.io/gorm, pypika, and sea-query, signs people in with bcrypt and github.com/aws/aws-sdk-go-v2/credentials, uses AI through hf-hub, tokenizers, onnxruntime, rmcp, @xenova/transformers, and 5 more, makes its content with parquet and tree-sitter-md, validates its data with validator, Pydantic, schemars, jsonschema, and Ajv, is tested with pytest-asyncio, pytest-rerunfailures, pytest-xdist, rapid, Pytest, and 9 more, deploys with k8s-openapi, opentelemetry-api, opentelemetry-exporter-otlp-proto-grpc, opentelemetry-instrumentation-fastapi, tracing, and 23 more, and uses aws-sdk-s3, pgx, pq, s3, sqlx-postgres, and 3 more. It has 474,465 written lines, with 345 test files.

Read on November 8, 2026, at commit 1a3ac2c.

Repository: https://github.com/chroma-core/chroma

## Frontend (/)

### Interface

- **[Rich](https://seerepo.com/uses/rich)**
- **[Ratatui](https://seerepo.com/uses/ratatui)**: 6 files
- **[crossterm](https://seerepo.com/uses/crossterm)**: 5 files
- **[indicatif](https://seerepo.com/uses/indicatif)**: 4 files
- **[dialoguer](https://seerepo.com/uses/dialoguer)**: 1 file
- **utoipa-swagger-ui**: 1 file

## Backend (/)

### The base

- **[axum](https://seerepo.com/uses/axum)**: 26 files
- **[FastAPI](https://seerepo.com/uses/fastapi)**: 3 files

### Data

- **[aws-sdk-s3](https://seerepo.com/uses/aws-sdk-s3)**
- **[pgx](https://seerepo.com/uses/pgx)**
- **[pq](https://seerepo.com/uses/pq)**
- **[s3](https://seerepo.com/uses/s3)**
- **[sqlx-postgres](https://seerepo.com/uses/sqlx-postgres)**
- **[sqlx-sqlite](https://seerepo.com/uses/sqlx-sqlite)**
- **arrow**: 30 files
- **[sqlx](https://seerepo.com/uses/sqlx)**: 16 files
- **foyer**: 5 files
- **[Postgres](https://seerepo.com/uses/postgres)**: 3 files · [go/pkg/sysdb/metastore/db/dbcore/core.go, line 20](https://github.com/chroma-core/chroma/blob/1a3ac2c7c623adbd03ed2508dc27b98cdf26016d/go/pkg/sysdb/metastore/db/dbcore/core.go#L20)
- **[object_store](https://seerepo.com/uses/object-store)**: 2 files
- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [Cargo.toml, line 68](https://github.com/chroma-core/chroma/blob/1a3ac2c7c623adbd03ed2508dc27b98cdf26016d/Cargo.toml#L68)
- **usearch**: 1 file

### Data access

- **[gorm.io/gorm](https://seerepo.com/uses/gormio-gorm)**: 10 files
- **pypika**: 6 files
- **sea-query**: 5 files

### Sign-in

- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 1 file
- **[github.com/aws/aws-sdk-go-v2/credentials](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2-credentials)**: 1 file

### AI

- **[hf-hub](https://seerepo.com/uses/hf-hub)**
- **[tokenizers](https://seerepo.com/uses/tokenizers)**
- **[onnxruntime](https://seerepo.com/uses/onnxruntime)**: 2 files
- **[rmcp](https://seerepo.com/uses/rmcp)**: 2 files

## Support (/)

### The base

- **[Tokio](https://seerepo.com/uses/tokio)**: 205 files
- **[tower](https://seerepo.com/uses/tower)**: 10 files
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 1 file

### Content

- **[parquet](https://seerepo.com/uses/parquet)**: 6 files
- **tree-sitter-md**: 1 file

### Validation

- **[validator](https://seerepo.com/uses/validator)**: 16 files
- **[Pydantic](https://seerepo.com/uses/pydantic)**: 8 files
- **[schemars](https://seerepo.com/uses/schemars)**: 7 files
- **[jsonschema](https://seerepo.com/uses/jsonschema)**: 1 file

### Testing

- **pytest-asyncio**
- **pytest-rerunfailures**
- **pytest-xdist**
- **rapid**
- **Pytest**: 53 files
- **github.com/stretchr/testify**: 21 files
- **Hypothesis**: 20 files
- **proptest**: 17 files
- **github.com/testcontainers/testcontainers-go**: 3 files
- **github.com/testcontainers/testcontainers-go/modules/postgres**: 2 files
- **github.com/DATA-DOG/go-sqlmock**: 1 file
- **proptest-derive**: 1 file

### Deploy

- **k8s-openapi**
- **[opentelemetry-api](https://seerepo.com/uses/opentelemetry-api)**
- **[opentelemetry-exporter-otlp-proto-grpc](https://seerepo.com/uses/opentelemetry-exporter-otlp-proto-grpc)**
- **opentelemetry-instrumentation-fastapi**
- **[tracing](https://seerepo.com/uses/tracing)**: 171 files
- **github.com/pingcap/log**: 27 files
- **[go.uber.org/zap](https://seerepo.com/uses/gouberorg-zap)**: 27 files
- **[tracing-opentelemetry](https://seerepo.com/uses/tracing-opentelemetry)**: 12 files
- **[github.com/rs/zerolog](https://seerepo.com/uses/githubcom-rs-zerolog)**: 4 files
- **google-cloud-googleapis**: 4 files
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 3 files
- **[tracing-subscriber](https://seerepo.com/uses/tracing-subscriber)**: 3 files
- **[boto3](https://seerepo.com/uses/boto3)**: 2 files
- **[go.opentelemetry.io/otel](https://seerepo.com/uses/goopentelemetryio-otel)**: 2 files
- **[go.opentelemetry.io/otel/metric](https://seerepo.com/uses/goopentelemetryio-otel-metric)**: 2 files
- **[github.com/aws/aws-sdk-go-v2](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2)**: 1 file
- **[github.com/aws/aws-sdk-go-v2/config](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2-config)**: 1 file
- **go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlpmetric-otlpmetricgrpc)**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace)**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace-otlptracegrpc)**: 1 file
- **[go.opentelemetry.io/otel/sdk](https://seerepo.com/uses/goopentelemetryio-otel-sdk)**: 1 file
- **[go.opentelemetry.io/otel/sdk/metric](https://seerepo.com/uses/goopentelemetryio-otel-sdk-metric)**: 1 file
- **[go.opentelemetry.io/otel/trace](https://seerepo.com/uses/goopentelemetryio-otel-trace)**: 1 file
- **kube**: 1 file
- **[kubernetes](https://seerepo.com/uses/kubernetes)**: 1 file
- **[opentelemetry-otlp](https://seerepo.com/uses/opentelemetry-otlp)**: 1 file
- **[psutil](https://seerepo.com/uses/psutil)**: 1 file

### Tools

- **Black**
- **bon**
- **build**
- **criterion**
- **grpcio-tools**
- **maturin**
- **pre-commit**
- **setuptools-scm**
- **Typer**
- **types-protobuf**
- **overrides**: 36 files
- **clap**: 24 files
- **utoipa**: 20 files
- **typing-extensions**: 11 files
- **proc-macro2**: 5 files
- **quote**: 5 files
- **github.com/spf13/cobra**: 3 files
- **rust-embed**: 3 files
- **syn**: 2 files
- **jemalloc_pprof**: 1 file
- **tree-sitter**: 1 file

### Other

- **async-compression**
- **futures-util**
- **grpcio**
- **mappings**
- **pin-project**
- **protobuf**
- **tokio-stream**
- **thiserror**: 235 files
- **async-trait**: 174 files
- **serde**: 131 files
- **uuid**: 113 files
- **serde_json**: 101 files
- **futures**: 63 files
- **tonic**: 55 files
- **tempfile**: 42 files
- **NumPy**: 34 files
- **parking_lot**: 27 files
- **reqwest**: 27 files
- **rand**: 22 files
- **roaring**: 17 files
- **backon**: 13 files
- **chrono**: 13 files
- **httpx**: 13 files
- **prost**: 13 files
- **regex**: 12 files
- **bytes**: 10 files
- **[Google](https://seerepo.com/uses/google)**: 10 files
- **google-cloud-gax**: 10 files
- **pyo3**: 10 files
- **colored**: 9 files
- **google.golang.org/grpc**: 8 files
- **prost-types**: 8 files
- **tokio-util**: 8 files
- **tonic-health**: 7 files
- **google.golang.org/protobuf**: 6 files
- **dashmap**: 5 files
- **k8s.io/client-go**: 5 files
- **tenacity**: 5 files
- **bytemuck**: 4 files
- **orjson**: 4 files
- **petgraph**: 4 files
- **regex-syntax**: 4 files
- **tikv-jemallocator**: 4 files
- **tower-http**: 4 files
- **base64**: 3 files
- **bincode**: 3 files
- **http**: 3 files
- **itertools**: 3 files
- **k8s.io/apimachinery**: 3 files
- **murmur3**: 3 files
- **pyyaml**: 3 files
- **sha2**: 3 files
- **tantivy**: 3 files
- **anyhow**: 2 files
- **async-stream**: 2 files
- **bitpacking**: 2 files
- **half**: 2 files
- **importlib-resources**: 2 files
- **mmh3**: 2 files
- **semver**: 2 files
- **serde_yaml**: 2 files
- **serde-pickle**: 2 files
- **strum**: 2 files
- **strum_macros**: 2 files
- **webbrowser**: 2 files
- **ahash**: 1 file
- **arboard**: 1 file
- **aws-config**: 1 file
- **aws-smithy-types**: 1 file
- **derivative**: 1 file
- **dirs**: 1 file
- **[Docker](https://seerepo.com/uses/docker)**: 1 file
- **fastbloom**: 1 file
- **fastrace**: 1 file
- **flatbuffers**: 1 file
- **github.com/spaolacci/murmur3**: 1 file
- **google.golang.org/genproto/googleapis/rpc**: 1 file
- **http-body-util**: 1 file
- **humantime**: 1 file
- **Hyper**: 1 file
- **indexmap**: 1 file
- **k8s.io/api**: 1 file
- **lazy_static**: 1 file
- **libc**: 1 file
- **md5**: 1 file
- **num_cpus**: 1 file
- **pandas**: 1 file
- **pybase64**: 1 file
- **pydantic-settings**: 1 file
- **rayon**: 1 file
- **rust-stemmers**: 1 file
- **rustls**: 1 file
- **serde_bytes**: 1 file
- **serde_yml**: 1 file
- **siphasher**: 1 file
- **snowballstemmer**: 1 file
- **supports-color**: 1 file
- **textwrap**: 1 file
- **toml**: 1 file
- **tonic-prost**: 1 file
- **tqdm**: 1 file
- **Uber**: 1 file

## Support (clients/js/packages/chromadb-client)

### Testing

- **Jest**: 1 file

## Backend (clients/js/packages/chromadb-core)

### Sign-in

- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 1 file

### AI

- **@xenova/transformers**: 1 file
- **cohere-ai**: 1 file
- **[ollama](https://seerepo.com/uses/ollama)**: 1 file

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [clients/js/packages/chromadb-core/src/embeddings/OpenAIEmbeddingFunction.ts, line 166](https://github.com/chroma-core/chroma/blob/1a3ac2c7c623adbd03ed2508dc27b98cdf26016d/clients/js/packages/chromadb-core/src/embeddings/OpenAIEmbeddingFunction.ts#L166)

## Support (clients/js/packages/chromadb-core)

### Validation

- **[Ajv](https://seerepo.com/uses/ajv)**: 1 file

### Testing

- **Jest**: 19 files
- **testcontainers**: 4 files

### Other

- **chalk**: 1 file

## Support (clients/js/packages/chromadb)

### Testing

- **Jest**: 1 file

### Other

- **SemVer**: 1 file

## Support (clients/new-js/packages/ai-embeddings/chroma-bm25)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/chroma-cloud-qwen)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/chroma-cloud-splade)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/cloudflare-worker-ai)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Backend (clients/new-js/packages/ai-embeddings/cohere)

### AI

- **cohere-ai**: 1 file

## Support (clients/new-js/packages/ai-embeddings/cohere)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/common)

### Validation

- **[Ajv](https://seerepo.com/uses/ajv)**: 1 file

## Backend (clients/new-js/packages/ai-embeddings/default-embed)

### AI

- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 1 file

## Support (clients/new-js/packages/ai-embeddings/default-embed)

### Testing

- **Jest**: 1 file

## Support (clients/new-js/packages/ai-embeddings/google-gemini)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/huggingface-server)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/jina)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/mistral)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/morph)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Backend (clients/new-js/packages/ai-embeddings/ollama)

### AI

- **[ollama](https://seerepo.com/uses/ollama)**: 1 file

## Support (clients/new-js/packages/ai-embeddings/ollama)

### Testing

- **Jest**: 1 file
- **testcontainers**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/openai)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/perplexity)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Backend (clients/new-js/packages/ai-embeddings/sentence-transformer)

### AI

- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 1 file

## Support (clients/new-js/packages/ai-embeddings/sentence-transformer)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Backend (clients/new-js/packages/ai-embeddings/together-ai)

### AI

- **together-ai**: 1 file

## Support (clients/new-js/packages/ai-embeddings/together-ai)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/ai-embeddings/voyageai)

### Testing

- **Jest**: 1 file

### Other

- **.ENV**: 1 file

## Support (clients/new-js/packages/chromadb)

### Testing

- **Jest**: 17 files

### Other

- **SemVer**: 1 file

## Support (rust/js_bindings)

### Tools

- **napi-derive**: 1 file

### Other

- **napi**: 1 file

## Other repos with a similar stack

- [mudler/LocalAI](https://seerepo.com/r/mudler/LocalAI/built): FastAPI, s3, Postgres, SQLite, Tokio, uvicorn, OpenAI, gorm.io/gorm, github.com/aws/aws-sdk-go-v2/credentials, tokenizers, onnxruntime, tracing, OpenTelemetry, tracing-subscriber, go.opentelemetry.io/otel/metric, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, go.opentelemetry.io/otel/sdk/metric, Hugging Face · [Compare](https://seerepo.com/compare/chroma-core/chroma/vs/mudler/LocalAI)
- [BerriAI/litellm](https://seerepo.com/r/BerriAI/litellm/built): axum, FastAPI, aws-sdk-s3, sqlx-postgres, sqlx, Postgres, SQLite, Tokio, tower, OpenAI, tokenizers, rmcp, Pydantic, schemars, jsonschema, tracing, tracing-subscriber, boto3 · [Compare](https://seerepo.com/compare/BerriAI/litellm/vs/chroma-core/chroma)
- [volcengine/OpenViking](https://seerepo.com/r/volcengine/OpenViking/built): FastAPI, aws-sdk-s3, sqlx-sqlite, sqlx, SQLite, Tokio, uvicorn, OpenAI, Ratatui, crossterm, indicatif, Pydantic, jsonschema, opentelemetry-api, opentelemetry-exporter-otlp-proto-grpc, tracing, OpenTelemetry, tracing-subscriber · [Compare](https://seerepo.com/compare/chroma-core/chroma/vs/volcengine/OpenViking)
- [unionlabs/union](https://seerepo.com/r/unionlabs/union/built): axum, sqlx-postgres, sqlx, Postgres, SQLite, Tokio, tower, Ratatui, crossterm, schemars, tracing, tracing-opentelemetry, github.com/rs/zerolog, OpenTelemetry, tracing-subscriber, opentelemetry-otlp · [Compare](https://seerepo.com/compare/chroma-core/chroma/vs/unionlabs/union)
- [vllm-project/vllm](https://seerepo.com/r/vllm-project/vllm/built): axum, FastAPI, Tokio, tower, OpenAI, indicatif, tokenizers, Pydantic, jsonschema, opentelemetry-api, tracing, OpenTelemetry, tracing-subscriber, psutil, Hugging Face · [Compare](https://seerepo.com/compare/chroma-core/chroma/vs/vllm-project/vllm)
- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): FastAPI, uvicorn, Rich, tokenizers, onnxruntime, Pydantic, jsonschema, opentelemetry-api, opentelemetry-exporter-otlp-proto-grpc, opentelemetry-instrumentation-fastapi, OpenTelemetry, boto3, kubernetes, psutil, Hugging Face · [Compare](https://seerepo.com/compare/chroma-core/chroma/vs/ray-project/ray)

## Frequently asked questions

### What language is chroma written in?

chroma is written in Rust, with 474,465 written lines.

### What framework does chroma use?

chroma is built with axum, FastAPI, Tokio, tower, and uvicorn.

### What database does chroma use?

chroma stores its data in arrow, sqlx, foyer, Postgres, and object_store and reaches it with gorm.io/gorm, pypika, and sea-query.

### What does chroma sign people in with?

chroma signs people in with bcrypt and github.com/aws/aws-sdk-go-v2/credentials.

### Does chroma use AI?

Yes. chroma uses AI through hf-hub, tokenizers, onnxruntime, rmcp, @xenova/transformers, cohere-ai, ollama, OpenAI, Hugging Face, and together-ai.

### What services does chroma use?

chroma uses aws-sdk-s3, pgx, pq, s3, sqlx-postgres, sqlx-sqlite, SQLite, and usearch.

### Does chroma have tests?

Yes. chroma has 345 test files and is tested with pytest-asyncio, pytest-rerunfailures, pytest-xdist, rapid, Pytest, github.com/stretchr/testify, Hypothesis, proptest, github.com/testcontainers/testcontainers-go, github.com/testcontainers/testcontainers-go/modules/postgres, github.com/DATA-DOG/go-sqlmock, proptest-derive, Jest, and testcontainers.

### Which repos have a stack like chroma's?

The ones that share most of its stack: mudler/LocalAI, BerriAI/litellm, and volcengine/OpenViking.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
