Where LangSmith stores different types of data

Last updated: October 13, 2026

Overview

LangSmith does not store everything in one central Postgres database. Different data types live in different backend stores, chosen based on how that data is accessed and how large it tends to get.

Storage by data type

LangSmith splits durable data across three kinds of stores:

  • Postgres: platform and application metadata. This includes the prompt library (Prompt/Context Hub), dataset rows and examples, and evaluator configuration.

  • ClickHouse: experiment runs and traces. By default this covers run inputs, outputs, errors, manifests, extras, and events, essentially all trace data.

  • Blob storage (S3 or equivalent): large payloads, optionally. In self-hosted and BYOC deployments, this is configurable, so run inputs, outputs, errors, manifests, extras, events, and attachments can be offloaded from ClickHouse into external blob storage instead of staying in ClickHouse.

Why it's split this way

Prompts, dataset rows, and evaluator configs are structured metadata that benefit from a relational store like Postgres. Trace and run data is high-volume and append-heavy, which is a better fit for ClickHouse. Large payloads (big inputs/outputs or attachments) can be moved to blob storage so they don't bloat ClickHouse, which matters most at scale in self-hosted and BYOC setups where you control storage costs and retention directly.

References