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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parad-2.2.0.tar.gz.
File metadata
- Download URL: parad-2.2.0.tar.gz
- Upload date:
- Size: 43.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50f27a6850818f8cb690485e810d6d7df353f6017a715210ae6e3b2410fd7678
|
|
| MD5 |
a42f335484122687cc8528cb1a929c03
|
|
| BLAKE2b-256 |
20b2f8488cad129964b332ca95fab4b3cc85917269a211b7e59e47a68a9784f0
|
File details
Details for the file parad-2.2.0-py3-none-any.whl.
File metadata
- Download URL: parad-2.2.0-py3-none-any.whl
- Upload date:
- Size: 43.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1e1b7a458bd89eafbeee2554a0dbee64ae24b3776e070f13ac9e5a86cb7a40d
|
|
| MD5 |
1b6220b8141ed1ad7755b9331935eb58
|
|
| BLAKE2b-256 |
eeef9d5d46920f425515bcff1461ac6e10f107523f4ddc0033b5dc9e291d4b6a
|