chroma-core/chroma · error · NotImplementedError
Indexing status is not implemented for Local Chroma
Error message
Indexing status is not implemented for Local Chroma
What it means
RustBindingsAPI._get_indexing_status (chromadb/api/rust.py:382) always raises NotImplementedError. Indexing status (how far a collection's vector index has caught up) is reported only by the Chroma server; the embedded Rust bindings do not expose it. Note that SegmentAPI (the default embedded backend) stubs the same method, so this is server-only across backends.
Source
Thrown at chromadb/api/rust.py:382
)
@override
def _fork_count(
self,
collection_id: UUID,
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,
) -> int:
raise NotImplementedError("Fork count is not implemented for Local Chroma")
@override
def _get_indexing_status(
self,
collection_id: UUID,
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,
) -> "IndexingStatus":
raise NotImplementedError("Indexing status is not implemented for Local Chroma")
@override
def _search(
self,
collection_id: UUID,
searches: List[Search],
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,
read_level: ReadLevel = ReadLevel.INDEX_AND_WAL,
) -> SearchResult:
raise NotImplementedError("Search is not implemented for Local Chroma")
@override
def _count(
self,
collection_id: UUID,
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,View on GitHub (pinned to aecdd12c8a)
Solutions
- Query indexing status through chromadb.HttpClient against a Chroma server, which implements it
- In embedded mode, treat indexing as synchronous (local writes are applied in-process) and drop the status check
- Wrap the call in a capability check or try/except NotImplementedError when the same code must run in both modes
Example fix
# before (raises NotImplementedError in embedded mode)
status = collection.get_indexing_status()
# after
try:
status = collection.get_indexing_status()
except NotImplementedError:
status = None # embedded mode: writes are synchronous, no async indexing to track Defensive patterns
Strategy: try-catch
Validate before calling
def indexing_status_safe(collection):
try:
return collection.get_indexing_status()
except NotImplementedError:
return None # embedded mode: indexing is synchronous Try / catch
try:
status = collection.get_indexing_status()
except NotImplementedError:
status = None # not supported outside the Chroma server Prevention
- Reserve indexing-status polling for HttpClient deployments
- In embedded mode, treat writes as immediately indexed and skip readiness checks
- Abstract observability calls behind an interface so embedded runs can no-op them
When it happens
Trigger: client = chromadb.RustClient(...); client.get_collection('docs').get_indexing_status(). Any Collection.get_indexing_status() call in embedded (non-HttpClient) mode.
Common situations: Health-check or readiness-probe code that polls indexing status in a deployment that was switched from client-server to embedded; dashboards written against the server API being reused locally.
Related errors
- Collection forking is not implemented for Local Chroma
- Fork count is not implemented for Local Chroma
- Search is not implemented for Local Chroma
- Conditional transactions are only supported when connecting
- Attached functions are only supported when connecting to a C
AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16).
Data as JSON: /api/errors/8b8ded410f240cb1.
Report an issue: GitHub.