Update app.py
Browse files
app.py
CHANGED
|
@@ -1,59 +1,112 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
|
| 3 |
SUITE = [
|
| 4 |
-
(
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
(
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
]
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
def _build_markdown() -> str:
|
| 19 |
md = []
|
| 20 |
md.append("# RFTSystems — Agent Forensics Suite")
|
| 21 |
-
md.append("**
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
md.append("")
|
| 23 |
-
md.append("##
|
| 24 |
-
md.append("
|
| 25 |
-
"hash-chained timelines, tamper-evident receipts, deterministic replays, and first-divergence diffs.")
|
| 26 |
md.append("")
|
| 27 |
-
md.append("##
|
| 28 |
-
md.append("
|
| 29 |
-
|
|
|
|
| 30 |
md.append("")
|
| 31 |
-
md.append("##
|
| 32 |
-
md.append("1. **Record**
|
| 33 |
-
md.append("2. **Seal**
|
| 34 |
-
md.append("3. **
|
| 35 |
-
md.append("4. **
|
| 36 |
-
md.append("5. **
|
| 37 |
-
md.append("6. **Benchmark** verifiable performance signals (Coherent Compute Engine)")
|
| 38 |
md.append("")
|
| 39 |
md.append("## The labs")
|
| 40 |
for name, url, desc in SUITE:
|
| 41 |
md.append(f"- **[{name}]({url})** — {desc}")
|
| 42 |
md.append("")
|
| 43 |
-
md.append("##
|
| 44 |
-
md.append(
|
| 45 |
-
|
|
|
|
|
|
|
| 46 |
md.append("")
|
| 47 |
-
md.append("**Tags:** #Agents #LLMOps #MLOps #AISafety #Reproducibility #
|
| 48 |
return "\n".join(md)
|
| 49 |
|
|
|
|
| 50 |
with gr.Blocks(title="RFTSystems — Agent Forensics Suite") as demo:
|
| 51 |
gr.Markdown(_build_markdown())
|
| 52 |
-
with gr.
|
| 53 |
-
|
| 54 |
-
gr.Button(name, link=url)
|
| 55 |
-
with gr.Row():
|
| 56 |
-
for name, url, _ in SUITE[3:]:
|
| 57 |
-
gr.Button(name, link=url)
|
| 58 |
|
| 59 |
demo.launch()
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
|
| 3 |
SUITE = [
|
| 4 |
+
(
|
| 5 |
+
"ReplayProof Agent POV Verified Replay",
|
| 6 |
+
"https://huggingface.co/spaces/RFTSystems/ReplayProof__Agent_POV__Verified_Replay",
|
| 7 |
+
"Fast proof: generate a deterministic run bundle you can verify and replay anywhere.",
|
| 8 |
+
),
|
| 9 |
+
(
|
| 10 |
+
"Agent Flight Recorder",
|
| 11 |
+
"https://huggingface.co/spaces/RFTSystems/Agent_Flight_Recorder",
|
| 12 |
+
"Chain-of-custody logging: hash-chained events across prompts, tools, outputs, and memory reads/writes.",
|
| 13 |
+
),
|
| 14 |
+
(
|
| 15 |
+
"RFT Memory Receipt Engine",
|
| 16 |
+
"https://huggingface.co/spaces/RFTSystems/RFT_Memory_Receipt_Engine",
|
| 17 |
+
"Proof layer: generate/download tamper-evident receipts; upload to independently verify integrity.",
|
| 18 |
+
),
|
| 19 |
+
(
|
| 20 |
+
"TimelineDiff Differential Reproducibility",
|
| 21 |
+
"https://huggingface.co/spaces/RFTSystems/TimelineDiff__Differential_Reproducibility",
|
| 22 |
+
"First divergence: align two run bundles and pinpoint exactly where/why they split.",
|
| 23 |
+
),
|
| 24 |
+
(
|
| 25 |
+
"TrustStack Console",
|
| 26 |
+
"https://huggingface.co/spaces/RFTSystems/TrustStack_Console",
|
| 27 |
+
"Audit cockpit: inspect runs, compare state, and trace exactly what changed and why.",
|
| 28 |
+
),
|
| 29 |
+
(
|
| 30 |
+
"Coherent Compute Engine",
|
| 31 |
+
"https://huggingface.co/spaces/RFTSystems/Coherent_Compute_Engine",
|
| 32 |
+
"Verification-first benchmark: live throughput + stability/energy behaviour + downloadable receipt.",
|
| 33 |
+
),
|
| 34 |
]
|
| 35 |
|
| 36 |
+
WHY = (
|
| 37 |
+
"AI is being shipped into real systems faster than teams can reliably reproduce or explain agent behaviour. "
|
| 38 |
+
"When an agent fails, too many postmortems still rely on screenshots, partial logs, and opinions — not evidence.\n\n"
|
| 39 |
+
"The operational risk is not only that an agent does the wrong thing. The deeper risk is that **nobody can prove what happened**: "
|
| 40 |
+
"what the agent saw, what it called, what it wrote, and where the run diverged. When failures are unreproducible, accountability collapses.\n\n"
|
| 41 |
+
"RFTSystems exists to make agent behaviour **inspectable and independently verifiable**. This suite produces artifacts you can share and validate: "
|
| 42 |
+
"hash-chained timelines, tamper-evident receipts, deterministic replays, and first-divergence diffs. You don’t need to trust the author — you can verify the evidence.\n\n"
|
| 43 |
+
"I can’t promise “AI will never take over.” No one can. What I *can* promise is this: **with chain-of-custody logs and receipts, we can prove what happened and who is responsible.**"
|
| 44 |
+
)
|
| 45 |
+
|
| 46 |
+
LICENSE_NOTICE = """All materials contained in or associated with this repository — including but not limited to text, code, algorithms, equations, figures, datasets, and documentation — are original works authored by Liam Grinstead and form part of the Rendered Frame Theory (RFT) research framework.
|
| 47 |
+
|
| 48 |
+
These works are protected under the following laws and treaties:
|
| 49 |
+
|
| 50 |
+
• Copyright, Designs and Patents Act 1988 (UK) — ss.1–103 (copyright subsistence, ownership, and infringement) and ss.77–89 (moral rights).
|
| 51 |
+
• Trade Secrets (Enforcement etc.) Regulations 2018 (UK) — Regs.2–6 (protection of confidential know-how, algorithms, and unpublished research).
|
| 52 |
+
• Copyright and Rights in Databases Regulations 1997 (UK) — Regs.14–24 (protection of compiled datasets).
|
| 53 |
+
• Berne Convention for the Protection of Literary and Artistic Works (1886) — Arts.5(2) & 6bis (automatic international copyright and moral rights).
|
| 54 |
+
• TRIPS Agreement (1994) — Arts.9–14 (international enforcement of copyright and related rights).
|
| 55 |
+
|
| 56 |
+
All rights are reserved.
|
| 57 |
+
|
| 58 |
+
No part of this work may be copied, reproduced, distributed, performed, displayed, trained upon by AI systems, reverse-engineered, or used to create derivative works without the author’s explicit written consent.
|
| 59 |
+
|
| 60 |
+
Enforcement rights: Unauthorised use constitutes infringement under CDPA 1988 ss.16 & 96–103, giving rise to civil remedies (injunctions, damages, delivery-up, account of profits, and costs recovery).
|
| 61 |
+
Commercial infringement may amount to a criminal offence under CDPA s.107, punishable by fines and/or imprisonment.
|
| 62 |
+
|
| 63 |
+
Verification: Each record is timestamped through the Zenodo/DataCite registry and may reference the master DOI: https://doi.org/10.5281/zenodo.17460107 as the consolidated legal and authorship archive.
|
| 64 |
+
|
| 65 |
+
© 2025 Liam Grinstead — All Rights Reserved.
|
| 66 |
+
"""
|
| 67 |
+
|
| 68 |
+
|
| 69 |
def _build_markdown() -> str:
|
| 70 |
md = []
|
| 71 |
md.append("# RFTSystems — Agent Forensics Suite")
|
| 72 |
+
md.append("**Evidence-first instrumentation for AI agents.**")
|
| 73 |
+
md.append("Audit, prove, replay, and diff agent runs — turning “trust me” into verification.")
|
| 74 |
+
md.append("")
|
| 75 |
+
md.append("## Why I built this")
|
| 76 |
+
md.append(WHY)
|
| 77 |
md.append("")
|
| 78 |
+
md.append("## The workflow")
|
| 79 |
+
md.append("**learn → generate proof → record reality → seal it → diff it → audit it → benchmark it**")
|
|
|
|
| 80 |
md.append("")
|
| 81 |
+
md.append("### Quick start (60 seconds)")
|
| 82 |
+
md.append("1. Open **ReplayProof** and run a deterministic session.")
|
| 83 |
+
md.append("2. Export the run bundle (receipts + hashes).")
|
| 84 |
+
md.append("3. Upload the bundle to verify integrity, then share it — anyone can replay it.")
|
| 85 |
md.append("")
|
| 86 |
+
md.append("### Full pipeline (real systems)")
|
| 87 |
+
md.append("1. **Record reality** (Agent Flight Recorder).")
|
| 88 |
+
md.append("2. **Seal it** into receipts (RFT Memory Receipt Engine).")
|
| 89 |
+
md.append("3. **Diff** two runs and find first divergence (TimelineDiff).")
|
| 90 |
+
md.append("4. **Audit** state transitions and governance evidence (TrustStack).")
|
| 91 |
+
md.append("5. **Benchmark** verifiable performance signals (Coherent Compute Engine).")
|
|
|
|
| 92 |
md.append("")
|
| 93 |
md.append("## The labs")
|
| 94 |
for name, url, desc in SUITE:
|
| 95 |
md.append(f"- **[{name}]({url})** — {desc}")
|
| 96 |
md.append("")
|
| 97 |
+
md.append("## Design principle")
|
| 98 |
+
md.append(
|
| 99 |
+
"We don’t ‘imprison’ agents. We measure drift from declared intent and produce evidence. "
|
| 100 |
+
"Enforcement remains an operator decision; this suite is the instrumentation layer."
|
| 101 |
+
)
|
| 102 |
md.append("")
|
| 103 |
+
md.append("**Tags:** #Agents #LLMOps #MLOps #AISafety #Reproducibility #Forensics #Security #Governance")
|
| 104 |
return "\n".join(md)
|
| 105 |
|
| 106 |
+
|
| 107 |
with gr.Blocks(title="RFTSystems — Agent Forensics Suite") as demo:
|
| 108 |
gr.Markdown(_build_markdown())
|
| 109 |
+
with gr.Accordion("Licence / Rights Notice (click to expand)", open=False):
|
| 110 |
+
gr.Markdown(LICENSE_NOTICE)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
|
| 112 |
demo.launch()
|