In-process SQL database compatible with SQLite, written in Rust with vector search and CDC support
An open-source SQL database compatible with SQLite, written in Rust and built for the edge and local-first apps.
Teams pick it to run SQLite past a single process, with embedded replicas, edge replication, and a database per tenant.
| Category | Embedded |
| First released | 2024 |
| License | MIT |
| Written in | Rust |
| Runs on | Linux, Macos, Windows |
| Deployment | Embedded, Self-hosted, Edge |
| Wire protocol | |
| Query dialect | sqlite-sql |
| Consistency | strong |
| ACID support | native |
| JSON support | native |
| Full-text search | extension |
| Vector support | native |
| HA model | none |
| Managed by | turso |
Turso is an open-source SQL database that is compatible with SQLite. It keeps SQLite's file-based storage and its SQL dialect, then extends the engine so it can run past a single local process. You get the same tables, the same SELECT statements, and the same drivers, plus replication, native vector search, and change data capture. The result is a database that starts as small and simple as SQLite but reaches out to the edge.
The project comes from Turso, a company that began by hosting libSQL, an open fork of SQLite it created after the SQLite maintainers declined outside contributions. libSQL added the server, replication, and extension hooks that hosted use needs. In 2024 the company started a full rewrite of the engine in Rust, still under the SQLite-compatible banner it uses today, aiming for a drop-in replacement that stays open to contribution. The engine is MIT licensed and the code is on GitHub.
Turso targets edge and local-first workloads, where data sits close to the user and reads need to be fast. Prisma runs it under Prisma Optimize, Val Town builds on it, and tools like OpenStatus and Flipt store state in it. A newer pattern is AI: companies such as Adaptive spin up millions of small per-agent databases on Turso Cloud, one for each running agent. The engine is still in beta, so it shows up more in new projects than in legacy systems.
Turso builds on libSQL, an open fork of SQLite that keeps the on-disk file format and SQL dialect but reopens the codebase to outside contributions. On top of the core engine it adds a server layer, a remote protocol over HTTP, and hooks for replication and extensions that stock SQLite does not expose. Anything a SQLite client can read, Turso can read, so existing files and drivers move over without a rewrite.
For hosted use, Turso runs database servers across many regions and replicates data between them. A write lands on the primary and streams out to replicas near your users, so a request served from a nearby region reads local data instead of crossing an ocean. This edge replication turns a single-file database into one that answers with low latency for a global audience, without you placing the data by hand.
Two patterns define how teams use it. Embedded replicas keep a full SQLite file inside the application process that syncs from the remote primary, so reads hit local disk at sub-millisecond speed while writes forward to the primary. Per-tenant databases lean on the fact that a Turso database is cheap to create, so instead of one shared database you give each customer, user, or AI agent their own, sometimes millions at once.
Turso is a fork and rewrite of SQLite that keeps its file format and SQL dialect while reopening the engine to outside contributions. Existing SQLite queries, schemas, and drivers work without changes, so a project can adopt Turso by pointing at a new connection string. The difference is the server, replication, and extensions on top.
An embedded replica is a full SQLite database file that lives inside your application process and syncs from a remote Turso primary. Reads run against the local file at sub-millisecond latency with no network round trip, while writes forward to the primary and stream back. It gives an app local SQLite speed with a hosted database behind it.
Turso runs database servers across many regions and copies data between them so it sits close to users. A write commits on the primary and replicates out to nearby regions, letting a request read local data instead of a distant origin. This lowers read latency for a global audience and is why teams pick Turso over a single-region server.
Because a Turso database is cheap to create and tear down, teams give each customer or workload its own instead of one shared database. Per-tenant isolation makes separation, backups, and deletion simple, since each tenant maps to a distinct file. The pattern scales into the millions, which is why AI platforms hand every agent a private store.
Turso includes vector search in the core engine rather than a bolt-on extension. You store embeddings in a column, build an index over them, and run nearest-neighbor queries with plain SQL alongside the rest of your data. Keeping vectors next to operational rows means a retrieval step reads from one database, which suits AI features.
Change data capture, or CDC, records every insert, update, and delete as an ordered stream that other systems can read. Turso exposes this so downstream services can react to writes, sync a search index, or feed an analytics pipeline without polling. Paired with replication, it lets a database fan its changes out to the rest of a stack.
Live GitHub adoption, updated daily
A handful of the companies running it in production
Turso replicates data to regions near your users and can keep a local copy inside the app, so reads return in well under a millisecond instead of crossing the network to a single distant origin server.
Embedded replicas give an app a real SQLite file on device that keeps working offline and syncs to the primary when a connection returns, which fits mobile and desktop clients that cannot assume the network.
When each customer or agent should own its data, Turso lets you create a separate cheap database per tenant, scaling into the millions of small databases without the cost of running that many full servers.
A project built on SQLite can move to Turso by swapping the connection, keeping its schema, queries, and drivers, then gaining replication and hosting with no migration to a different SQL dialect.
Turso targets transactional reads and writes, so scan-heavy analytics over billions of rows belong on a column store like ClickHouse or DuckDB, which are built to crunch large aggregates far faster.
The engine has no built-in failover or clustering model yet, so workloads that demand automatic multi-node high availability are better served by a distributed SQL engine such as CockroachDB or YugabyteDB.
SQLite serializes writes to one database, so a single hot database with heavy concurrent writes will bottleneck. The per-tenant pattern spreads load, but one giant shared table is not where Turso shines.
Turso is still in beta with an evolving API and tooling, so a team that needs a decade of proven operational history and broad third-party support may prefer an established engine like Postgres for now.
Head-to-head specs against the top 4 alternatives
| Spec | |||||
|---|---|---|---|---|---|
| Identity | |||||
| License | MIT | Public Domain | PostgreSQL License | SSPL | Proprietary |
| First released | 2024 | 2000 | 1996 | 2009 | 2012 |
| Wire protocol | postgresql | mongodb | http | ||
| Capabilities | |||||
| ACID | Native | Native | Native | Native | Native |
| JSON | Native | Native | Native | Native | Native |
| Vector | Native | Extension | Extension | Native | No |
| HA model | None | None | Primary-standby | Raft | Multi-master |
| Ecosystem | |||||
| Managed providers | 1 | 2 | 9 | 1 | 1 |
| ORM support | — | 8 | 10 | 6 | 2 |
| Use cases | |||||
| Best for | Edge applications · Local-first apps · SQLite-compatible workloads | Embedded applications, mobile apps, local data storage, edge computing, and prototyping | General-purpose OLTP, complex queries with advanced SQL, geospatial data with PostGIS, and applications requiring strong ACID compliance | Flexible-schema applications, content management, real-time analytics, and mobile/IoT backends | Serverless applications, high-throughput key-value access patterns, and globally distributed low-latency workloads |
| Not ideal for | Heavy OLAP · Multi-node distributed systems | High-concurrency write-heavy workloads, multi-user client-server applications | Extreme write-heavy workloads at massive horizontal scale, simple key-value caching, or real-time streaming without extensions | Highly relational data with complex joins or strict referential integrity requirements | Complex relational queries, ad-hoc analytics, or workloads requiring flexible querying without predefined access patterns |
Install the Turso CLI, create a database, and run a first query. Under a minute once the CLI is on your machine.
# macOS / Linux
curl -sSfL https://get.tur.so/install.sh | bash
# Or with Homebrew
brew install tursodatabase/tap/tursoturso auth signup
turso db create my-app
turso db show my-appturso db shell my-appCREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
created_at TEXT DEFAULT (datetime('now'))
);
INSERT INTO users (email) VALUES ('[email protected]');
SELECT * FROM users;That is a live database with an edge replica. Connect from any language with the libSQL drivers, or open it in a GUI to browse tables and run queries visually.
The world's most advanced open-source relational database
The most popular document database for modern applications
High-performance open-source vector database for next-generation AI applications
Fast in-process analytical database with rich SQL support and zero dependencies
Fast, typo-tolerant open-source search engine with built-in vector and semantic search
Serverless PostgreSQL with separated storage and compute, branching, and scale-to-zero
Connect to Turso in 30 seconds. Browse tables, run queries, and edit rows visually, on localhost, self-hosted, or cloud.
Open Turso in 1bench