Skip to content

Why Not Litestream?

Litestream is an excellent tool for SQLite replication. We use it extensively and highly recommend it. Walsync is heavily inspired by Litestream’s approach to WAL streaming.

Use Litestream when:

  • You have a single database
  • Battle-tested production stability is critical
  • Your team is familiar with the Go ecosystem
  • You want the most mature tooling

Walsync was built for a specific use case: many SQLite databases on resource-constrained servers.

Litestream runs one process per database. For a single database, this is fine:

DatabasesLitestream Memory
1~33 MB

But as you add databases, memory scales linearly:

DatabasesLitestreamWalsyncSavings
133 MB12 MB21 MB
5152 MB14 MB138 MB
10286 MB12 MB274 MB
20600 MB12 MB588 MB

On a 512MB Fly.io VM running 10 tenant databases, Litestream alone would consume over half your memory.

If you’re running multi-tenant SQLite (like Turso, Tenement, or your own setup), walsync lets you back up all tenant databases with a single ~12MB process.

Terminal window
# Back up all tenant databases with one process
walsync watch \
/var/lib/app/tenant1/app.db \
/var/lib/app/tenant2/app.db \
/var/lib/app/tenant3/app.db \
-b s3://backups
FeatureLitestreamWalsync
WAL streamingYesYes
S3/compatible storageYesYes
Point-in-time restoreYesYes
Multi-database1 process eachSingle process
Memory (10 DBs)~286 MB~12 MB
CompressionBuilt-inVia SQLite extensions
EncryptionNot built-inVia SQLite extensions
SHA256 checksumsImplicitExplicit in S3 metadata
MaturityProduction-provenNewer
  • 1-3 databases on a standard server: Use Litestream
  • Many databases on a small server: Use walsync
  • Multi-tenant SQLite: Use walsync

Both tools solve the same core problem (SQLite backup to S3) with different tradeoffs. Pick the one that fits your architecture.