Where Does ChromaDB Store Persistent Data?
ChromaDB persists collections under the path you give the server, defaulting to ./chroma locally and /data in Docker images.
Last updated
Chroma has two defaults that confuse people. Local Python clients persist to ./chroma next to the working directory. Docker images persist to /data. Adding a config file without a persist path can flip the server back to a relative folder, which looks like data loss.
The fix is explicitness. In Docker, mount the host folder to /data and pin the config persist path to /data. In Python, pass the folder to PersistentClient. Then stopping the container or rerunning the script reloads the same collections.
Where ChromaDB stores this, by platform
/data
Current Docker convention. Mount a host folder here. Keep config persist path aligned so the server does not fall back to a relative folder.
./chroma
Local client default. The folder is created next to the process working directory when no explicit path is passed.
Frequently asked questions
How do I persist ChromaDB data in Docker?
Mount a host folder to /data and keep the default persist path at /data. If you add a custom config file, set its persist path to /data as well or data appears to vanish.
Where does Chroma save data in plain Python?
Pass a path when creating the client, such as PersistentClient with an explicit folder. Without a path the client uses ./chroma next to the script.
Should I still set IS_PERSISTENT in Docker?
No. Older IS_PERSISTENT and PERSIST_DIRECTORY variables belong to pre 1.x flows. Current images use the persist path in config or the path flag.
Notice an outdated path? Let us know.