Which package should I use?
| Use case | TypeScript | Python | Go | Rust |
|---|---|---|---|---|
| Local database (embedded, on-device, offline) | @tursodatabase/database | pyturso | tursogo | turso |
| Local database + cloud sync (push/pull) | @tursodatabase/sync | pyturso (with sync) | tursogo (with sync) | turso (with sync feature) |
| Remote access (servers, Docker, serverless, edge — any over-the-wire) | @tursodatabase/serverless | libsql | libsql-client-go | libsql (with remote feature) |
| Legacy (libSQL) — ORM support (Drizzle, Prisma), battle-tested | @libsql/client | libsql | go-libsql | libsql |
@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 true local-first sync.
Need sync? Use Turso Sync for local reads and writes with explicit push() / pull() to Turso Cloud.
Using an ORM (Drizzle, Prisma)? Use @libsql/client — it has production-ready support from all major ORMs in the ecosystem.
Migrating from SQLite? Turso Database is a drop-in replacement. Your existing SQL, schema, and queries work unchanged.
Already using @libsql/client, libsql, or go-libsql? These packages are built on libSQL, our open-source fork of SQLite that predated the Turso Database engine. They are fully supported and battle-tested. Consider migrating to the Turso Database packages for better sync support and concurrent writes — but if you run into something that doesn’t work yet with the newer packages, the libSQL-based ones are reliable fallbacks.
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? If you want local reads and writes with push/pull sync to the cloud, use Turso Sync. The SDKs below connect to Turso Cloud using libSQL, where embedded replica sync only replicates reads locally — writes go to the cloud.