<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>run-recording on tomrochette.com</title>
    <link>https://tomrochette.com/tags/run-recording/</link>
    <description>Recent content in run-recording on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Wed, 28 Oct 2026 04:31:06 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/run-recording/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Agent-Causality</title>
      <link>https://tomrochette.com/agents/session-analytics/agent-causality/</link>
      <pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/session-analytics/agent-causality/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>session-analytics</category><category>run-recording</category><category>replay</category><category>causal-analysis</category><category>open-source</category>
      <description>&lt;p&gt;Agent-Causality is an AGPL-3.0 Python SDK and CLI that records OpenCode and LangGraph agent runs as causal event graphs with declared parents, slices a failing event to the recorded events it structurally depends on, and replays registered decisions with changed inputs to test which ones flip the outcome.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Agent-Causality&amp;rsquo;s bet is that causality belongs in the capture, not the post-mortem: every event carries the parents its recorder declared, so slices, provenance, and counterfactual replay are queries over facts the run wrote down, and the project&amp;rsquo;s own benchmark reports where that stops working.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Two packages are required, and the README says so plainly: &lt;code&gt;agent-causality&lt;/code&gt; on PyPI (the SDK, CLI, an ingest receiver for OpenCode events, and the Visual DAG Explorer web UI) and &lt;code&gt;@psionic-labs/opencode-agent-causality&lt;/code&gt; on npm (an OpenCode plugin, telemetry capture only, forwarding the global event stream plus tool, permission, and message hooks).&#xA;Events persist to one SQLite file per run, with secrets redacted before persistence; capture is fail-open and never interrupts the agent.&#xA;LangGraph runs record through a callback handler that converts parent_run_id containment into explicit causal edges, dropping unknown parents rather than inventing them.&#xA;The Explorer renders the causal graph and a per-agent timeline and ships analysis tabs (chain, provenance, interaction, evidence, metrics), no API key needed; an optional explain extra adds LLM-grounded analysis through OpenRouter, kept in its own labeled block.&#xA;Made by Vasant Kumar Mogia (Psionics) under AGPL-3.0, with an in-repository research paper on declared dependency tracing and counterfactual sensitivity analysis.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Young and active but essentially unadopted: 6 stars, 2 forks, 3 open issues, created 2026-08-15, pushed 2026-10-28, releases through v0.2.1 on 2026-10-22, as of 2026-10-28.&#xA;The registries confirm the thinness: PyPI serves 0.2.1 (the README names 0.3.0) and the OpenCode plugin 0.1.6, with 154 PyPI downloads in the week to 2026-10-28 and 243 npm downloads in the month to 2026-10-26.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=Psionic-labs/Agent-Causality&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=Psionic-labs/Agent-Causality&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=Psionic-labs/Agent-Causality&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&lt;p&gt;The critical source is the project&amp;rsquo;s own benchmark, and it is unusually frank: live OpenCode runs captured at micro/macro-average 1.0, but a cause recall of 0.3 over explicit-evidence edges and a joint ancestry of 0.0, with the README conceding that genuine causal interaction is unsupported from live traces.&#xA;I found no independent discussion: the Hacker News story search returns zero hits, and the README&amp;rsquo;s evidence is its own benchmark results.&#xA;&lt;strong&gt;A solo research-grade tool with a paper, frankly negative self-benchmarks, and no community verdict yet, so read the benchmark results before believing the causal claims.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Declared, not inferred, causal edges: every parent link is recorded at capture time by the recorder that saw the dependency happen.&lt;/li&gt;&#xA;&lt;li&gt;The self-benchmark names its failures (cause recall 0.3, joint ancestry 0.0 on live traces), which is more falsifiable than the category&amp;rsquo;s usual claims.&lt;/li&gt;&#xA;&lt;li&gt;Both surfaces a debugging session needs are included: a queryable SQLite graph and a no-key Explorer with graph, timeline, and metrics views.&lt;/li&gt;&#xA;&lt;li&gt;Counterfactual replay re-runs registered merge decisions with changed inputs and reports which flips change the outcome.&lt;/li&gt;&#xA;&lt;li&gt;Capture never blocks the agent, and secrets are redacted before anything persists.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;6 stars, 2 forks, and zero independent coverage: every claim here is the project&amp;rsquo;s own evidence.&lt;/li&gt;&#xA;&lt;li&gt;The tool&amp;rsquo;s own live-trace results limit it to structural slices over explicit edges, not true causal interaction, which is the whole promise.&lt;/li&gt;&#xA;&lt;li&gt;AGPL-3.0 complicates embedding in commercial tooling, and the two-package install means either half alone is incomplete.&lt;/li&gt;&#xA;&lt;li&gt;Version drift: the README names agent-causality 0.3.0 while PyPI serves 0.2.1, an early-project smell to watch.&lt;/li&gt;&#xA;&lt;li&gt;One maintainer, pre-1.0, and a schema surface (SQLite event graphs) with no compatibility guarantees yet.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free and open source under AGPL-3.0; no paid tier is published, and everything runs locally.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/novafabric/&#34; &gt;NovaFabric&lt;/a&gt;: the replay-and-evidence sibling from the same source list; NovaFabric preserves and diffs whole runs for audit, Agent-Causality slices recorded runs for cause.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/agentsview/&#34; &gt;agentsview&lt;/a&gt;: the archive that answers history and cost questions; Agent-Causality answers only why this run failed, from a capture it had to be present for.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/clawtrace/&#34; &gt;ClawTrace&lt;/a&gt;: the hosted tracing platform with an AI analyst; ClawTrace sees live OpenClaw payloads in the cloud, Agent-Causality keeps declared causal graphs in a local SQLite file.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for engineers running branching LangGraph or OpenCode systems who want failure diagnosis grounded in capture-time facts, and who will read the benchmark before trusting the slice.&lt;/strong&gt;&#xA;Not for cost reporting, transcript search, live dashboards, or anyone who needs an independently verified dependency.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-28 - Created from the coordinator&amp;rsquo;s entrant handoff, admitted on the declared-causal-parent capture mechanism, the self-critical live-trace benchmark with its named negative results, and nine fetched sources.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/novafabric/&#34; &gt;NovaFabric&lt;/a&gt; - the run-recording and evidence sibling this note joined with&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/agentsview/&#34; &gt;agentsview&lt;/a&gt; - the retrospective archive for everything except why a run failed&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/clawtrace/&#34; &gt;ClawTrace&lt;/a&gt; - the hosted tracing alternative with full payloads&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/session-analytics-feature-matrix/&#34; &gt;Session Analytics Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/Psionic-labs/Agent-Causality&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/Psionic-labs/Agent-Causality&lt;/a&gt; - 6 stars, 2 forks, AGPL-3.0, created 2026-08-15, pushed 2026-10-28, as of 2026-10-28&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/Psionic-labs/Agent-Causality/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/Psionic-labs/Agent-Causality/main/README.md&lt;/a&gt; - the two-package contract, capture hooks, SQLite storage, Explorer views, benchmark summary, and the paper link&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/Psionic-labs/Agent-Causality/releases&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/Psionic-labs/Agent-Causality/releases&lt;/a&gt; - v0.2.1 (2026-10-22), v0.2.0 (2026-10-18), v0.1.4 (2026-10-14)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/pypi/agent-causality/json&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/pypi/agent-causality/json&lt;/a&gt; - PyPI package, version 0.2.1, Python 3.11 or newer&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://registry.npmjs.org/@psionic-labs/opencode-agent-causality&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=registry.npmjs.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://registry.npmjs.org/@psionic-labs/opencode-agent-causality&lt;/a&gt; - the OpenCode plugin, latest 0.1.6 (2026-10-22)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypistats.org/api/packages/agent-causality/recent&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypistats.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypistats.org/api/packages/agent-causality/recent&lt;/a&gt; - 154 downloads in the week to 2026-10-28, behind the adoption claim&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.npmjs.org/downloads/point/last-month/@psionic-labs/opencode-agent-causality&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.npmjs.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.npmjs.org/downloads/point/last-month/@psionic-labs/opencode-agent-causality&lt;/a&gt; - 243 downloads in the month to 2026-10-26&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://psionic-labs.github.io/Agent-Causality/opencode.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=psionic-labs.github.io&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://psionic-labs.github.io/Agent-Causality/opencode.html&lt;/a&gt; - the OpenCode integration guide&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/Psionic-labs/Agent-Causality/main/docs/benchmarks.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/Psionic-labs/Agent-Causality/main/docs/benchmarks.md&lt;/a&gt; - the full benchmark results behind the negative-results claim&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/search?query=Agent-Causality&amp;amp;tags=story&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/search?query=Agent-Causality&amp;tags=story&lt;/a&gt; - zero stories, the empty independent footprint this note states&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
    <item>
      <title>NovaFabric</title>
      <link>https://tomrochette.com/agents/session-analytics/novafabric/</link>
      <pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/session-analytics/novafabric/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>session-analytics</category><category>run-recording</category><category>replay</category><category>provenance</category><category>open-source</category>
      <description>&lt;p&gt;NovaFabric is an Apache-2.0 Python CLI that records any command&amp;rsquo;s AI-agent run as a portable, secret-scanned Run Capsule you can replay in five modes, structurally diff against another run, trace for lineage, and export as a signed evidence bundle an auditor can verify without NovaFabric installed.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Where the rest of this category indexes what coding agents already wrote to disk, NovaFabric wraps the run itself, so the evidence is a folder you own, sealed with your key, verifiable offline, and diffable run against run.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;nova capture &amp;lt;command&amp;gt;&lt;/code&gt; injects a loader that hooks the OpenAI, Anthropic, and MCP SDKs plus the httpx, requests, aiohttp, and urllib3 clients, recording each call with OpenTelemetry GenAI fields; non-Python clients (the README names Claude Code, Cursor, and Node or Go agents) ride the api-proxy and mcp-proxy, and an SDK decorator covers in-process capture.&#xA;Capsules are written on success and on failure, carry a hash-chained redaction proof from an 18-rule secret scan (the README is explicit that this is secret-scanned, not guaranteed secret-free), and stay plain directories on your filesystem.&#xA;Replay has five named modes: forensic (read-only), mocked (recorded replies served back for CI re-execution), semantic, exact, and experimental intervention; the README does not claim exact replay of remote LLM calls.&#xA;&lt;code&gt;nova diff&lt;/code&gt; aligns two runs call by call and fails a build on behavioral change with &lt;code&gt;--assert-no-regressions&lt;/code&gt;; lineage queries export OpenLineage and W3C PROV; sealing is opt-in DSSE with a Merkle log and RFC 3161 timestamping; the exported Evidence Bundle verifies with sha256sum and an Ed25519 verifier and no NovaFabric runtime.&#xA;Extras add a local dashboard, aggregation queries, an experimental multi-user server with OIDC and RBAC, compliance exports, and Sigstore; the toolkit runs from a laptop to Docker, Kubernetes, and SLURM, online or air-gapped.&#xA;Made by Mohsen Seyedkazemi Ardebili, an independent consultant, under Apache-2.0, with an arXiv paper (2609.12582) on tamper-evident, replayable evidence for agent runs.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Beta and shipping at a clip its adoption has not caught up with: 7 stars, 1 fork, 6 open issues, created 2026-06-25, pushed 2026-10-26, releases through v0.108.0 on 2026-10-25, as of 2026-10-28; PyPI serves 0.108.0 with 734 downloads in the trailing month to 2026-10-28.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=MSKazemi/novafabric&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=MSKazemi/novafabric&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=MSKazemi/novafabric&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&lt;p&gt;The status section labels server mode, the dashboard, and the cluster collector experimental, and the capsule and evidence-bundle formats stay unfrozen until the v1.0 schema freeze.&#xA;The project&amp;rsquo;s own comparison table names where it loses (no hosted dashboard, no turnkey live analytics), and an arXiv paper grounds the tamper-evidence design.&#xA;I found no Hacker News story and no third-party review.&#xA;&lt;strong&gt;A solo project whose documentation discipline outruns its adoption by three orders of magnitude, whose product is an evidence format that is not yet frozen.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Capture without code changes reaches non-Python agents through the proxies, which most SDK-only tracers cannot.&lt;/li&gt;&#xA;&lt;li&gt;A crash is captured evidence, not lost state: capsules are written on failure too.&lt;/li&gt;&#xA;&lt;li&gt;The diff gate turns replay infrastructure into a CI check on agent behavior change.&lt;/li&gt;&#xA;&lt;li&gt;Evidence Bundles verify with standard tools and no NovaFabric install, which is what makes them evidence.&lt;/li&gt;&#xA;&lt;li&gt;The standards stack is named and checkable (OTel GenAI, OpenLineage, in-toto DSSE, RFC 3161), with a conformance page listing how to check each claim.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;7 stars, 1 fork, and no independent coverage: the verification story is the project&amp;rsquo;s own conformance claims.&lt;/li&gt;&#xA;&lt;li&gt;Capsule and bundle formats are additive but not frozen until v1.0, so archived capsules may need migration.&lt;/li&gt;&#xA;&lt;li&gt;The secret scan matches known key formats only, so a capsule is scanned, not clean, by the README&amp;rsquo;s own wording.&lt;/li&gt;&#xA;&lt;li&gt;Server mode, dashboard, and cluster collection are experimental; the single-player path is the usable one.&lt;/li&gt;&#xA;&lt;li&gt;One maintainer with a consultant&amp;rsquo;s day job, at v0.108 in five months, is a pace that can stop as fast as it started.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free and open source under Apache-2.0; no paid tier, no hosted service, and the core works fully offline.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/agent-causality/&#34; &gt;Agent-Causality&lt;/a&gt;: the causal sibling; Agent-Causality slices recorded runs for cause, NovaFabric preserves and diffs whole runs for proof.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/claude-replay/&#34; &gt;claude-replay&lt;/a&gt;: the other replay in this category; claude-replay renders a session for humans to watch, NovaFabric replays calls for machines to verify.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/agentsview/&#34; &gt;agentsview&lt;/a&gt;: the archive that reads the session files tools already wrote; NovaFabric needs to be in the run&amp;rsquo;s path (loader or proxy) but captures what those files never hold.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for engineers who must reproduce or prove what a run did, weeks later and offline, and for gating agent behavior change in CI.&lt;/strong&gt;&#xA;Not for live cost dashboards, transcript search, or anyone who needs a frozen evidence format today.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-28 - Created from the coordinator&amp;rsquo;s entrant handoff, admitted on the Run Capsule mechanism, the five replay modes with the diff CI gate, and eight fetched sources.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/agent-causality/&#34; &gt;Agent-Causality&lt;/a&gt; - the causal-slicing companion admitted from the same source list&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/claude-replay/&#34; &gt;claude-replay&lt;/a&gt; - the human-facing replay artifact this tool&amp;rsquo;s machine-verifiable capsules contrast with&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/agentsview/&#34; &gt;agentsview&lt;/a&gt; - the passive archive for sessions you did not wrap&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/session-analytics/session-analytics-feature-matrix/&#34; &gt;Session Analytics Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/MSKazemi/novafabric&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/MSKazemi/novafabric&lt;/a&gt; - 7 stars, 1 fork, Apache-2.0, created 2026-06-25, pushed 2026-10-26, as of 2026-10-28&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/MSKazemi/novafabric/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/MSKazemi/novafabric/main/README.md&lt;/a&gt; - the capsule layout, capture paths, five replay modes, diff gate, sealing, comparison table, and status labels&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/MSKazemi/novafabric/releases&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/MSKazemi/novafabric/releases&lt;/a&gt; - v0.108.0 (2026-10-25), v0.107.0 (2026-10-23), v0.106.1 (2026-10-23)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/pypi/novafabric/json&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/pypi/novafabric/json&lt;/a&gt; - PyPI package, version 0.108.0, Python 3.12 or newer&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypistats.org/api/packages/novafabric/recent&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypistats.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypistats.org/api/packages/novafabric/recent&lt;/a&gt; - 734 downloads in the trailing month to 2026-10-28, behind the adoption claim&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://novafabric.ai/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=novafabric.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://novafabric.ai/docs/&lt;/a&gt; - the documentation hub this run verified live&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arxiv.org/abs/2609.12582&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=arxiv.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://arxiv.org/abs/2609.12582&lt;/a&gt; - the paper on tamper-evident, replayable evidence for agent runs&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/search?query=novafabric&amp;amp;tags=story&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/search?query=novafabric&amp;tags=story&lt;/a&gt; - zero stories, the empty independent footprint this note states&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
