Developers can build locally with Turso using either of the following methods:

SQLite

Turso, a hosted platform for libSQL (a fork of SQLite), is ideal for local development, particularly for projects using SQLite, testing environments, and seamlessly transitioning from dev to prod by creating databases from SQLite files

There are a few things to keep in mind when using SQLite for local development:

  • Doesn’t have all the features of libSQL
  • Works with non-serverless based Turso SDKs

When working with an SDK, you can pass it a file: URL to connect to a SQLite database file instead of a remote Turso database:

import { createClient } from "@libsql/client";

const client = createClient({
  url: "file:local.db",
});

You don’t need to provide an authToken in development.

It’s recommended to use environment variables for both url and authToken for a seamless developer experience.

Turso CLI

If you’re using libSQL specific features like extensions, you should use the Turso CLI:

turso dev

This will start a local libSQL server and create a database for you. You can then connect to it using the url option in your SDK:

import { createClient } from "@libsql/client";

const client = createClient({
  url: "http://127.0.0.1:8080",
});

Changes will be lost when you stop the server.

If you want to persist changes, you can pass the name of the SQLite file to turso dev:

turso dev --db-file local.db

libSQL Server

You can build and run libSQL server (sqld) yourself locally, or inside your own infrastructure using the source code:

Turso Database

If you already have a database created with Turso, you can use that same one in development by passing the url option to your SDK.

Keep in mind that using the Turso hosted database will incur platform costs and count towards your quota. Consider using SQLite or Turso CLI for local development to avoid platform costs.