A newer version of the Gradio SDK is available:
6.3.0
title: ReplayProof Agent POV Verified Replay
emoji: 🌍
colorFrom: red
colorTo: yellow
sdk: gradio
sdk_version: 6.2.0
app_file: app.py
pinned: false
license: other
short_description: Play it. Prove it. Replay it.
thumbnail: >-
https://cdn-uploads.huggingface.co/production/uploads/685edcb04796127b024b4805/PnZZVpPI2Q2FyyiwWyd7M.png
ReplayProof__Agent_POV__Verified_Replay
Play it. Prove it. Replay it.
ReplayProof is a lightweight, game-like Agent POV simulation that records every step as a signed, hash-chained receipt.
You can export a run as a ZIP bundle (receipts + optional GIF), then verify the run’s integrity and replay it deterministically on another machine.
This Space is intentionally simple and fast: CPU-friendly, no model downloads, no GPU needed.
What this Space does
✅ Play
- Run a deterministic gridworld with an autonomous agent
- See both:
- World View (top-down)
- Agent POV (partial observability)
✅ Prove
- Every step is recorded as a receipt:
- Canonical JSON
- Hash chain linking each event to the previous
- Ed25519 signatures
✅ Replay
- Upload a receipt bundle ZIP
- The Space re-simulates the run and checks that state hashes match
- Optionally exports a replay GIF
Why this exists
Most “AI demos” are not reproducible. People share settings and results, but there’s no way to prove:
- what actually ran,
- whether it was altered,
- whether it can be reproduced.
ReplayProof turns trust into verification.
Files in this repo
app.py— Gradio UI (Play / Receipts / Verify / Replay)replayproof_sim.py— deterministic sim + POV + renderingreplayproof_receipts.py— receipts, signing, bundle export, verify, replayreplayproof_media.py— GIF export + optional watermarkrequirements.txt
How to use (in the Space)
1) New Session
Pick seed + settings → click New Session.
2) Run
Use:
- Step
- Run 50
- Run 250
3) Export
In Receipts tab:
- toggle Include GIF in bundle
- toggle Watermark final hash
- click Download Receipt Bundle (ZIP)
You’ll get a ZIP containing:
events.jsonlroot.json- optional
run_<session>.gif
4) Verify
In Verify tab:
- upload the ZIP
- click Verify Bundle
- you’ll get a JSON report with checks + any errors
5) Replay
In Replay tab:
- upload the ZIP
- click Replay From Bundle
- you’ll see the reproduced end-state and (optionally) a replay GIF
Receipt bundle format
events.jsonl
One JSON object per step (one per line), including:
spec:replayproof-event-v0session_idts(UTC ISO)stepactionseedcfg_sha256obs_sha256(hash of what the agent “sees”)state_sha256(hash of full sim state)prev_event_sha256(hash-chain pointer)event_sha256(hash of canonical event body)sig(Ed25519 signature overevent_sha256)pubkey_id
root.json
A manifest for the run:
spec:replayproof-root-v0- session metadata + config
- public key (base64)
- first/final event hashes
final_state_sha256- optional
media_sha256 root_sha256+root_sig
Determinism and verification notes
- The simulation is deterministic given:
- seed
- config
- the exact sim logic
- The strongest check is replay_state_hashes_ok, which re-simulates and compares
state_sha256at each step. - Media hashes (GIF/MP4) can be environment-sensitive (encoding differences), so media verification is optional and separate from state verification.
Security model (plain English)
ReplayProof proves:
- the run has not been tampered with (hash chain)
- the receipts were produced by the same signing key (Ed25519 signatures)
- the run can be reproduced to the same final state hash (replay verification)
It does NOT claim:
- the code itself is “trusted” (you can still inspect it)
- the agent is “honest” beyond what receipts prove
Roadmap (sensible upgrades)
- Player-controlled mode (WASD) where actions are enforced from receipts
- Share links / seed leaderboard (“challenge this run”)
- MP4 export
- Multi-agent mode + dispute system (“show receipts” gameplay)
- Visual diff on verification failure (where exactly it diverged)
Local run
pip install -r requirements.txt
python app.py
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference