| TeleVault | Cloud Storage | |
|---|---|---|
| Cost | Free | $5-30/month |
| Limit | Unlimited | 15 GB - 2 TB |
| Encryption | AES-256-GCM client-side | Server-side or none |
| Trust | Zero-trust (you hold the key) | Trust the provider |
| Max file size | 2 GB | Varies |
| Speed | Parallel chunk transfers | Single connection |
AES-256-GCM with scrypt key derivation. Your password never leaves your machine. Telegram only sees ciphertext.
Upload 3 chunks, download 5 chunks simultaneously. 100 MB default chunk size.
CRC32-protected progress files survive interruptions. Resume with --resume.
Incremental snapshots with retention policies. Restore to any point in time.
Mount your vault as a local filesystem. On-demand chunk streaming with LRU cache.
Access files over HTTP from any device. macOS Finder, Windows Explorer, mobile apps.
Full interactive file browser with detail panel, file type icons, and login flow.
cat file | tvt push - ยท tvt cat file | jq ยท tvt ls --json
Schedule backups with systemd timers or cron. Watch directories for live changes.
pip install televault
# Optional extras
pip install televault[fuse] # FUSE mount
pip install televault[webdav] # WebDAV server
pip install televault[preview] # Image previews
# 1) Get API credentials at https://my.telegram.org
export TELEGRAM_API_ID=your_id
export TELEGRAM_API_HASH=your_hash
# 2) Login
tvt login
# 3) Setup (interactive, validates channel, sends test message)
tvt setup
# 4) Go!
tvt push photo.jpg
tvt ls
tvt pull photo.jpg
tvt push <file>Upload file (use - for stdin)tvt pull <file>Download file (-o - for stdout)tvt ls [--json]List filestvt cat <file>Stream file to stdouttvt preview <file>Preview without full downloadtvt find <query> [--json]Search files by nametvt info <file> [--json]Detailed file infotvt stat [--json]Vault statisticstvt rm <file>Delete filetvt verify <file>Verify file integritytvt gc [--dry-run]Garbage collectiontvt whoamiShow account infotvt loginAuthenticate with Telegramtvt setupConfigure channel (interactive)tvt channelShow channel infotvt tuiLaunch terminal UItvt completion <shell>Shell completiontvt --versionShow versiontvt backup create <dir>Create snapshottvt backup create --incrementalIncremental backuptvt backup create --dry-runShow plan without uploadingtvt backup listList snapshotstvt backup restore <id>Restore from snapshottvt backup prunePrune old snapshotstvt backup verify <id>Verify snapshot integritytvt backup delete <id>Delete snapshottvt mount -m ~/driveFUSE mount with streaming cachetvt mount --read-only -m ~/driveRead-only mounttvt mount --cache-size 500500 MB LRU cachetvt serveWebDAV server on :8080tvt serve --host 0.0.0.0 --port 9090Custom host/porttvt serve --read-onlyRead-only WebDAVtvt schedule create <dir> --name dailyCreate daily scheduletvt schedule listList schedulestvt schedule install dailyInstall as systemd timertvt schedule uninstall dailyRemove systemd timertvt watch --path /dataWatch directory for changestvt watch --path /data --interval 10Custom poll intervalYour password never leaves your machine. Each chunk gets a random 16-byte salt and 12-byte nonce. BLAKE3 hashes verify integrity at every stage. If you lose your password, there is no recovery.
git clone https://github.com/YahyaToubali/televault.git
cd televault
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,fuse,webdav,preview]"
pytest # Run tests
ruff check src/ # Lint
cli.py โ Click CLI, command dispatch, friendly errorscore.py โ TeleVault class: upload, download, streamtelegram.py โ MTProto client, channel ops, indexmodels.py โ FileMetadata, ChunkInfo, VaultIndexchunker.py โ File splitting, ChunkWriter, BLAKE3crypto.py โ AES-256-GCM, scrypt, streamingcompress.py โ zstd compressionfuse.py โ FUSE driver with on-demand streamingpreview.py โ Terminal preview from headerstui.py โ Textual TUI with detail panelrun_async() โ friendly messages onlytvt and televaulttests/See ARCHITECTURE.md for detailed system design.