Skip to main content

Local connector runner that verifies, migrates, and loads data to your analytics database.

Project description

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 configurations
  • destination_config.json โ€“ your specified Postgres destination

The library:

  1. Extracts and validates the bundle.
  2. Runs Airbyte Docker connectors for each source.
  3. 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.

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

causum_sync-1.0.0.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

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

causum_sync-1.0.0-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file causum_sync-1.0.0.tar.gz.

File metadata

  • Download URL: causum_sync-1.0.0.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for causum_sync-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2a94129a75b7a94d05483f369a76d55f51916c83930940beb3812324231d8ebf
MD5 108861368d8d52d0369ffa74f63843cb
BLAKE2b-256 bee31c729eee4935a0423f213dbc8bfb1b5c0366973c1d99eb4084682170a417

See more details on using hashes here.

File details

Details for the file causum_sync-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: causum_sync-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for causum_sync-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 407979b85d88ab818e5b0fab42547462cfa6542ccbd50a793b1429d37aae536e
MD5 875e3eb1042320f487d586183eca8d74
BLAKE2b-256 7e4b8b6e7cfc2d2ec7172bf1ee07b051bc6d0f3d989e2d6da2de041ba471961a

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