Skip to content
Takshak Mudgal

siphon

Database dumps and restores from one terminal UI.

Backs up Postgres, MySQL and MariaDB, MongoDB, SQLite and Redis, and finds the databases already running in Docker. You need no client tools: if pg_dump is missing, siphon runs it in a throwaway container. Every action is read-only except restore, and on macOS a restore asks for your login password first.

brew install takshakmudgal/tools/siphon
Version
0.5.2, 29 Jul 2026
Tests
223
Rust
13,625 lines
Runs on
macOS and Linux
Built with
ratatui, crossterm, tokio, calamine, serde_json
License
MIT

Keys

Read from the source, not the README.

d
dump now
R
restore a dump
I
import a file
i
import a detected container
a
auto-backup schedule
t
test and refresh stats
r
rescan Docker
n
new connection

How it works

Three ways to run a dump

For each dump it takes the first runtime that works: docker exec into the container the connection is bound to, the client tool on your PATH, or docker run --rm with the URI passed in. Localhost is rewritten to host.docker.internal so local servers still work from inside the container.

Redis without redis-cli

Redis dumps and restores go over the wire protocol with DUMP and RESTORE, so no .rdb files and no extra binaries.

Imports that keep the schema

It loads foreign dumps and data files (pg_dump archives, .sql, mongodump, SQLite, JSON, CSV, XLSX, gzipped or not) and picks the tool by the file's magic bytes. When a file carries its own DDL, siphon replays it, creates the sequences the export forgot, applies keys before foreign keys and refuses to write any rows if the schema can't be applied.

Numbers stay exact

Values pass through with serde_json's arbitrary precision, so a numeric(30,10) or an id past 2^53 is never rounded through a double on the way in.