Deploy Chroma

Chroma vector database for AI apps - embeddings, RAG & semantic search

Deploy Chroma

Just deployed

/data

Chroma — Vector Database

Open-source data infrastructure for AI. Store embeddings with metadata, search with dense vectors, filter by metadata, and retrieve across text, images, and more — through a tiny 4-function API.

Deploy and Host

Host your own Chroma instance on Railway. This template provisions the official Chroma server image (v1.5.9) with persistent storage for collections and embeddings.

Deploy to Railway

Why Deploy

Chroma is the open-source vector database behind thousands of RAG pipelines, AI agents, and semantic-search apps (29k+ GitHub stars). Running it on Railway gives you a durable, globally reachable instance with:

  • Persistent collections — embeddings survive restarts on a Railway volume
  • Tiny 4-function API — collections, add, query, get; clients for Python, JS, Rust, Go
  • No external dependencies — single container, embedded SQLite, fast startup
  • Metadata filtering — filter results at query time by any metadata condition
  • Production-ready — powers retrieval for agents, copilots, and search products

Common Use Cases

  • RAG pipelines — power retrieval-augmented generation with your own embeddings
  • Semantic search — build search engines that understand meaning, not just keywords
  • AI agents — give your LLM agents long-term memory via vector storage
  • Recommendation systems — find similar products, content, or users
  • Code search — index codebases to power coding agents

Deployment Dependencies

The deploy form pre-fills all required variables. No additional services needed — Chroma runs as a single container with a volume for persistent storage.

After the first successful deploy:

  1. Check health: curl https://YOUR-DOMAIN.up.railway.app/api/v2/heartbeat → {"nanosecond heartbeat":...}
  2. Check version: curl https://YOUR-DOMAIN.up.railway.app/api/v2/version → "1.0.0"

About Hosting

Chroma runs as a single container on Railway from the official ghcr.io/chroma-core/chroma image (pinned to v1.5.9). Vector data persists on a Railway volume mounted at /data (the image's baked-in /config.yaml sets persist_path: "/data"). The server listens on port 8000 and exposes a REST API. Railway healthchecks /api/v2/heartbeat before routing traffic.

Features

  • Vector search — dense similarity search with HNSW indexing
  • Metadata filtering — filter results at query time by metadata conditions
  • Multi-modal retrieval — index and search images and other modalities alongside text
  • Full-text search — keyword search over documents without embeddings
  • REST API — official clients for Python, JavaScript, Rust, and Go
  • Single container — no Postgres, no Redis, nothing else to run

Dependencies for

  • No external services required — Chroma runs standalone
  • Optional: embedding model — bring your own embeddings (OpenAI, Cohere, Hugging Face, sentence-transformers) or let Chroma embed documents automatically

Configuration

VariableDescriptionDefault
PORTHTTP API port. Railway maps this to the public domain.8000
IS_PERSISTENTPersist the embedded database to the /data volume. Keep TRUE.TRUE
ANONYMIZED_TELEMETRYDisable anonymous product telemetry.FALSE

Volumes

MountPurpose
/dataEmbedded database (chroma.sqlite3) plus segment storage. Do not remove.

Quick Start

After deployment, the Chroma server is ready at your Railway public domain:

# Check server health
curl https://YOUR-DOMAIN.up.railway.app/api/v2/heartbeat

# List collections
curl https://YOUR-DOMAIN.up.railway.app/api/v2/tenants/default_tenant/databases/default_database/collections

# Create a collection
curl -X POST https://YOUR-DOMAIN.up.railway.app/api/v2/tenants/default_tenant/databases/default_database/collections \
  -H 'Content-Type: application/json' \
  -d '{"name":"my_collection"}'

# Python client
pip install chromadb
import chromadb
client = chromadb.HttpClient(host="YOUR-DOMAIN.up.railway.app", port=443, ssl=True)
collection = client.get_or_create_collection("my_collection")
collection.add(documents=["This is document1", "This is document2"], ids=["doc1", "doc2"])
results = collection.query(query_texts=["This is a query document"], n_results=2)

License

Chroma is licensed under the Apache License 2.0. See the Chroma GitHub repository for details.


Template Content

More templates in this category

View Template
Chat Chat
Chat Chat, your own unified chat and search to AI platform.

okisdev
117
View Template
NEW
Möbius v0.1 Personal AI OS
Self-hosted AI agent that builds and runs apps for you, with memory.

bento
1
View Template
stella
Self-host stella with web, API, Postgres, Redis, and object storage.

Jan Kubica
7