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.
- Share: Send a self-contained
.pvccapsule to a colleague. - Resurrect: Restore a dead environment exactly as it was 3 months ago.
- Debug: Snapshot a bug state (including the DB) and analyze it later.
๐ฆ 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.textual: For the interactive TUI.zstandard: For high-performance compression.
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). - Bit-Identical Verification: (God Level) Verify that a restored project is byte-for-byte identical to the source with
pv verify-clone. - Capsule Portability: Export snapshots to single
.pvcfiles for sharing via email/USB withpv capsule export. - Smart Initialization: Auto-detects project type (Python, Node, Rust, etc.) and generates optimal ignore patterns with
pv init --smart. - 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.
- Vault Garbage Collection: Clean up orphaned data blocks from the vault with the
pv gccommand. - Integrity Checks: Verify the health of your local vault and detect corruption with
pv check-integrity. - Lifecycle Hooks: Execute pre/post-backup and pre/post-restore shell commands for seamless integration.
- Doppler Secret Integration: Automatically inject secrets from Doppler for secure cloud access.
โก Quick Start
1. Initialize
Run this in your project root. The --smart flag auto-detects your language and creates a .pvignore.
pv init --smart
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 (Optional)
Push your encrypted, deduplicated snapshots to S3 or Backblaze B2.
pv push
5. Restore (Teleport)
Bring the project back to life on any machine.
# Restore from a local snapshot
pv vault-restore ./vault/snapshots/my-project/snapshot_latest.json ./restored_project
# Import and restore a portable capsule
pv capsule import my_project.pvc
pv capsule restore ./vault/snapshots/my-project/snapshot_from_capsule.json
๐ ๏ธ Commands
| Command | Description |
|---|---|
pv browse |
(God Level) 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 capsule export |
Export a snapshot to a portable .pvc file. |
pv capsule import |
Import a .pvc file into the local vault. |
pv verify-clone |
(God Level) Verify a restored project is bit-identical to the source. |
pv status |
Show modified files and cloud sync status. |
pv init |
Create configuration. Use --smart for auto-ignore generation. |
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 diff |
Compare a local file against the latest snapshot. |
pv checkout |
Restore a specific file from the latest snapshot. |
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 config set-creds |
Save credentials to pv.toml (requires manual security override). |
๐ฅ๏ธ 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.
[tool.project-vault]
bucket = "my-backup-bucket"
endpoint = "https://s3.us-east-1.amazonaws.com"
vault_path = "./.pv/vault"
Environment Variables & Precedence
pv uses a clear hierarchy for resolving settings:
- Command-Line Flags:
--bucket my-bucketalways wins. PV_Prefixed Env Vars:PV_BUCKEToverridesBUCKET.- Doppler Secrets: If
DOPPLER_TOKENis set, secrets are fetched automatically. - Standard Env Vars:
AWS_ACCESS_KEY_ID,B2_KEY_ID, etc. - Config File:
pv.tomlorpyproject.toml.
Security Note: Use
PV_prefixed variables or Doppler in CI/CD environments to avoid leaking general-purpose credentials.
Lifecycle Hooks
Define shell commands in pv.toml to run at critical stages.
[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:
.
โโโ src/ # The 'pv' Orchestrator & CLI
โ โโโ cli.py # Main entry point
โ โโโ tui.py # Textual-based Time Machine
โ โโโ common/ # Shared utilities (Capsule, Smart Init, etc.)
โโโ projectclone/ # The Backup Engine
โ โโโ src/
โ โโโ cas_engine.py # Content-Addressable Storage logic
โ โโโ verify_engine.py # Bit-identical verification
โ โโโ gc_engine.py # Garbage Collection
โโโ projectrestore/ # The Restore Engine
โโโ src/
โโโ restore_engine.py # Safety-critical restoration logic
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.
๐ค Contributing & License
Contributions are welcome! Please check out the issues and PRs.
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-5.0.2.tar.gz.
File metadata
- Download URL: project_vault-5.0.2.tar.gz
- Upload date:
- Size: 57.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 |
55b154f2f75731b8a9df1430dbee06ee4c0358627a6e58fb30ea7d411c094be0
|
|
| MD5 |
8f00388cd961b317e3653f068c10368e
|
|
| BLAKE2b-256 |
b013cd3744381e497aa9945e971cc718dc2d61ca8610a5c23b69cd4f76881794
|
Provenance
The following attestation bundles were made for project_vault-5.0.2.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-5.0.2.tar.gz -
Subject digest:
55b154f2f75731b8a9df1430dbee06ee4c0358627a6e58fb30ea7d411c094be0 - Sigstore transparency entry: 747661670
- Sigstore integration time:
-
Permalink:
dhruv13x/project-vault@680cfcf16e515484978ce5d0ee27065b8af2032b -
Branch / Tag:
refs/tags/v5.0.2 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@680cfcf16e515484978ce5d0ee27065b8af2032b -
Trigger Event:
push
-
Statement type:
File details
Details for the file project_vault-5.0.2-py3-none-any.whl.
File metadata
- Download URL: project_vault-5.0.2-py3-none-any.whl
- Upload date:
- Size: 40.8 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 |
75da4d006f9034cedfffb55caca40870f0db74fc49a5ae44c8b147403afa3ec9
|
|
| MD5 |
3c89a3ce9aa0434b0cfb7ea96a6d4e52
|
|
| BLAKE2b-256 |
0e339659a8ae5d71e3a83c2c5521ebed5c94ba01c620a00d9d15390e96217b53
|
Provenance
The following attestation bundles were made for project_vault-5.0.2-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-5.0.2-py3-none-any.whl -
Subject digest:
75da4d006f9034cedfffb55caca40870f0db74fc49a5ae44c8b147403afa3ec9 - Sigstore transparency entry: 747661671
- Sigstore integration time:
-
Permalink:
dhruv13x/project-vault@680cfcf16e515484978ce5d0ee27065b8af2032b -
Branch / Tag:
refs/tags/v5.0.2 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@680cfcf16e515484978ce5d0ee27065b8af2032b -
Trigger Event:
push
-
Statement type: