diff --git a/docker/.env.example b/docker/.env.example
index 48068cfdcbe..c9f608e9b59 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -211,6 +211,8 @@ GID='1000'
# CHROMA_ENDPOINT='http://host.docker.internal:8000'
# CHROMA_API_HEADER="X-Api-Key"
# CHROMA_API_KEY="sk-123abc"
+# CHROMA_TENANT="default_tenant" # Optional: for Chroma Cloud multi-tenancy
+# CHROMA_DATABASE_NAME="default_database" # Optional: for Chroma Cloud database selection
# Enable all below if you are using vector database: Pinecone.
# VECTOR_DB="pinecone"
diff --git a/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx b/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx
index cdcda5cca72..98ecebe1531 100644
--- a/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx
+++ b/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx
@@ -46,6 +46,42 @@ export default function ChromaDBOptions({ settings }) {
/>
+
+
);
}
diff --git a/server/.env.example b/server/.env.example
index 03c5382fbd5..b97adbffcac 100644
--- a/server/.env.example
+++ b/server/.env.example
@@ -201,6 +201,8 @@ SIG_SALT='salt' # Please generate random string at least 32 chars long.
# CHROMA_ENDPOINT='http://localhost:8000'
# CHROMA_API_HEADER="X-Api-Key"
# CHROMA_API_KEY="sk-123abc"
+# CHROMA_TENANT="default_tenant" # Optional: for Chroma Cloud multi-tenancy
+# CHROMA_DATABASE_NAME="default_database" # Optional: for Chroma Cloud database selection
# Enable all below if you are using vector database: Pinecone.
# VECTOR_DB="pinecone"
diff --git a/server/models/systemSettings.js b/server/models/systemSettings.js
index 961ccc5678c..040bb10f3bc 100644
--- a/server/models/systemSettings.js
+++ b/server/models/systemSettings.js
@@ -427,6 +427,8 @@ const SystemSettings = {
ChromaEndpoint: process.env.CHROMA_ENDPOINT,
ChromaApiHeader: process.env.CHROMA_API_HEADER,
ChromaApiKey: !!process.env.CHROMA_API_KEY,
+ ChromaTenant: process.env.CHROMA_TENANT,
+ ChromaDatabaseName: process.env.CHROMA_DATABASE_NAME,
// Weaviate DB Keys
WeaviateEndpoint: process.env.WEAVIATE_ENDPOINT,
diff --git a/server/utils/helpers/updateENV.js b/server/utils/helpers/updateENV.js
index 6bb397c3022..124a06d9d20 100644
--- a/server/utils/helpers/updateENV.js
+++ b/server/utils/helpers/updateENV.js
@@ -331,6 +331,14 @@ const KEY_MAPPING = {
envKey: "CHROMA_API_KEY",
checks: [],
},
+ ChromaTenant: {
+ envKey: "CHROMA_TENANT",
+ checks: [],
+ },
+ ChromaDatabaseName: {
+ envKey: "CHROMA_DATABASE_NAME",
+ checks: [],
+ },
// Weaviate Options
WeaviateEndpoint: {
diff --git a/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md b/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md
index e6d6fee9e10..293b8b953c2 100644
--- a/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md
+++ b/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md
@@ -25,4 +25,15 @@ VECTOR_DB="chroma"
CHROMA_ENDPOINT='http://localhost:8000'
# CHROMA_API_HEADER="X-Api-Key" // If you have an Auth middleware on your instance.
# CHROMA_API_KEY="sk-123abc" // If you have an Auth middleware on your instance.
+# CHROMA_TENANT="default_tenant" // Optional: for Chroma Cloud multi-tenancy
+# CHROMA_DATABASE_NAME="default_database" // Optional: for Chroma Cloud database selection
```
+
+### Chroma Cloud Configuration
+
+When using Chroma Cloud, you can configure additional parameters for multi-tenancy:
+
+- **CHROMA_TENANT**: Specify the tenant to use (defaults to "default_tenant" if not set)
+- **CHROMA_DATABASE_NAME**: Specify the database within the tenant (defaults to "default_database" if not set)
+
+These parameters are useful for organizing data in multi-tenant Chroma Cloud deployments where you need to isolate data by tenant and database.
diff --git a/server/utils/vectorDbProviders/chroma/index.js b/server/utils/vectorDbProviders/chroma/index.js
index bc12818fd18..c6112d02607 100644
--- a/server/utils/vectorDbProviders/chroma/index.js
+++ b/server/utils/vectorDbProviders/chroma/index.js
@@ -71,6 +71,12 @@ const Chroma = {
},
}
: {}),
+ ...(process.env.CHROMA_TENANT
+ ? { tenant: process.env.CHROMA_TENANT }
+ : {}),
+ ...(process.env.CHROMA_DATABASE_NAME
+ ? { database: process.env.CHROMA_DATABASE_NAME }
+ : {}),
});
const isAlive = await client.heartbeat();