ChromaDB
Chroma vector database - the developer-friendly embedding store, single container + volume, internal-only.
One-click deploy, from $7/mo on a Miget plan.
Chroma is the vector store most people meet first: pip install chromadb, four lines of code, and your documents are searchable by meaning. Its server mode is the same API over HTTP - which is what this template deploys, so every notebook example you have ever run keeps working against a real persistent backend.
One container, one 10 GB volume, internal-only: Chroma ships without built-in auth, so the project network is the boundary (the same pattern as the MongoDB and Qdrant templates). Apps connect with chromadb.HttpClient(host="chroma", port=8000) and the JS client equivalently.
For prototypes graduating to something persistent - or teams that want their embeddings off third-party infrastructure - this is the lightest possible step up.
Upstream project: Chroma
#what you get
- The Chroma API your prototypes already use, in persistent server mode
- First-class Python and JavaScript clients
- Collections with metadata filtering and multiple distance functions
- Data persists on a 10 GB volume across redeploys
- Internal-only by default - no auth surface exposed
- Single container: the simplest vector store to operate
#topology
| Service | Role | Public |
|---|---|---|
| chroma | Chroma server (HTTP :8000) | no (by design) |
#miget sizing
// this stack needs
1 GiB RAM · 10 GB disk · 1 service
1 GiB RAM is generous for hundreds of thousands of embeddings. Chroma keeps HNSW indexes in memory - scale RAM with collection count and size.
Hobby - recommended fit
$7/mo
1 vCPU · 1 GiB · 25 GiB disk
Headroom for your own apps: 2 GiB at $13/mo
Professional - production
$22/mo
1 vCPU · 2 GiB · 10 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| ChromaDB on Miget ★ | 1 GiB plan | $7 | this whole stack, flat - no usage meters, and room left for your own apps |
| Chroma Cloud | Starter (usage) | usage-based | ~$0-5/mo small workloads (covered by $5 credit); Team tier $250/mo flat + usage |
Chroma Cloud’s usage pricing is genuinely cheap at small scale - self-hosting is about data locality and no per-query metering.
#vs. other PaaS
Estimated monthly cost of running this exact stack (1 GiB RAM, 10 GB disk, 1 container) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $7 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$50 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| DO App Platform | ~$17 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Render | ~$15 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| Railway | ~$12 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$7 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
chromadb - No required variables - deploy as-is
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/chromadb
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
How do I migrate from local Chroma to this server?
Change chromadb.PersistentClient(path=...) to chromadb.HttpClient(host="chroma", port=8000) in apps deployed to the same Miget project. The collection API is identical; re-ingest or copy your data once.
Chroma Cloud vs self-hosting - when does each make sense?
Chroma Cloud is serverless and usage-priced, great for spiky or tiny workloads. Self-hosting here is a flat $7/month (1 GiB hobby plan) with no per-query metering - predictable for always-on apps, and your embeddings stay on your infrastructure.
Why is there no authentication on this template?
Chroma has no production-grade built-in auth, so the template keeps it private: no public domain, reachable only from apps in the same project. That is the correct posture - do not expose Chroma directly to the internet.
Is Chroma production-ready or just for prototypes?
Single-node Chroma serves real production loads at small-to-medium scale (hundreds of thousands to low millions of vectors). If you need clustering, quantization, or heavy filtering at scale, the Qdrant template in this catalogue is the natural next step.
Ship ChromaDB today
One compose stack, 1 GiB of RAM, from $7/month flat, and it runs on your laptop with the same files.