Evidence integrity toolkit · v0.3.0

Reproducible file integrity with timestamped proofs.

A desktop application and CLI for creating verifiable evidence bundles. Extract metadata with pluggable processors, hash deterministically, and anchor proofs via OpenTimestamps.

SHA256 · Deterministic · OpenTimestamps · GUI + CLI
Time anchoring via OpenTimestamps (blockchain-backed)
Tested on Debian 12 and Ubuntu 24.04 · 90 MB .deb · Linux desktop
Veribundle preview

What's new in 0.3.0

Desktop GUI

A native PySide6 interface for building, verifying, and inspecting bundles — alongside the existing CLI workflow.

Extensible processors

Metadata extraction is now pluggable. Four seed processors ship in core (markdown, docx, image_exif, pptx) and user processors load from ~/Veribundle/processors/.

60% smaller package

The .deb shrank from 216 MB to 90 MB by moving to PySide6-Essentials and dropping QtWebEngine.

Manifest schema v2

Per-file metadata blocks under {processor, values}, with schema_version: 2 for forward compatibility.

User venv

PyPI-only dependencies install into ~/Veribundle/.venv/ and apply automatically at launch — no sudo, no system pollution.

Gentler defaults

Config paths resolve relative to the config file. User files live under ~/Veribundle/. Missing seed processors are re-seeded on every launch.

How it works

Create and verify reproducible evidence bundles using the GUI or the CLI.

01

Install

Install the Debian package on Debian 12 or Ubuntu 24.04. The post-install step prints a getting-started message.

sudo apt install ./veribundle_0.3.0_amd64.deb
02

Prepare configuration (.yaml)

Define input and output paths along with the bundle name. Relative paths resolve against the config file's own directory.

input_dir: ~/Veribundle/input
output_dir: ~/Veribundle/output
bundle_name: bundle
03

Build the bundle

Collect files, run processors to extract metadata, compute SHA256 hashes, generate a deterministic manifest, and anchor a timestamp.

veribundle --config config/example.yaml --build
04

Inspect output

A deterministic bundle is produced in the configured output directory. Metadata is grouped per file under {processor, values}.

05

Verify integrity

Recompute hashes and compare against the manifest to validate integrity.

veribundle --config config/example.yaml --verify
06

Interpret result

Verification produces a binary outcome:

VERIFICATION PASSED
or
VERIFICATION FAILED

Processors

Every file is handled by a processor: a small Python class that reads one file type and returns a dict of metadata. Four seed processors ship in core; more are available from the public veribundle-processors repository.

markdown (stdlib)

YAML frontmatter and ATX headings. Zero-dependency example of the processor contract.

docx (apt)

Core document metadata via python3-docx.

image_exif (apt)

EXIF and IPTC metadata via python3-pil.

pptx (venv)

Presentation metadata via python-pptx installed into the user venv. Demonstrates graceful handling of missing dependencies.

pdf_unlocked

Extracts metadata and Microsoft Purview sensitivity labels from password-protected PDFs. Password is passed via config options; the processor refuses to emit output that contains it.

Write your own

Drop a .py file into ~/Veribundle/processors/. If you need PyPI-only packages, install them into ~/Veribundle/.venv/.

Ingest
→
Process
→
Hash
→
Bundle
→
Seal
→
Verify

CLI workflow

veribundle
$ veribundle --config config/example.yaml --build
✔ applying user venv
✔ collecting files
✔ running processors
✔ hashing (SHA256)
✔ bundling manifest (schema v2)
✔ anchoring timestamp

Bundle created: ./dist/evidence.vbundle

$ veribundle --config config/example.yaml --verify
✔ recalculating hashes
✔ comparing manifest

VERIFICATION PASSED

Where Veribundle fits

Evidence integrity

Bundle files, hashes, and timestamps into a verifiable artifact for legal, investigative, and audit workflows.

Reproducible analysis

Package data and outputs so results can be independently verified and reproduced deterministically.

Build verification

Ensure artifacts match their source by bundling outputs with manifests for reproducible builds.

Secure file exchange

Share files with cryptographic integrity guarantees — any modification fails verification.

Audit & compliance

Maintain traceable integrity records across workflows with deterministic verification outcomes.

Archival integrity

Detect corruption and ensure long-term data integrity through reproducible verification checks.

Platform support

Debian 12

Fully supported. Verified against the full test suite and a manual end-to-end GUI run.

Ubuntu 24.04 LTS

Fully supported. Verified headless and via remote desktop.

Windows (WSL2)

Not officially supported. The Python core runs natively; the GUI requires WSLg configuration. Contributions welcome.

Built for reproducibility.

Veribundle is open-source. Your contribution will help support ongoing maintenance and future development.

<- Bump pyproject version to 0.3.0 ; add pillow to dev trigger build -->