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 |
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 |
Configuration
Config lives at ~/.paradox/config.json:
{
"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.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| parad-2.2.2.tar.gz | 42.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| parad-2.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.3 kB
Release files / parad-2.2.2.tar.gz
| Download URL | parad-2.2.2.tar.gz |
|---|---|
| Size | 42.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
352085f41486cbc7c3a87d4c382ce5afbe5110dcd4827e29d5928559d1b3a0d5
|
|
BLAKE2b-256 checksum How to use checksums |
7a73984ef44f1582ed2adeff7a470b3170969241d969b064975e238c2e89dcb7
|
| 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.2-py3-none-any.whl
| Download URL | parad-2.2.2-py3-none-any.whl |
|---|---|
| Size | 43.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b4d0390df7d767c2402255a8be7a64d08b16741f508fca30317774e6b0be70a1
|
|
BLAKE2b-256 checksum How to use checksums |
dc6f22d4121cd71ffd6ded82fd05387ff9422260a51dfdecffa8d99c23969646
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|