Skip to main content

parad

Encrypted local-first SQLite with Telegram cloud sync — a git-like, zero-cost workflow database. Telegram is the disk: every change you commit becomes a version-stored snapshot you can revert to anytime.

Install

pip install parad

Quick Start

Python SDK (developer workflow — auto-sync on by default)

Connect with a postgres-like connection string, write SQL offline, and the sync daemon version-stores your changes automatically. No manual push needed.

from parad import connect

# Auto-login (email:password), auto-provision project + database on the
# gateway, open/create the local encrypted SQLite file.
db = connect(url="parad://alice@example.com:secretpw@local/myproj/mydb?passphrase=secret")

# Build SQL offline like any SQLite database ...
db.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
db.execute("INSERT INTO users (name) VALUES (?)", ("alice",))
db.commit()

# ... and it's already pushed to the cloud as a new snapshot version (~2s).
# Revert anytime (from the CLI):
# !parad rollback 1

db.close()

Offline? Keep writing — changes are flagged dirty and batch-pushed as new versions the moment you reconnect. On conflicts your local data always wins (never silently dropped).

Local-only is just as easy:

db = connect("mydb", passphrase="secret", auto_sync=False)

CLI

# Create an encrypted database
parad init mydb

# Push to cloud
parad push

# Pull latest
parad pull

# Check status
parad status

# Interactive SQL
parad shell

Commands

Command Description
parad init <name> Create encrypted DB + register with gateway; emit canonical DATABASE_URL
parad push Push database to Telegram cloud
parad pull [version] Pull latest or specific version
parad sync Push then pull
parad status Local vs remote version
parad versions List all remote versions
parad rollback <ver> Rollback to previous version
parad exec <sql> Run raw SQL
parad insert <table> <json> Insert a row
parad select <table> [where] Query rows
parad update <table> <set> <where> Update rows
parad delete <table> <where> Delete rows
parad shell Interactive SQL REPL
parad config show/set Manage config

Canonical DATABASE_URL

After parad init successfully provisions the project and database, Parad persists the complete connection URL in config.json as database_url and prints a redacted form:

parad init mydb --project myproject

Use --print-database-url only when intentionally copying the complete secret-bearing URL into a secret manager:

parad init mydb --project myproject --print-database-url

Applications can use the same single value:

import os
from parad import connect

db = connect(url=os.environ["DATABASE_URL"])

An explicit url, name, or db_path argument takes precedence over an ambient DATABASE_URL. Existing connection strings and config-based workflows remain supported.

SQLAlchemy

Install the optional integration with pip install "parad[sqlalchemy]", then use the same canonical URL with create_engine("parad://..."). The ORM, Core, DB-API, and encrypted lifecycle examples are documented in docs/SQLALCHEMY.md.

Configuration

Config lives at ~/.paradox/config.json:

{
  "database_url": "parad://<api-key>@local/project/mydb?gateway=https%3A%2F%2F...&passphrase=...",
  "database_path": "~/.paradox/data.db",
  "sync": {
    "gateway_url": "https://paradox-db.onrender.com/v1",
    "api_key": "pk_..."
  }
}

Security

  • AES-256-CBC encryption at rest
  • PBKDF2-HMAC-SHA512 key derivation (256k iterations)
  • Your passphrase never leaves your machine

Metadata

Release files for parad 2.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parad 2.2.3
File Size Uploaded
parad-2.2.3.tar.gz 47.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for parad 2.2.3
File Interpreter ABI Platform
parad-2.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 93.8 kB

Release files / parad-2.2.3.tar.gz

Download URL parad-2.2.3.tar.gz
Size 47.1 kB
Tags Source
SHA-256 checksum
How to use checksums
09e6832207055584b49f837dba84a2b241db64d3a0880bf8248a4696d225b5f2
BLAKE2b-256 checksum
How to use checksums
28ac74c773ef222a11bcdd2d9615af4b087896d0ac6de3ccd0b07b5d44493e43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / parad-2.2.3-py3-none-any.whl

Download URL parad-2.2.3-py3-none-any.whl
Size 46.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
742842dc4e4e70652318eead7764fb1b49df46eda1b6584df515fc731b55a42c
BLAKE2b-256 checksum
How to use checksums
8e2143f965605c67ce91b494aab34405c80906254b496c1394d2b4c74d438fdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

2.2.6

2 release files

2.2.4

2 release files

This release

2.2.3 This release

2 release files

2.2.2

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page