The Unified Project Lifecycle Manager: Backup, Restore, and Teleport Projects Anywhere.
Project description
Project Vault (pv)
The Unified Project Lifecycle Manager.
Teleport your entire project stateโcode, databases, caches, and environmentsโanywhere, safely.
๐ The Core Vision
Project Vault (pv) creates 100% identical project capsules. It captures the "messy reality" of a working project that Git ignores: local databases, node_modules, .env files, compiled binaries, and temp directories.
If you restore a pv snapshot on a new machine and run diff -r, you will see zero differences.
Use Cases:
- Teleport: Move a running workspace from Laptop โ Server in seconds.
- Resurrect: Restore a dead environment exactly as it was 3 months ago.
- Debug: Snapshot a bug state (including the DB) and send it to a colleague.
๐ฆ Installation
The Full Suite (Recommended)
Install the unified tool to get backup, restore, and cloud synchronization features.
pip install project-vault
This installs the pv command, which includes:
projectclone: The core snapshot engine.projectrestore: The safety-critical restoration tool.- An interactive TUI for browsing snapshots (powered by
textual).
Standalone Tools (Advanced)
For servers, CI/CD, or minimal environments, you can install the components independently:
- Backup Only:
pip install projectclone(No cloud deps) - Restore Only:
pip install projectrestore(Zero dependencies, ultra-lightweight)
โจ Key Features
- Interactive Time Machine: (God Level) Browse, view, and restore files from any snapshot in a terminal-based UI (
pv browse). - Cloud Agnostic Sync: Push/pull encrypted, deduplicated snapshots to AWS S3, Backblaze B2, or any S3-compatible storage.
- Content-Addressable Storage: Every file is stored once, saving space and ensuring data integrity.
- Lifecycle Hooks: Execute pre/post-backup and pre/post-restore shell commands for seamless integration with databases and services.
- Vault Garbage Collection: Clean up orphaned data blocks from the vault with the
pv gccommand. - Environment Checker: The
pv check-envcommand verifies your cloud credentials and dependencies. - Notification Integration: Test your notification setup with
pv notify-test. - Doppler Secret Integration: Automatically inject secrets from Doppler for secure cloud access.
โก Quick Start
1. Initialize
Run this in your project root to generate a config file (pv.toml).
pv init
2. Create a Snapshot
Capture the current state of your project into the local vault.
pv vault
3. Check Status
See what has changed in your workspace since the last snapshot.
pv status
4. Sync to Cloud
Push your encrypted, deduplicated snapshots to S3 or Backblaze B2.
# Preview what will be uploaded
pv push --dry-run
# Upload
pv push
5. Restore (Teleport)
Bring the project back to life on any machine.
# Restore the entire project
pv vault-restore ./vault/snapshots/my-project/snapshot_latest.json ./restored_project
# Or fix a single mistake locally
pv checkout src/main.py
๐ ๏ธ Commands
| Command | Description |
|---|---|
pv browse |
(New) Interactive TUI to browse, view, and restore from snapshots. |
pv vault |
Create a content-addressable snapshot of the current directory. |
pv vault-restore |
Full project restoration from a manifest. |
pv status |
Show modified files and cloud sync status. |
pv diff |
Compare a local file against the latest snapshot. |
pv checkout |
Restore a specific file from the latest snapshot. |
pv push |
Sync local vault to Cloud (S3/B2). |
pv pull |
Download missing snapshots from Cloud. |
pv list |
List all local or cloud snapshots. |
pv gc |
Run garbage collection to clean up orphaned vault objects. |
pv check-integrity |
Verify the health of the local vault (detect corruption). |
pv check-env |
Check cloud credentials and dependencies. |
pv notify-test |
Send a test notification. |
pv backup |
(Legacy) Create a file-based backup. |
pv archive-restore |
(Legacy) Restore a file-based backup. |
๐ฅ๏ธ Interactive TUI (pv browse)
For a "Time Machine"-like experience, run the browse command. This opens a Textual-based UI that lets you:
- Navigate all historical snapshots for a project.
- Expand snapshots to see the full file tree.
- View the contents of any file from a past version.
- Restore a single file by pressing
r.
$ pv browse
โโ Snapshots: my-api โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ 20231125_120000 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๐ src/ โ
โ โ โ ๐ main.py โ
โ โ โ ๐ routes.py โ
โ โ ๐ .env โ
โ โ ๐ README.md โ
โ โโ 20231124_183000 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ ... โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ๏ธ Configuration & Advanced Usage
Configuration File (pv.toml)
Running pv init creates a pv.toml file for project-specific settings. You can also define these in your pyproject.toml under the [tool.project-vault] section.
Key options:
bucket: The default cloud bucket.endpoint: The S3-compatible endpoint URL.vault_path: The local directory to store vault data.restore_path: The default directory forvault-restore.
Environment Variables & Precedence
pv uses a clear hierarchy for resolving settings:
- Command-Line Flags: Arguments like
--bucket my-bucketalways win. PV_Prefixed Env Vars:PV_BUCKEToverridesBUCKETfrom a file.- Doppler Secrets: If
DOPPLER_TOKENis set, secrets are fetched and injected as environment variables. - Standard Env Vars:
AWS_ACCESS_KEY_ID,B2_KEY_ID, etc. - Config File:
pv.tomlorpyproject.tomlvalues are used last.
Blockquote: Security Note For automated environments, using Doppler or
PV_prefixed variables is highly recommended to avoid leaking general-purpose cloud credentials.
Lifecycle Hooks
You can define shell commands in your pv.toml to run at critical stages of the backup/restore process. This is ideal for dumping a database before backup or restarting a service after restore.
[tool.project-vault.hooks]
pre-backup = "pg_dump my_db > backup.sql"
post-restore = "psql my_db < backup.sql && rm backup.sql"
๐งฉ Architecture
Project Vault is a monorepo containing three distinct tools:
project-vault(pv): The orchestrator. Handles configuration, cloud sync, and user interaction.projectclone: The backup engine. Handles hashing, deduplication, and manifest generation.projectrestore: The restore engine. A standalone, dependency-free tool focused purely on safe data reconstruction.
๐บ๏ธ Roadmap
See ROADMAP.md for the vision of Project Teleportation, Smart Capsules, and Device Mesh.
๐ License
MIT License.
Project details
Release history Release notifications | RSS feed
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 project_vault-1.0.11.tar.gz.
File metadata
- Download URL: project_vault-1.0.11.tar.gz
- Upload date:
- Size: 39.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8aef4116b15083804634135e51b232ba10564fba139f51f1fa65d45fea234ed
|
|
| MD5 |
e82605e06e55711e2bdf2eb8d9f103ff
|
|
| BLAKE2b-256 |
7d32b0000ace9762442e9a3470d3d02d79e5100b50684754ade4e5f6e3dcaaee
|
Provenance
The following attestation bundles were made for project_vault-1.0.11.tar.gz:
Publisher:
publish.yml on dhruv13x/project-vault
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
project_vault-1.0.11.tar.gz -
Subject digest:
a8aef4116b15083804634135e51b232ba10564fba139f51f1fa65d45fea234ed - Sigstore transparency entry: 725419392
- Sigstore integration time:
-
Permalink:
dhruv13x/project-vault@d2a3dbba020179948623fd7b749382b5fb3ded9f -
Branch / Tag:
refs/tags/v1.0.11 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d2a3dbba020179948623fd7b749382b5fb3ded9f -
Trigger Event:
push
-
Statement type:
File details
Details for the file project_vault-1.0.11-py3-none-any.whl.
File metadata
- Download URL: project_vault-1.0.11-py3-none-any.whl
- Upload date:
- Size: 30.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19661ec9536c5646b388125f047db79a19b24c5a407fb056c9636d15fabef3df
|
|
| MD5 |
2f74d46bf495211f570784497c87f368
|
|
| BLAKE2b-256 |
c3d9e702c57d82dfdd9e8d6c2b1df1bb9ef2c2637f0d03a4511dc221eeb8ecda
|
Provenance
The following attestation bundles were made for project_vault-1.0.11-py3-none-any.whl:
Publisher:
publish.yml on dhruv13x/project-vault
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
project_vault-1.0.11-py3-none-any.whl -
Subject digest:
19661ec9536c5646b388125f047db79a19b24c5a407fb056c9636d15fabef3df - Sigstore transparency entry: 725419399
- Sigstore integration time:
-
Permalink:
dhruv13x/project-vault@d2a3dbba020179948623fd7b749382b5fb3ded9f -
Branch / Tag:
refs/tags/v1.0.11 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d2a3dbba020179948623fd7b749382b5fb3ded9f -
Trigger Event:
push
-
Statement type: