libSQL is an open source, open contribution fork of SQLite, created and maintained by Turso.
libSQL Docs · libSQL Manifesto · Turso · Turso Docs · Discord · Blog & Tutorials
[!IMPORTANT] Turso database and libSQL are two different projects from the same team.
libSQL (this repository) is an open-source fork of SQLite. It extends SQLite with features like embedded replicas and remote access, but inherits SQLite's fundamental limitations such as the single-writer model.
Turso database is a SQLite-compatible database rewritten from scratch in Rust. It is not a fork of SQLite — it is a completely new implementation that goes beyond what any SQLite fork can offer, including concurrent writes and bi-directional sync with offline support. Turso is currently in beta.
If you're starting a new project, you probably want to look into Turso. libSQL is actively maintained, but new features are being developed in Turso.
Documentation
We aim to evolve it to suit many more use cases than SQLite was originally designed for, and plan to use third-party OSS code wherever it makes sense.
libSQL has many great features, including:
- Embedded replicas that allow you to have replicated database inside your app.
- libSQL server for remote SQLite access, similar to PostgreSQL or MySQL
- Supports Rust, JavaScript, Python, Go, and more.
There are also various improvements and extensions to the core SQLite:
ALTER TABLEextension for modifying column types and constraints- Randomized ROWID
- WebAssembly User Defined Functions
- Pass down SQL string to virtual table implementation
- Virtual write-ahead log interface
The comprehensive description can be found here
Official Drivers
Experimental Drivers
Community Drivers
GUI Support
- Beekeeper Studio — macOS, Windows, and Linux
- Outerbase — Runs in the browser
- TablePlus — macOS, Windows, and Linux
- Dataflare — Paid (with limited free version) macOS, Windows, and Linux
- libSQL Studio - Runs in the browser
Getting Started
The project provides two interfaces: the libSQL API, which supports all the features, and the SQLite C API for compatibility.
To build the SQLite-compatible C library and tools, run:
cargo xtask build
To run the SQL shell, launch the libsql program:
$ cd libsql-sqlite3 && ./libsql
libSQL version 0.2.1 (based on SQLite version 3.43.0) 2023-05-23 11:47:56
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
libsql>
Docker
To run libSQL using docker, refer to the Docker Docs
Why a fork?
SQLite has solidified its place in modern technology stacks, embedded in nearly any computing device you can think of. Its open source nature and public domain availability make it a popular choice for modification to meet specific use cases.
But despite having its code available, SQLite famously doesn't accept external contributors and doesn't adhere to a code of conduct. So community improvements cannot be widely enjoyed.
There have been other forks in the past, but they all focus on a specific technical difference. We aim to be a community where people can contribute from many different angles and motivations.
We want to see a world where everyone can benefit from all the great ideas and hard work that the SQLite community