Skip to main content

A secure, local-first database migration tool

Project description

🐬 dbferry

A secure, local-first database migration tool — move your data safely between 2 Postgres Databases.

dbferry lets you migrate databases without exposing credentials or data to any third-party service. It’s open-source, local-first, and transparent by design.


Key Features

  • Local-first security — No telemetry, no external calls, no remote logs.
  • Schema + Data migration — Migrate structure and contents seamlessly.
  • Cross-engine support — PostgreSQL, MySQL, SQLite, and more (extensible via adapters).
  • Verifiable — Check row counts and checksums for consistency.
  • Simple YAML config — Readable, declarative, and versionable.

Quick Start

# Install using pip (simplest method)
pip install dbferry

# Install using uv tool
uv tool install dbferry

# Install using pipx (recommended for CLI tools)
pipx install dbferry

# Install directly from GitHub (latest development version)
pip install git+https://github.com/AbdLim/dbferry.git

Initialize your migration:

dbferry init

Then edit your generated migration.yml:

source:
    type: postgres
    host: localhost
    port: 5432
    database: my-awesomedb
    user: postgres
    password: postgres
    sslmode: require

target:
    type: postgres
    host: localhost
    port: 5432
    database: targetdb
    user: postgres
    password: postgres
    sslmode: require

options:
    tables:
        - "*"
    verify_after_migration: true

Run the migration:

dbferry migrate --config migration.yml

Verify:

dbferry verify --config migration.yml

Philosophy

dbferry is built on a few simple but strict principles:

Principle Meaning
Local-first Everything runs on your machine. Nothing is sent out.
Transparent Open code, auditable behavior.
Composable Extend it for new databases or workflows.
Safe by default Never modifies the source database.
Verifiable Trust built through evidence, not claims.

Roadmap

  • PostgreSQL → MySQL/SQLite migrations
  • Checkpoint + resume system
  • Incremental sync support
  • CLI + Web UI parity
  • Plugin API for non-SQL engines (Mongo, ClickHouse, etc.)

Security Promise

dbferry will never:

  • Send telemetry or logs to external servers
  • Store credentials outside your environment
  • Require network access beyond your databases

Everything happens locally — inspect the source and verify it yourself.


Contributing

We welcome community contributions!
Open an issue or PR at github.com/AbdLim/dbferry


License

Licensed under the Apache License — see LICENSE for details.


“Move your data safely. Locally. Transparently.”
— The dbferry Project

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbferry-0.1.2.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dbferry-0.1.2-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file dbferry-0.1.2.tar.gz.

File metadata

  • Download URL: dbferry-0.1.2.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for dbferry-0.1.2.tar.gz
Algorithm Hash digest
SHA256 09ea1e58cf9d1619dda64d05570d4e16a0871fd1f84fb74958743e27ccfb212c
MD5 11f8cf228a7f5ea0112c892532a2afa7
BLAKE2b-256 6420019f07760ea2b6afcefa86bd0b8dbf2c5c3c004d4d1aee9a3d98c12e515e

See more details on using hashes here.

File details

Details for the file dbferry-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: dbferry-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for dbferry-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b31d5d5fedbe096a861e2a4febf20278f26ad7801db618863dedd2342e73f832
MD5 6a464b8763cb7afca919cf00dc46bebb
BLAKE2b-256 d026d36579d5485ad143d477c915fdf8e61e8a6e02ed5c83a7966461e8f1112e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page