Skip to main content

Universal SQLite Synchronization Core - A dependency-grade, local-first, offline-first SQLite synchronization primitive

Project description

sqlite-sync-core

Python 3.11+ License: AGPL-3.0 PyPI Status: Production Grade

A production-grade, turn-key synchronization system for SQLite.

sqlite-sync-core provides a powerful, local-first synchronization engine that works seamlessly across multi-peer networks. It handles the "hard parts" of sync (vector clocks, causality, delta bundles, and conflict resolution) while providing a simple, turn-key interface for developers.


๐Ÿš€ Turn-Key Synchronization

You can launch a full synchronization node in one command. No infrastructure required.

16-Second Setup (CLI)

# Install the package
pip install sqlite-sync-core

# Start a node and sync the 'tasks' table automatically
sqlite-sync start --db app.db --name Device-A --tables tasks

Automatic Multi-Peer Sync

Nodes automatically discover each other on the local network (P2P) and synchronize state in the background without any manual peer configuration.


๐Ÿ—๏ธ Enterprise Features

  • Multi-Peer Orchestration: Automatically scales sync across N devices.
  • P2P Discovery: Zero-config peer-to-peer discovery on LAN.
  • Automatic Resolution: Configurable strategies like Last-Write-Wins and Field-Level Merge.
  • Schema Evolution: Built-in migrations that sync across the network.
  • Transport Agnostic: Works over HTTP, WebSockets, or file transfer.

Technical Usage (Library)

Initialize a Node in Code

from sqlite_sync import SyncNode

node = SyncNode(
    db_path="app.db",
    device_name="MobileApp",
    sync_interval=10  # Sync every 10 seconds
)

await node.start()
node.enable_sync_for_table("users")

Safe Schema Migrations

# Safely add a column that will sync to all other peers
sqlite-sync migrate --db app.db --table tasks --add-column priority --type INTEGER

Core Invariants

# Invariant Description
1 Causal consistency Vector clocks ensure the correct order of operations.
2 Deterministic Replay Identical sets of operations always result in identical state.
3 Conflict Tolerance Detects and resolves conflicts explicitly and safely.
4 Offline-First Entirely local-first design; works without cloud or internet.

2. Generate a Delta Bundle

# To be sent to Peer B
bundle_path = engine.generate_bundle(
    peer_device_id=peer_b_id,
    output_path="delta.db"
)

3. Import and Detect Conflicts

# On Peer B
result = engine.import_bundle("delta.db")

print(f"Ops Applied: {result.applied_count}")
print(f"Conflicts Detected: {result.conflict_count}")

Core Invariants

# Invariant Description
1 Append-only Operation history is immutable.
2 Causal consistency Hybrid Logical Clocks (HLC) ensure correct partial ordering and wall-clock correlation.
3 Deterministic Replay results are identical across all replicas.
4 Field-Level Merge "Smart" LWW resolution merges concurrent non-conflicting field updates.

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     Your Sync System / App      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚ Uses
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚       sqlite-sync-core          โ”‚
โ”‚  (Logging, Bundling, Clocks)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚ Persists to
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         SQLite Database         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

License

AGPL-3.0 for Open Source. Contact shivaysinghrajput@proton.me for commercial licensing.


Built for developers who need a reliable sync foundation.

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

sqlite_sync_core-0.6.0.tar.gz (102.1 kB view details)

Uploaded Source

Built Distribution

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

sqlite_sync_core-0.6.0-py3-none-any.whl (113.4 kB view details)

Uploaded Python 3

File details

Details for the file sqlite_sync_core-0.6.0.tar.gz.

File metadata

  • Download URL: sqlite_sync_core-0.6.0.tar.gz
  • Upload date:
  • Size: 102.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for sqlite_sync_core-0.6.0.tar.gz
Algorithm Hash digest
SHA256 7a29a8fe301f81fc7bd38268b029249527b7b30edafb2f3a0fdd4c0862d8187e
MD5 6d05cc7c07afa6f9bb031b84de5a48ae
BLAKE2b-256 7d629320add0f8469187bb9a5180ccfae70706b9e37f2685065721402471b3c9

See more details on using hashes here.

File details

Details for the file sqlite_sync_core-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlite_sync_core-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c86e352b705a62d00055f4195521df3b06b4fd36de2d14a5a4ffb2c1a70fe19
MD5 70a8c3b5e25fde779976b28c1e958b2e
BLAKE2b-256 eee6d2d082f7ae673a3d4d0e9e6175e44d4cc4abd77d36992883b2f121541ccf

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