ProofFrame turns AI-generated media into reviewable evidence. Each generation produces a Genblaze provenance manifest, a SHA-256 fingerprint, an append-only human decision record, and a verification bundle designed for durable storage in Backblaze B2.
Creative teams can generate media quickly, but they still struggle to answer:
ProofFrame makes those answers portable and independently verifiable.
py -V:Astral/CPython3.11.15 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[test]"
.\.venv\Scripts\python.exe -m uvicorn app.main:app --reload --port 8080
Open http://127.0.0.1:8080. Mock mode still executes a real Genblaze
pipeline with its offline provider and marks every run as mock in the UI.
Install both supported provider adapters:
.\.venv\Scripts\python.exe -m pip install -e ".[real,test]"
GMI Cloud configuration:
$env:PROOFFRAME_MODE = "real"
$env:PROOFFRAME_PROVIDER = "gmicloud"
$env:GMI_API_KEY = "..."
$env:B2_KEY_ID = "..."
$env:B2_APP_KEY = "..."
$env:B2_BUCKET = "..."
$env:B2_REGION = "us-east-005"
.\.venv\Scripts\python.exe -m uvicorn app.main:app --port 8080
Google Vertex AI fallback configuration:
gcloud auth application-default login
$env:PROOFFRAME_MODE = "real"
$env:PROOFFRAME_PROVIDER = "google-vertex"
$env:GOOGLE_CLOUD_PROJECT = "your-project-id"
$env:GOOGLE_CLOUD_LOCATION = "global"
$env:B2_KEY_ID = "..."
$env:B2_APP_KEY = "..."
$env:B2_BUCKET = "..."
$env:B2_REGION = "us-east-005"
.\start.bat
The Google fallback defaults to the GA Agent Platform model
gemini-3.1-flash-lite-image on the global endpoint. The adapter remains a
Genblaze SyncProvider, so generation provenance and the B2 sink stay inside
the same pipeline. Application Default Credentials stay outside the repository,
and no Google secret is written to ProofFrame data or trust bundles.
Generated staging files use the system temporary directory so Genblaze's
local-file allowlist can safely transfer them to B2.
In real mode, Genblaze orchestrates generation and its ObjectStorageSink
persists the generated asset and canonical manifest to Backblaze B2 using a
content-addressable key layout.
The bucket remains private. Reviewers receive a stable ProofFrame asset route;
the server streams the object from B2 with a bucket-scoped key, so neither B2
credentials nor expiring signed URLs reach the browser or trust bundle.
See docs/HOSTING.md for the production launcher and tunnel handoff.
For this machine, start_real.bat loads the ignored local B2 and GCP metadata
at runtime and starts the server in real mode without embedding credentials in
tracked files. Validate the local configuration without starting a server:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\start_real.ps1 -ValidateOnly
.\.venv\Scripts\python.exe -m pytest
The verifier reads only the JSON bundle and the media file. It does not need a running ProofFrame server or a storage account:
.\.venv\Scripts\python.exe scripts\verify_bundle.py bundle.json media.png
It returns exit code 0 only when the bundle, Genblaze manifest, review chain,
approval decision, and exact artifact bytes all verify.
Mock output is for local development only and is visibly labeled. A bundle is considered release-ready only when the asset hash verifies and a human has approved that exact hash. Credentials are never written into the bundle.
1 commits
Python
80.3%
PowerShell
8.4%
JavaScript
5.2%
HTML
4.9%
Batchfile
1.3%
ProofFrame turns AI-generated media into reviewable evidence. Each generation produces a Genblaze provenance manifest, a SHA-256 fingerprint, an append-only human decision record, and a verification bundle designed for durable storage in Backblaze B2.
Creative teams can generate media quickly, but they still struggle to answer:
ProofFrame makes those answers portable and independently verifiable.
py -V:Astral/CPython3.11.15 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[test]"
.\.venv\Scripts\python.exe -m uvicorn app.main:app --reload --port 8080
Open http://127.0.0.1:8080. Mock mode still executes a real Genblaze
pipeline with its offline provider and marks every run as mock in the UI.
Install both supported provider adapters:
.\.venv\Scripts\python.exe -m pip install -e ".[real,test]"
GMI Cloud configuration:
$env:PROOFFRAME_MODE = "real"
$env:PROOFFRAME_PROVIDER = "gmicloud"
$env:GMI_API_KEY = "..."
$env:B2_KEY_ID = "..."
$env:B2_APP_KEY = "..."
$env:B2_BUCKET = "..."
$env:B2_REGION = "us-east-005"
.\.venv\Scripts\python.exe -m uvicorn app.main:app --port 8080
Google Vertex AI fallback configuration:
gcloud auth application-default login
$env:PROOFFRAME_MODE = "real"
$env:PROOFFRAME_PROVIDER = "google-vertex"
$env:GOOGLE_CLOUD_PROJECT = "your-project-id"
$env:GOOGLE_CLOUD_LOCATION = "global"
$env:B2_KEY_ID = "..."
$env:B2_APP_KEY = "..."
$env:B2_BUCKET = "..."
$env:B2_REGION = "us-east-005"
.\start.bat
The Google fallback defaults to the GA Agent Platform model
gemini-3.1-flash-lite-image on the global endpoint. The adapter remains a
Genblaze SyncProvider, so generation provenance and the B2 sink stay inside
the same pipeline. Application Default Credentials stay outside the repository,
and no Google secret is written to ProofFrame data or trust bundles.
Generated staging files use the system temporary directory so Genblaze's
local-file allowlist can safely transfer them to B2.
In real mode, Genblaze orchestrates generation and its ObjectStorageSink
persists the generated asset and canonical manifest to Backblaze B2 using a
content-addressable key layout.
The bucket remains private. Reviewers receive a stable ProofFrame asset route;
the server streams the object from B2 with a bucket-scoped key, so neither B2
credentials nor expiring signed URLs reach the browser or trust bundle.
See docs/HOSTING.md for the production launcher and tunnel handoff.
For this machine, start_real.bat loads the ignored local B2 and GCP metadata
at runtime and starts the server in real mode without embedding credentials in
tracked files. Validate the local configuration without starting a server:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\start_real.ps1 -ValidateOnly
.\.venv\Scripts\python.exe -m pytest
The verifier reads only the JSON bundle and the media file. It does not need a running ProofFrame server or a storage account:
.\.venv\Scripts\python.exe scripts\verify_bundle.py bundle.json media.png
It returns exit code 0 only when the bundle, Genblaze manifest, review chain,
approval decision, and exact artifact bytes all verify.
Mock output is for local development only and is visibly labeled. A bundle is considered release-ready only when the asset hash verifies and a human has approved that exact hash. Credentials are never written into the bundle.
1 commits
Python
80.3%
PowerShell
8.4%
JavaScript
5.2%
HTML
4.9%
Batchfile
1.3%