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.1.tar.gz (16.0 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.1-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dbferry-0.1.1.tar.gz
  • Upload date:
  • Size: 16.0 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.1.tar.gz
Algorithm Hash digest
SHA256 43e6e075a66985e1081ab9b90c96a6fe6d13b9bcb2b50f844d819242bd71518c
MD5 84439155d088814d48fa12dee4048d5c
BLAKE2b-256 1f2404ea96f8d71208d1cc47902fac2248c516d54b5331215d1bd90aa30fc0b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dbferry-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 17.2 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 47f1dd904de7525461d2bf2bdbd3e3f29a68b94733dd8b0db3762bd4b5b0476a
MD5 4f545bffc1bcb81e51ecbd1a3a7575d0
BLAKE2b-256 37383388109201b62391a4e542600a8a9fbb1964a3015ba880cbb088105d9b1e

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