Prompt Vault CLI
Dual Python + Go implementation with Docker support
Save, tag, search, and version your best prompts with a unified CLI.
Features
- 🔐 Save prompts – Store with name, tags, and auto-versioning
- 🔍 Fuzzy search – Find prompts by keyword or tag
- 📋 Clipboard copy – One command to copy prompt ready to paste
- 📚 Version history – Git-based versioning with diff and revert
- 📦 Export/Import – Backup and restore your vault
- 🐍 Python version – Typer CLI with Rich output
- 🐹 Go version – Fast single binary, no dependencies
- 🐳 Docker ready – Pre-configured containers for both
- 🖥️ Interactive TUI – Run without arguments for menu-driven interface
Quick Start
Python Version
cd prompt_vault/python
pip install -r requirements.txt
# Interactive TUI (no arguments)
python3 vault_cli.py
# Or use CLI commands
python3 vault_cli.py create --name "my-prompt" --tags "demo,test"
python3 vault_cli.py get "my-prompt"
Go Version
cd prompt_vault/go
go mod download
go build -o vault
# Interactive TUI (no arguments)
./vault
# Or use CLI commands
./vault create --name "my-prompt" --tags "demo,test"
./vault get "my-prompt"
Docker
# Build and run Python version
docker build -f Dockerfile.python -t prompt-vault:python .
docker run -v $(pwd)/data:/app/data prompt-vault:python create --name "my-prompt"
# Build and run Go version
docker build -f Dockerfile.go -t prompt-vault:go .
docker run -v $(pwd)/data:/app/data prompt-vault:go create --name "my-prompt"
# Or use docker-compose
docker-compose run python create --name "my-prompt"
docker-compose run go create --name "my-prompt"
Commands
Run vault without arguments to open the Interactive TUI.
| Command | Python | Go | Description |
|---|---|---|---|
(tui) |
vault_cli.py |
vault |
Interactive menu (default) |
create |
vault_cli.py create -n "name" |
vault create -n "name" |
Create a new prompt |
get |
vault_cli.py get "name" |
vault get "name" |
Get prompt (copies to clipboard) |
search |
vault_cli.py search "query" |
vault search "query" |
Fuzzy search prompts |
list |
vault_cli.py list |
vault list |
List all prompts |
tags |
vault_cli.py tags |
vault tags |
List all tags |
version |
vault_cli.py version "name" |
vault version "name" |
View version history |
export |
vault_cli.py export |
vault export |
Export vault |
import |
vault_cli.py import file.yaml |
vault import file.yaml |
Import prompts |
delete |
vault_cli.py delete "name" |
vault delete "name" |
Delete a prompt |
Interactive TUI
Run without arguments to open the interactive terminal UI:
# Python
python3 vault_cli.py
# Go
./vault
TUI Menu:
╔══════════════════════════════════════════╗
║ Prompt Vault ║
║ Save, tag, search, version prompts ║
╚══════════════════════════════════════════╝
Main Menu:
1 - List all prompts
2 - Create new prompt
3 - Search prompts
4 - View tags
5 - Get prompt (copy to clipboard)
6 - Delete prompt
q - Quit
Navigate with number keys, enter text when prompted, and press Enter to continue between screens.
Examples
Create a prompt with tags
# Python
python vault_cli.py create --name "code-review" --tags "code,review,analysis"
# Go
./vault create --name "code-review" --tags "code,review,analysis"
Get a prompt (copies to clipboard)
# Python
python vault_cli.py get "code-review"
# Go
./vault get "code-review"
Search prompts
# Python
python vault_cli.py search "code analysis"
python vault_cli.py search --tag "python"
# Go
./vault search "code analysis"
./vault search --tag "python"
View version history
# Python
python vault_cli.py version "code-review"
python vault_cli.py version "code-review" --revert 2
# Go
./vault version "code-review"
./vault version "code-review" --revert 2
Export/Import backup
# Export
python vault_cli.py export --output backup.yaml
./vault export --output backup.yaml
# Import
python vault_cli.py import backup.yaml
./vault import backup.yaml
Architecture
prompt_vault/
├── python/ # Python implementation
│ ├── vault_cli.py # Main CLI entry (Typer)
│ ├── core/
│ │ ├── vault.py # CRUD operations (SQLite)
│ │ ├── search.py # Fuzzy search (thefuzz)
│ │ ├── versioning.py # Git versioning (GitPython)
│ │ └── config.py # Config handling (TOML/YAML)
│ ├── utils/
│ │ ├── clipboard.py # Cross-platform clipboard
│ │ └── output.py # Rich formatting
│ └── tests/
│ └── test_vault.py # Unit tests
│
├── go/ # Go implementation
│ ├── main.go # Main entry
│ ├── cmd/ # Cobra commands
│ │ ├── root.go
│ │ ├── create.go
│ │ ├── get.go
│ │ └── ...
│ └── internal/vault/ # Core logic
│ ├── vault.go # CRUD (SQLite)
│ ├── search.go # Fuzzy search
│ └── versioning.go # Version management
│
└── data/ # Shared data directory
├── prompts.db # SQLite database
└── versions/ # Version history
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
PROMPT_VAULT_DATA |
Data directory | ~/.prompt_vault |
PROMPT_VAULT_CONFIG |
Config file path | ~/.prompt_vault/config.toml |
Config File (TOML)
data_dir = "~/.prompt_vault"
default_tags = ["general"]
auto_copy = true
auto_version = true
search_limit = 10
list_limit = 50
Running Tests
Python
cd prompt_vault/python
pip install pytest
pytest tests/ -v
Go
cd prompt_vault/go
go test ./internal/vault/ -v
Performance Comparison
| Operation | Python | Go |
|---|---|---|
| Startup time | ~200ms | ~10ms |
| Create prompt | ~50ms | ~5ms |
| Search (1000 prompts) | ~100ms | ~10ms |
| Binary size | N/A | ~15MB |
License
MIT
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests for both Python and Go
- Submit a pull request
Metadata
Release files for prompt-vault-cli 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 | Provenance | Actions |
|---|---|---|---|---|
| prompt_vault_cli-0.1.0.tar.gz | 18.1 kB | Without provenance | Details for prompt_vault_cli-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| prompt_vault_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for prompt_vault_cli-0.1.0-py3-none-any.whl |
Total release size: 36.6 kB
Release files / prompt_vault_cli-0.1.0.tar.gz
| Download URL | prompt_vault_cli-0.1.0.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7dd5d6a62da4f5a38cac530b400b7fa9b9957992e9614c8133619efb961ac911
|
|
BLAKE2b-256 checksum How to use checksums |
07de6089d8d56d8952b78ed5c9ec6f173c1586d311077581ac1670e591fae6d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / prompt_vault_cli-0.1.0-py3-none-any.whl
| Download URL | prompt_vault_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f2af56cebc2df5cd2251cbb57305b9150f83596d09554bc59e44e16ae203626
|
|
BLAKE2b-256 checksum How to use checksums |
6612b3fad901a1deb59841157dacf70ab3cefc6c58d5b37d6b6f072a2ffb3510
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Security for prompt-vault-cli 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.