causum-sync
causum-sync is a lightweight local client that lets users securely run data connector synchronizations entirely on their own machines — without ever sharing database credentials externally.
It executes open-source Airbyte connectors under the hood via Docker, verifies all source and destination connections, and loads the resulting data into your unified analytics database (Postgres).
🚀 Key Features
- 🧩 Automatic source verification – checks all source connections before migration
- 🗄️ Destination verification – validates your Postgres connection before loading
- 🐳 Docker-based execution – runs Airbyte connectors locally using Docker SDK
- 🔄 Full migration pipeline – extracts, verifies, and loads automatically
- 🧠 Multi-connector support – runs all configs in one bundle (up to 19+)
- 🎨 Colorized CLI with emojis – clear cross-platform terminal output
- 🧾 Verbose mode – detailed Docker and psycopg2 logs for debugging
- 🛡️ Offline and private – credentials never leave the user’s environment
📦 Installation
Requires:
- Python 3.8+
- Docker running locally
- Network access to your source databases
- Network access to the specified destination database
Install from source:
git clone https://github.com/yourorg/causum-sync.git
cd causum-sync
pip install -e .
⚙️ How It Works
The frontend generates a ZIP bundle containing all connection configurations:
causum_configs_2025-11-04.zip
├── config/
│ ├── postgres.json
│ ├── mysql.json
│ ├── mongo.json
│ └── ...
└── destination_config.json
config/*.json– source database connector configurationsdestination_config.json– your specified Postgres destination
The library:
- Extracts and validates the bundle.
- Runs Airbyte Docker connectors for each source.
- Streams their output into your Postgres destination.
🧑💻 Usage
Run with a bundle path
causum-sync --bundle ~/Downloads/causum_configs_2025-11-04.zip
Auto-import the latest bundle from Downloads
causum-sync --auto-import
Enable verbose debug output
causum-sync --bundle ~/Downloads/causum_configs_2025-11-04.zip --verbose
🧠 Workflow Summary
1️⃣ Extract bundle
📦 Detects and unpacks causum_configs_*.zip
2️⃣ Verify connections 🧩 Runs connection checks for every source and destination
3️⃣ Migrate data 🔄 Sequentially extracts from each source and loads into Postgres
4️⃣ Report results ✅ Green = success ❌ Red = failure ⚠️ Warns if configs require correction
🔧 Example Output
📦 Imported bundle from ~/Downloads/causum_configs_2025-11-04.zip
🧩 Verifying source connections...
✅ postgres
✅ mysql
❌ mongo (Authentication failed)
✅ snowflake
🧩 Verifying destination connection...
✅ destination
⚠️ Connection issues: mongo
Fix configs and retry.
If all succeed:
🔄 All connections verified, starting migration...
⚙️ Migrating postgres → unified_mimic.public ...
✅ postgres complete
✅ All sources migrated successfully!
🐳 Connectors Supported
Out of the box, causum-sync supports these Airbyte sources:
| Connector | Image |
|---|---|
| Postgres | source-postgres |
| MySQL | source-mysql |
| MongoDB | source-mongodb-v2 |
| Snowflake | source-snowflake |
| ClickHouse | source-clickhouse |
| Oracle | source-oracle |
| MSSQL | source-mssql |
| Redshift | source-redshift |
| ...and more |
New connectors can be added in mapping.py.
⚙️ Command Reference
| Flag | Description |
|---|---|
--bundle <path> |
Path to the ZIP bundle from frontend |
--auto-import |
Automatically use the latest bundle from Downloads |
--verbose |
Print detailed Docker and database logs |
-h, --help |
Show help message |
🧱 Development
Structure:
causum-sync/
├── src/
│ ├── cli.py
│ ├── runner.py
│ ├── migrate.py
│ ├── to_postgres.py
│ ├── utils.py
│ ├── constants.py
│ └── mapping.py
├── setup.py
└── README.md
🪪 License
MIT License © 2025 Causum™ Analytics See LICENSE for details.
💬 Acknowledgments
This library uses Airbyte connectors under the hood to perform source extraction and validation, leveraging Docker for execution and psycopg2 for Postgres ingestion.
Metadata
Release files for causum-sync 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| causum_sync-1.0.0.tar.gz | 4.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| causum_sync-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.7 kB
Release files / causum_sync-1.0.0.tar.gz
| Download URL | causum_sync-1.0.0.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a94129a75b7a94d05483f369a76d55f51916c83930940beb3812324231d8ebf
|
|
BLAKE2b-256 checksum How to use checksums |
bee31c729eee4935a0423f213dbc8bfb1b5c0366973c1d99eb4084682170a417
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / causum_sync-1.0.0-py3-none-any.whl
| Download URL | causum_sync-1.0.0-py3-none-any.whl |
|---|---|
| Size | 4.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
407979b85d88ab818e5b0fab42547462cfa6542ccbd50a793b1429d37aae536e
|
|
BLAKE2b-256 checksum How to use checksums |
7e4b8b6e7cfc2d2ec7172bf1ee07b051bc6d0f3d989e2d6da2de041ba471961a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|