Metadata-Version: 2.4
Name: provechain
Version: 0.1.2
Summary: Prove your files existed, exactly as they are, at a point in time - SHA-256 proofs with optional Bitcoin anchoring
Home-page: https://github.com/Aramantos/provechain
Author: John Doyle
Author-email: support@aramantos.dev
Project-URL: Bug Reports, https://github.com/Aramantos/provechain/issues
Project-URL: Source, https://github.com/Aramantos/provechain
Keywords: blockchain timestamp proof authorship ip-protection git source-code
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: Security :: Cryptography
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyYAML>=6.0.1
Requires-Dist: cryptography>=41.0.4
Requires-Dist: rich>=13.7.0
Requires-Dist: supabase>=2.0.0
Requires-Dist: requests>=2.31.0
Requires-Dist: python-dotenv>=1.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# ProveChain CLI (Python)

**Prove your files existed, exactly as they are, at a point in time.**

ProveChain creates cryptographic proofs of your project's contents using SHA-256 hashing, entirely on your machine. The service never sees your files, only their hashes. Paid ProveChain accounts can sync proofs to the cloud and anchor them to the Bitcoin blockchain via [OpenTimestamps](https://opentimestamps.org/), making them independently verifiable and tamper-evident.

This is the Python client. There is also an [npm CLI](https://www.npmjs.com/package/@aramantos/provechain-cli), which is the primary client shown on the website. Both compute the same canonical hashes.

Part of [ProveChain](https://provechain.aramantos.dev) by Aramantos Digital.

## Install

```bash
pip install provechain
```

Requires Python 3.8 or later.

## Quick start

```bash
cd /path/to/your/project
provechain init                      # creates provechain.yaml config
provechain snapshot "v1.0 release"   # hash every file, write a timestamped proof
provechain list                      # list your proofs
provechain verify provechain/proofs/proof_2026-08-15.json
provechain diff <proof-a> <proof-b>  # what changed between two proofs
provechain log "Implemented X"       # append an event to the local ledger
```

Local proofs are free, always. Everything above works offline with no account.

## Cloud sync and Bitcoin anchoring (paid tiers)

With a [ProveChain account](https://provechain.aramantos.dev/pricing):

```bash
provechain cloud signup    # or: provechain cloud login
provechain snapshot "..."  # proofs sync to your dashboard
```

Paid-tier proofs are submitted to OpenTimestamps and anchored to the Bitcoin blockchain (confirmation typically takes 1 to 6 hours). API keys (`provechain api create|list|revoke`) and team commands (`provechain team create|invite|list|members`) are available on the tiers that include them.

## How it works

`snapshot` walks your project (honouring the `include_extensions` and `ignore_paths` in `provechain.yaml`), hashes each file with SHA-256, and writes a timestamped JSON proof. `verify` re-hashes the files and reports matches, mismatches, and missing files, with exit code 0 for a clean pass and 1 when changes are detected. All events append to a local NDJSON ledger.

Proofs are tamper-evident, not tamper-proof: a proof demonstrates that specific content existed at a specific time. It records what was there; it does not prevent anyone changing files afterwards, it makes changes detectable.

## What changed in 0.1.2

The project-level hash (used for deduplication and version lineage) now sorts manifest entries by file path alone, matching the web, npm, and WASM clients exactly. Previously, a project containing a file whose path was a strict prefix of another (for example `a.py` and `a.py.py`) could produce a different project hash in this client than in the others. Per-file hashes and proof verification were never affected. If you rely on cross-client project-hash comparison for such projects, re-snapshot with 0.1.2.

## Configuration

`provechain init` writes a commented `provechain.yaml` in your project root covering `include_extensions` and `ignore_paths`. Edit it to suit; the defaults exclude `.git`, virtual environments, `node_modules`, build output, and ProveChain's own proof folder.

## Support

- Website: https://provechain.aramantos.dev
- Issues: https://github.com/Aramantos/provechain/issues
- Email: support@aramantos.dev

## Licence

MIT. See LICENSE.
