promptvc: Git for your prompts
Version, diff, rollback, and ship prompts like code.
Why?
LLM engineers change prompts constantly but track them nowhere. There is no git log for prompts, no git diff between versions, no git checkout to roll back a bad change. promptvc fixes this with zero infra and just a local SQLite file.
Install
pip install prompt-version-control
Optional extras:
pip install "prompt-version-control[yaml]" # YAML export support
pip install "prompt-version-control[s3]" # S3 remote sync
Quick Start
# Initialize in your project directory
promptvc init
# Stage a prompt (opens $EDITOR)
promptvc add summarizer
# Commit it
promptvc commit summarizer -m "initial version"
# Edit and commit again
promptvc add summarizer
promptvc commit summarizer -m "made it more concise"
# See what changed
promptvc diff summarizer
# Full history
promptvc log summarizer
# Show a specific version
promptvc show summarizer --version 1
# Roll back (non-destructive, creates a new version)
promptvc rollback summarizer --version 1
# Tag a stable version
promptvc tag summarizer 1 stable
# Search across all prompts
promptvc search "summarization assistant"
# Export to JSON
promptvc export summarizer --output summarizer.json
Team Sharing
Push your prompt store to a private GitHub Gist and share the ID with teammates:
# First push (creates the Gist, saves ID to config)
promptvc push --gist --token <your-github-pat>
# Teammates pull and merge into their local store
promptvc pull <gist-id>
# Subsequent pushes update the same Gist automatically
promptvc push --gist
Or use S3:
promptvc push --bucket my-team-bucket --key prompts/store.json
promptvc pull s3://my-team-bucket/prompts/store.json
Pull is always safe: it merges by content hash, so no duplicate versions are created.
Commands
| Command | Description |
|---|---|
promptvc init |
Initialize .promptvc/ store in current directory |
promptvc add <name> |
Stage a prompt (editor / --file / stdin) |
promptvc commit <name> -m "msg" |
Commit staged prompt |
promptvc log <name> |
Show version history |
promptvc show <name> |
Display prompt content at a version |
promptvc diff <name> |
Unified diff between versions |
promptvc rollback <name> --version N |
Non-destructive rollback |
promptvc list |
List all tracked prompts |
promptvc env [set dev|staging|prod] |
View or set active environment |
promptvc export <name> |
Export history to JSON/YAML |
promptvc tag <name> <version> <label> |
Tag a version |
promptvc search <query> |
Full-text search |
promptvc push |
Push store to GitHub Gist or S3 |
promptvc pull <remote> |
Pull and merge from a remote |
Features
- Zero infra: local SQLite (
.promptvc/store.db), nothing to deploy - Works alongside Git: version your prompts next to your code
- Multi-environment:
dev,staging,prodsupport per version - Token counting: via tiktoken, falls back to word estimate
- Full-text search: SQLite FTS5 across all content and commit messages
- Non-destructive: rollback and pull always create new versions, history is never deleted
- Team sharing: push/pull via GitHub Gist or S3
- Rich UI: colored diffs, tables, syntax highlighting
Roadmap
- Remote sync via GitHub Gist
- Remote sync via S3
- GitHub Actions integration
- VS Code extension
Metadata
Release files for prompt-version-control 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prompt_version_control-0.1.0.tar.gz | 20.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prompt_version_control-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.5 kB
Release files / prompt_version_control-0.1.0.tar.gz
| Download URL | prompt_version_control-0.1.0.tar.gz |
|---|---|
| Size | 20.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e27b64426c2d9b22761147309141b11403bd1e3019cd843770622838819d4fbb
|
|
BLAKE2b-256 checksum How to use checksums |
37311eac46634a3234140e896b9a7dc81bfa8dcfda81d6c4cf08e3a56090c794
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 6, 2026.
Transparency logRelease files / prompt_version_control-0.1.0-py3-none-any.whl
| Download URL | prompt_version_control-0.1.0-py3-none-any.whl |
|---|---|
| Size | 29.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6dbbfc46673dd7e67658dd888ca275047de594a861c784692ad3fd985a76504e
|
|
BLAKE2b-256 checksum How to use checksums |
1c84cbf6b5e3ef06ce5c1ad2a5fc22d81ae7ebed0c4097913d5835a93c3cd6ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 6, 2026.
Transparency log