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.