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.5.0.tar.gz (82.5 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.5.0-py3-none-any.whl (95.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sqlite_sync_core-0.5.0.tar.gz
  • Upload date:
  • Size: 82.5 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.5.0.tar.gz
Algorithm Hash digest
SHA256 79db090002bc7ae2353db936aa9302ca7598a37e538d30daa4b178452a13e790
MD5 31d42b329693a232b90a352de256c061
BLAKE2b-256 8d945f99a1a8f15d2a4fa02f2eeaceab2fa07495c6e51cf76a35f06f441dc3b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sqlite_sync_core-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0959aa7390e2ffdd203e18e0d65c2f8d2a027e065645c334b77abf485c53c832
MD5 c36db1487d892abb4497986f9496ecda
BLAKE2b-256 11bd515280b773368b82d5a9a7631fbf6174fa076af112f2abcee0de8331ae61

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