CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It scales horizontally, survives disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention.Key features:
- Distributed SQL: Scale out while maintaining ACID guarantees
- Native vector support: Built-in
VECTORtype (v24.2+) and C-SPANN indexes (v25.2+) - PostgreSQL compatible: Drop-in replacement for PostgreSQL applications
- Global replication: Multi-region deployments with low latency
- Automatic sharding: Data automatically distributed across nodes
- SERIALIZABLE isolation: Strongest isolation level by default
Installation and Setup
Install the LangChain integration:Get your CockroachDB connection string
You’ll need a CockroachDB cluster. Choose one option: Option 1: CockroachDB Cloud (Recommended)- Sign up at cockroachlabs.cloud
- Create a free cluster
- Get your connection string:
cockroachdb://user:pass@host:26257/db?sslmode=verify-full
cockroachdb://root@localhost:26257/defaultdb?sslmode=disable
Option 3: Local Binary
Download from cockroachlabs.com/docs/releases
Integrations
Vector Store
CockroachDB can be used as a vector store with nativeVECTOR type and C-SPANN distributed indexes.
Key features:
- Native vector support (v24.2+)
- C-SPANN indexes optimized for distributed systems (v25.2+)
- Advanced metadata filtering
- Hybrid search combining full-text and vector similarity (v0.3.0+)
- Multi-tenancy with prefix columns
- Horizontal scalability
Chat Message History
Store conversation history in CockroachDB for persistent, distributed chat applications. Key features:- Distributed storage with automatic replication
- Strong consistency (SERIALIZABLE)
- Session-based organization
- High availability
LangGraph Checkpointer
Persist LangGraph workflow state in CockroachDB for short-term memory, human-in-the-loop interactions, and fault tolerance. Both sync (CockroachDBSaver) and async (AsyncCockroachDBSaver) implementations are available.
- Sync
- Async
See Get your CockroachDB connection string above for connection options including CockroachDB Cloud (recommended for production), Docker, and local binary installs. For local development,
sslmode=disable is acceptable; always use sslmode=verify-full in production.Row-Level TTL (v0.2.1+)
Automatically expire old checkpoint data using CockroachDB’s Row-Level TTL:await checkpointer.aenable_ttl(ttl_interval="7 days", cron="@hourly")
TTL deletion is eventual — expired rows remain queryable until CockroachDB’s background job runs on the specified cron schedule.
Performance optimizations (v0.2.1+)
The checkpointer includes several optimizations for low-latency reads:- Batch fetching:
list()fetches all blobs and writes in 2 batch queries instead of 2 per checkpoint - Raw BYTEA: Uses psycopg3 binary protocol instead of hex-encoding blobs in SQL
- Prepared statements:
prepare_thresholddefaults to 5 and can be changed infrom_conn_string - Concurrent setup:
setup()is safe to run from several processes at once - Connection pools (v0.4.1+): For long-running services, pass a
psycopg_poolconnection pool rather than a single connection. A saver on a pool runs operations concurrently, each on its own pooled connection, so one saver can serve many agents; set the pool’smax_sizefor the number of agents running at once. A saver on a single connection runs one operation at a time, and it cannot recover once that connection drops, which includesfrom_conn_string(..., pipeline=True) - Atomic writes (v0.4.1+): A checkpoint write with several statements goes to the database as one batch, so a write that is cancelled partway saves nothing. It still takes one round trip
LangGraph Store
Persist LangGraph long-term memory in CockroachDB: memories that outlive a conversation thread, such as user preferences and facts an agent learned. Both sync (CockroachDBStore) and async (AsyncCockroachDBStore) implementations are available. They require langchain-cockroachdb v0.5.0 or later and follow the API of PostgresStore, so they work with create_agent(store=...) and StateGraph.compile(store=...).
Quick example:
Semantic search
Passindex to embed items when you put them and to rank searches by similarity to a query. With DB_URI as above:
setup() creates a C-SPANN vector index with the namespace as a prefix column, so a search under one user’s namespace reads only that part of the index. distance_type can be "cosine" (the default), "l2", or "inner_product".
Expire memories with TTL
Passttl to give items an expiry, in minutes. setup() then turns on CockroachDB’s row-level TTL job, which deletes expired items on the server, so no sweeper thread is needed:
get or search pushes back the expiry of the items it returns, unless refresh_on_read is False. To turn the job off, call store.disable_ttl(), or await store.adisable_ttl() on AsyncCockroachDBStore.
Delete a namespace
delete_namespace deletes every item in a namespace and its descendants, with their vectors, in one transaction, and returns the number of items deleted:
AsyncCockroachDBStore, use await store.adelete_namespace(...).
Multi-tenancy
Isolate vector data by tenant using an opt-in namespace column. When enabled, all CRUD and search operations are scoped to the specified namespace. CockroachDB’s C-SPANN indexes support prefix columns, so namespace filtering uses the vector index directly without a separate scan.ValueError without writing anything.
Retries and resilience (v0.4.0+)
Every operation retries transient CockroachDB errors: serialization failures (40001), ambiguous results (40003), connection errors (08xxx), node drains (57P01) and the CockroachDB range and node failures 58C00 and 58C01. All writes are idempotent, so a retry after an ambiguous result never duplicates data. Configure it once on the engine:
retry_policy too; give them a psycopg_pool connection pool so dropped connections are replaced. Since v0.4.1, a pooled checkpointer also retries whenever psycopg reports its connection broken, which covers TLS connections that drop on CockroachDB Cloud.
Why CockroachDB for AI applications?
Distributed by design
- Horizontal scalability: Add nodes to handle more load
- Multi-region deployments: Serve users globally with low latency
- Automatic rebalancing: Data distributes automatically across nodes
Production-ready reliability
- High availability: Survives node, rack, and datacenter failures
- Zero-downtime upgrades: Rolling updates without downtime
- Backups and restores: Point-in-time recovery
Vector search at scale
- C-SPANN indexes: Distributed approximate nearest neighbor search
- Native vector type: First-class support for embeddings
- Real-time indexing: No rebuild needed for new vectors
- Multi-tenancy: Prefix columns for efficient tenant isolation
PostgreSQL compatibility
- Easy migration: Drop-in replacement for PostgreSQL
- Familiar SQL: Standard PostgreSQL syntax
- Existing tools: Works with PostgreSQL drivers and tools
Resources
- CockroachDB Documentation
- langchain-cockroachdb GitHub
- langchain-cockroachdb PyPI
- CockroachDB Cloud
- CockroachDB University (free courses)
Support
Connect these docs to your agent of choice via MCP for real-time answers.

