Introduction
Litestream is a standalone disaster-recovery tool for SQLite databases. It runs as a background process that continuously streams WAL changes to S3-compatible storage, giving SQLite the durability guarantees typically reserved for client-server databases. By pairing SQLite's simplicity with cloud-based replication, Litestream lets small teams ship production apps on a single server without sacrificing data safety.
What Litestream Does
- Continuously replicates SQLite WAL changes to S3, GCS, Azure Blob, SFTP, or local paths
- Provides point-in-time restore from any snapshot or WAL segment
- Runs as a sidecar process or systemd service alongside your application
- Supports multiple replica destinations simultaneously for redundancy
- Operates with near-zero impact on application read/write performance
Architecture Overview
Litestream monitors the SQLite WAL (Write-Ahead Log) file and streams new pages to one or more configured replica destinations. It takes periodic snapshots of the full database and retains WAL segments between snapshots, enabling point-in-time recovery. Because it works at the WAL level rather than through SQL queries, it adds negligible overhead to database operations and requires no changes to application code.
Self-Hosting & Configuration
- Install a single binary with no runtime dependencies
- Configure replicas in a YAML file specifying destination URLs and retention policies
- Run as a systemd service for automatic startup and restart
- Set
LITESTREAM_ACCESS_KEY_IDandLITESTREAM_SECRET_ACCESS_KEYfor S3 auth - Use the Docker image for containerized deployments with sidecar pattern
Key Features
- Sub-second replication lag for continuous data protection
- Works with any S3-compatible backend including MinIO and Backblaze B2
- No application code changes required; operates purely on the WAL
- Built-in validation command to verify replica integrity
- Supports age-based retention policies for snapshot and WAL cleanup
Comparison with Similar Tools
- SQLite backup API — creates point-in-time copies but lacks continuous streaming
- rqlite — distributed SQLite with Raft consensus; Litestream is simpler, single-node replication
- LiteFS — FUSE-based distributed SQLite by the same author; Litestream focuses on backup, LiteFS on multi-node reads
- pg_basebackup — PostgreSQL-specific; Litestream brings similar streaming concepts to SQLite
- Turso/libSQL — managed distributed SQLite; Litestream is self-hosted and storage-agnostic
FAQ
Q: Does Litestream lock the database during replication? A: No. It reads WAL pages without acquiring locks, so your application continues to read and write normally.
Q: Can I replicate to multiple destinations? A: Yes. You can configure multiple replica targets in the YAML config, and Litestream streams to all of them simultaneously.
Q: How do I restore a database?
A: Run litestream restore -o /path/to/restored.db s3://bucket/db to pull the latest snapshot and replay WAL segments.
Q: Does it work with WAL mode disabled? A: No. Litestream requires SQLite to operate in WAL mode, which is the recommended journal mode for most applications.