SmithDB is optional and available in beta. Use this guide only when ClickHouse history must be available through SmithDB-backed queries.
Complete stages 1 through 4 of Install LangSmith with SmithDB before starting this guide. Return there for Switch queries to SmithDB after migration cleanup.
Scope and prerequisites
SmithDB installation, dual ingestion, and query cutover remain in the primary installation guide. Before starting:- Keep the existing ClickHouse configuration enabled and unchanged.
- Confirm SmithDB services and dual ingestion are healthy, and that new writes continue to reach ClickHouse.
- Keep SmithDB-backed queries disabled until migration cleanup completes.
- If LangSmith blob storage is enabled, grant the SmithDB ServiceAccount (
smithdb.serviceAccount) read and list access to the LangSmith blob-storage bucket in addition to the SmithDB object-store bucket.
What is TaskDB?
TaskDB is the migration’s durable coordinator. It tracks work and progress so migration pods can safely share work, recover from interruptions, and resume without starting over. Migrated data is written to SmithDB object storage and promoted to the metastore after validation. TaskDB is separate from LangSmith PostgreSQL and the SmithDB metastore, and is only used during the data migration job.Plan migration capacity
Size migration workers
Scale migration with these Helm controls:smithdb.migration.job.parallelism: The number of migration Job pods that may run concurrently.smithdb.migration.deployment.resources: The CPU, memory, and ephemeral storage allocated to each migration pod.
Scale TaskDB
For migrations with
smithdb.migration.job.parallelism greater than 4, tune max_connections on the chart-managed TaskDB or consider a dedicated external TaskDB. The chart-managed PostgreSQL default is 100.Monitor TaskDB CPU, memory, and active connections as parallelism increases, and scale smithdb.migration.taskdb.postgres.statefulSet.resources as needed. Do not use the main LangSmith PostgreSQL database or the SmithDB metastore as TaskDB.Configure chart-managed max_connections
Configure chart-managed max_connections
Set PostgreSQL arguments through
extraContainerConfig.args:Enable migration
For chart-managed TaskDB, create a Secret in the LangSmith namespace with a strong generated password underpostgres_password. Never store it in Helm values or source control. See Use an existing secret for your installation. For external PostgreSQL, use the chart’s external TaskDB settings instead.
Reference the TaskDB Secret and enable migration while keeping dual ingestion on and SmithDB-backed queries off:
Wait for completion
Keep SmithDB-backed queries disabled until the historical migration Job reports Kubernetes conditionComplete.
Finished migration Jobs remain for seven days by default for log inspection. Logs are diagnostic. No additional status report is required after Complete. Retain TaskDB only if needed for diagnosis.
Return to Install LangSmith with SmithDB and complete the Switch queries to SmithDB step.
Handle failures
The migration Job defaults tobackoffLimit: 3, allowing retries before Kubernetes marks it failed.
For under-provisioning, adjust both smithdb.migration.job.parallelism and smithdb.migration.deployment.resources. Preserve TaskDB, delete only the migration Job, and run the normal Helm upgrade. Deleting an active Job may leave a small amount of orphaned object-storage data from in-flight writes. The recreated Job resumes progress tracked in TaskDB.
See also
- Install LangSmith with SmithDB
- Prepare SmithDB supporting infrastructure
- Configure SmithDB observability
- Troubleshoot SmithDB
- Use an existing secret for your installation
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

