Which package should I use?
Starting a new project? Use
@tursodatabase/database (TypeScript), pyturso (Python), tursogo (Go), or turso (Rust). These are built on the Turso Database engine — the ground-up rewrite of SQLite with concurrent writes, async I/O, and local-first sync.
Need sync? Use Turso Sync for local reads and writes with explicit push() / pull() to Turso Cloud.
Using an ORM?
- TypeScript — Drizzle and Prisma run on
@libsql/clientwith production-ready support from all major ORMs in the ecosystem. - Rust — Toasty, the async ORM from the Tokio project, has a native Turso driver built on the
tursocrate. - Python — see the SQLAlchemy guide.
@libsql/client, libsql, or go-libsql? These packages are built on libSQL, the open-source fork of SQLite that powers Turso Cloud today. They are production-ready and battle-tested. If your workload needs concurrent writes, push/pull sync, or local-first writes (offline / multi-writer / bidirectional), the Turso Database packages are also a good choice — pick the one that fits your workload.
Why multiple packages in TypeScript?
Keeping@tursodatabase/database and @tursodatabase/serverless separate means minimal bundle size. @tursodatabase/serverless uses only fetch — zero native dependencies, so it works in Node.js, Docker containers, serverless functions, edge runtimes, and browsers.
Need sync? For new projects, use Turso Sync — it gives you local reads and writes with explicit
push() / pull() to the cloud. The libSQL-based SDKs below also support Embedded Replicas, where reads are local and writes are sent to the cloud primary.