Provara 60-Second Quickstart
Goal: From zero to verified vault in under 60 seconds.
Prerequisites:
- Python 3.10+
pip install provara-protocol
The Fast Path
# 1. Install (10 seconds)
pip install provara-protocol
# 2. Create vault (5 seconds)
provara init my_vault --actor "alice"
# 3. Append first event (10 seconds)
provara append my_vault \
--type OBSERVATION \
--data '{"subject": "hello", "predicate": "world", "value": "first event"}' \
--keyfile my_vault/identity/private_keys.json
# 4. Verify (5 seconds)
provara verify my_vault
# 5. See state (5 seconds)
provara replay my_vault
Done. You now have a tamper-evident vault with:
- Ed25519-signed events
- SHA-256 hash chain
- RFC 8785 canonical JSON
- Verifiable integrity
Expected Output
Step 2: Init
Initializing Provara Vault at: /path/to/my_vault
[bootstrap] Generating Ed25519 root keypair...
[bootstrap] Creating directory structure...
[bootstrap] Writing genesis.json...
[bootstrap] Writing keys.json...
[bootstrap] Bootstrap complete. UID=<unique_id>
[bootstrap] Root key: bp1_abc123...
SUCCESS: Vault created and verified.
Step 3: Append
[append] Event appended successfully
[append] Event ID: evt_abc123...
[append] Actor: alice
[append] Type: OBSERVATION
Step 4: Verify
[verify] Checking causal chains...
[verify] Checking signatures...
[verify] Checking Merkle root...
[verify] Vault integrity: VALID
[verify] Events verified: 2
Step 5: Replay
{
"canonical": {},
"local": {
"hello:world": {
"value": "first event",
"confidence": 1.0,
"actor": "alice"
}
},
"contested": {},
"archived": {},
"metadata": {
"state_hash": "abc123...",
"event_count": 2
}
}
What You Built
my_vault/
├── identity/
│ ├── keys.json # Public key registry
│ ├── genesis.json # Genesis event
│ └── private_keys.json # Your private keys (guard this!)
├── events/
│ └── events.ndjson # Append-only event log
├── state/
│ └── state.json # Current derived state
└── manifest.json # Merkle root + signatures
Next Steps
Add More Events
provara append my_vault \
--type OBSERVATION \
--data '{"subject": "temperature", "predicate": "reading", "value": 22.5}' \
--keyfile my_vault/identity/private_keys.json
Create Checkpoint
provara checkpoint my_vault \
--keyfile my_vault/identity/private_keys.json
Make Backup
provara backup my_vault --to ./backups
Anchor to Timestamp Authority
provara timestamp my_vault \
--keyfile my_vault/identity/private_keys.json \
--tsa https://freetsa.org/tsr
Troubleshooting
"Command not found: provara"
# Ensure pip installed to PATH
pip show provara-protocol
"Private keys file not found"
# Keys are saved in vault/identity/private_keys.json
# Use that path for --keyfile
"Invalid signature"
# Ensure you're using the correct keyfile
# Keys are actor-specific
Learn More
- Full Documentation: https://provara.dev/docs
- Cookbook:
docs/cookbook/— Real-world recipes - Protocol Spec:
PROTOCOL_PROFILE.txt— Cryptographic details - GitHub: https://github.com/provara-protocol/provara
That's it. You've created your first tamper-evident vault. Everything you append is now cryptographically anchored and verifiable for the next 50 years.
"Truth is not merged. Evidence is merged. Truth is recomputed."