Linux

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

Linux
/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.

Linux
./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.