<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: PiQrypt</title>
    <description>The latest articles on Forem by PiQrypt (@piqrypt).</description>
    <link>https://forem.com/piqrypt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3859079%2F8529742b-cc95-4f17-a266-afbc666d57dc.jpeg</url>
      <title>Forem: PiQrypt</title>
      <link>https://forem.com/piqrypt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/piqrypt"/>
    <language>en</language>
    <item>
      <title># Your AI Agents Are Talking — But Can You Prove What They Said?</title>
      <dc:creator>PiQrypt</dc:creator>
      <pubDate>Thu, 09 Apr 2026 12:41:56 +0000</pubDate>
      <link>https://forem.com/piqrypt/-your-ai-agents-are-talking-but-can-you-prove-what-they-said-5a1f</link>
      <guid>https://forem.com/piqrypt/-your-ai-agents-are-talking-but-can-you-prove-what-they-said-5a1f</guid>
      <description>&lt;h1&gt;
  
  
  Your AI Agents Are Talking — But Can You Prove What They Said?
&lt;/h1&gt;

&lt;p&gt;AI agents are no longer “helpers.”&lt;/p&gt;

&lt;p&gt;They move money, make decisions, and talk to each other.&lt;br&gt;&lt;br&gt;
If you have at least two agents, you’re already in a &lt;strong&gt;multi‑agent system&lt;/strong&gt; — whether you planned for it or not.&lt;/p&gt;

&lt;p&gt;PiQrypt is an &lt;strong&gt;open‑source trust layer&lt;/strong&gt; that ensures every interaction between your agents is &lt;strong&gt;cryptographically verifiable&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Even if your agents change, your LLMs evolve, or your infrastructure migrates — PiQrypt stays as the &lt;strong&gt;immutable proof layer&lt;/strong&gt; on top.&lt;/p&gt;


&lt;h2&gt;
  
  
  The gap nobody talks about
&lt;/h2&gt;

&lt;p&gt;Modern AI stacks are incredibly powerful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLMs&lt;/strong&gt;: OpenAI, Anthropic, Mistral, DeepSeek, local models.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent frameworks&lt;/strong&gt;: LangChain, CrewAI, AutoGen, custom agents.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability tools&lt;/strong&gt;: logs, traces, dashboards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They all share a blind spot:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“They can show you what happened — but they can’t prove it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Logs can be modified.&lt;br&gt;&lt;br&gt;
Traces aren’t cryptographic.&lt;br&gt;&lt;br&gt;
And when agents interact, there’s no &lt;strong&gt;shared, verifiable record&lt;/strong&gt; of that interaction.&lt;/p&gt;

&lt;p&gt;When something goes wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent made the decision?
&lt;/li&gt;
&lt;li&gt;In what order?
&lt;/li&gt;
&lt;li&gt;Based on which interaction?
&lt;/li&gt;
&lt;li&gt;Can you prove it to someone outside your system?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most systems today can’t.&lt;/p&gt;


&lt;h2&gt;
  
  
  Agents don’t just need to connect — they need to agree
&lt;/h2&gt;

&lt;p&gt;When two agents interact, there are actually two problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How do they communicate?&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How do they prove they communicated?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Today’s A2A‑style protocols (Agent2Agent, AI‑to‑agent handshakes, and custom flows) mainly solve the first.&lt;br&gt;&lt;br&gt;
PiQrypt solves the second — &lt;strong&gt;with cryptographic proof around agent‑to‑agent interactions&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Agents need a handshake — not just a connection.”&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Enter PiQrypt: co‑signed interactions with cryptographic memory
&lt;/h2&gt;

&lt;p&gt;PiQrypt is an &lt;strong&gt;open‑source trust layer&lt;/strong&gt; that sits between your agents and your memory / logs. It’s &lt;strong&gt;LLM‑agnostic, framework‑agnostic, and infrastructure‑agnostic&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works with any LLM (OpenAI, Anthropic, Mistral, DeepSeek, local).
&lt;/li&gt;
&lt;li&gt;Integrates with any framework (LangChain, CrewAI, AutoGen, or your own).
&lt;/li&gt;
&lt;li&gt;Independent of your storage, logs, MLflow, or cloud provider.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every interaction becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Co‑signed&lt;/strong&gt; by the participating agents,
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anchored&lt;/strong&gt; in a hash‑chained audit trail,
&lt;/li&gt;
&lt;li&gt;Part of a &lt;strong&gt;verifiable, multi‑agent session&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is powered by &lt;strong&gt;AISS&lt;/strong&gt; (Agent Identity and Signature Standard) and built on top of &lt;strong&gt;PCP&lt;/strong&gt; (Proof of Continuity Protocol) — an open protocol specification for agent‑to‑agent collaboration, with PiQrypt as the reference implementation.&lt;/p&gt;


&lt;h2&gt;
  
  
  How the A2A handshake works conceptually
&lt;/h2&gt;

&lt;p&gt;PiQrypt’s A2A handshake is a &lt;strong&gt;short, peer‑to‑peer protocol&lt;/strong&gt; used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discover&lt;/strong&gt; other agents (via registry or direct),
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authenticate&lt;/strong&gt; both agents,
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborate&lt;/strong&gt; with cryptographic proof,
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit&lt;/strong&gt; all interactions, stored in both agents’ audit trails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s how it looks at the protocol level:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Each agent generates an Ed25519 keypair.
&lt;/li&gt;
&lt;li&gt;Agents exchange public keys (via your agent bus, API, WebSocket, or A2A‑style transport).
&lt;/li&gt;
&lt;li&gt;Every agent pair performs a &lt;strong&gt;co‑signed handshake&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Both sign the fact that “Agent X and Agent Y have agreed to talk.”
&lt;/li&gt;
&lt;li&gt;The handshake is appended to each agent’s hash‑chained memory.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aiss.a2a&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;initiate_handshake&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;accept_handshake&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;verify_handshake&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aiss.crypto&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ed25519&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aiss.identity&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;derive_agent_id&lt;/span&gt;

&lt;span class="c1"&gt;# Agent A
&lt;/span&gt;&lt;span class="n"&gt;priv_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pub_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ed25519&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_keypair&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;agent_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;derive_agent_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pub_a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Agent B
&lt;/span&gt;&lt;span class="n"&gt;priv_b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pub_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ed25519&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_keypair&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;agent_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;derive_agent_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pub_b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Agent A initiates handshake
&lt;/span&gt;&lt;span class="n"&gt;handshake&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;initiate_handshake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;priv_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;agent_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;agent_b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data_sharing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;scope&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;market_analysis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;terms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;50/50 split&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;expires_in&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;  &lt;span class="c1"&gt;# 1h timeout, anti‑replay
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 2. Send to Agent B
# ...
&lt;/span&gt;
&lt;span class="c1"&gt;# 3. Agent B accepts
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;accept_handshake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;priv_b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;agent_b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;handshake&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;counter_payload&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agreed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;conditions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Data encrypted in transit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 4. Verify (both agents)
&lt;/span&gt;&lt;span class="n"&gt;is_valid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;verify_handshake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;agent_a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pub_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;agent_b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pub_b&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Handshake valid: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;is_valid&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Thanks to &lt;code&gt;piqrypt-session-multi-ai-agents&lt;/code&gt;, this is packaged as an &lt;strong&gt;AgentSession&lt;/strong&gt; that creates a shared session across all agents before a single action is taken.&lt;/p&gt;


&lt;h2&gt;
  
  
  From handshake to verifiable sessions
&lt;/h2&gt;

&lt;p&gt;Here’s a minimal example with three agents: planner (LangChain), executor (AutoGen), and reviewer (CrewAI). All frameworks, one session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;piqrypt.session&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AgentSession&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;piqrypt&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;

&lt;span class="c1"&gt;# Generate keypairs
&lt;/span&gt;&lt;span class="n"&gt;planner_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;planner_pub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_keypair&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;executor_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;executor_pub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_keypair&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;reviewer_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reviewer_pub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_keypair&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Define agents
&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AgentSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;planner&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;derive_agent_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;planner_pub&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;private_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;planner_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;public_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;planner_pub&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;executor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;derive_agent_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;executor_pub&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;private_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;executor_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;public_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;executor_pub&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reviewer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;aiss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;derive_agent_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reviewer_pub&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;private_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;reviewer_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;public_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;reviewer_pub&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Start: all pairwise A2A handshakes are recorded
&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# 2. Stamp events in the session
&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;planner&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task_delegation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rebalance_portfolio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;executor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;executor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_executed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;182.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quantity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reviewer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reviewer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;review_approved&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;approved&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;# 3. Later: export and verify offline
&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;export&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;trading‑session‑audit.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# That audit is:
# - signed by each agent,
# - co‑signed by every interaction,
# - readable and verifiable without your production stack.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From this moment on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every &lt;code&gt;session.stamp(agent_name, event_type, payload, peer=...)&lt;/code&gt; is &lt;strong&gt;signed by the acting agent&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;It’s &lt;strong&gt;anchored&lt;/strong&gt; in the shared, hash‑chained session.
&lt;/li&gt;
&lt;li&gt;It’s &lt;strong&gt;reflected&lt;/strong&gt; in every agent’s memory, with a shared &lt;code&gt;interaction_hash&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;“Same interaction. Two memories. One verifiable truth.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Trust scores: how much you can rely on a session
&lt;/h2&gt;

&lt;p&gt;PiQrypt doesn’t stop at proof. For every session, it computes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VRS (Vulnerability Risk Score)&lt;/strong&gt;: a risk metric based on agent behavior, anomalies, and policy flags.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust score&lt;/strong&gt; (0–1): how “safe” the agent’s history and current session are.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TrustGate decision&lt;/strong&gt;: &lt;code&gt;ALLOW&lt;/code&gt;, &lt;code&gt;REQUIRE_HUMAN&lt;/code&gt;, or &lt;code&gt;BLOCK&lt;/code&gt;, enforced at runtime with signed proof of every decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;piqrypt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;agent_event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;chain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;agent_event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pq1_planner_a3f8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;portfolio_rebalance&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;trust_score: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;trust_score&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# → 0.9987
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;decision: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="c1"&gt;# → ALLOW
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can &lt;strong&gt;block risky actions, require human approval, or allow automatically&lt;/strong&gt;, all based on verifiable data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stack‑agnostic by design
&lt;/h2&gt;

&lt;p&gt;PiQrypt is built to be &lt;strong&gt;truly agnostic&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLMs&lt;/strong&gt;: OpenAI, Anthropic, Mistral, DeepSeek, local models.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent frameworks&lt;/strong&gt;: LangChain, CrewAI, AutoGen, or any custom stack.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud / infra&lt;/strong&gt;: Independent of your storage, logs, MLflow, Application Insights, or LangSmith.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;“Your agents can change. Your infrastructure can change. Your trust layer should not.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PiQrypt’s A2A handshake and PCP‑backed audit trail work over &lt;strong&gt;any transport&lt;/strong&gt; (API, message bus, A2A style, or custom protocol). The registry can be centralized, distributed, or even DHT‑based in the future.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters in production
&lt;/h2&gt;

&lt;p&gt;If you’re building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi‑agent workflows&lt;/strong&gt; (planner → executor → reviewer → auditor).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents that communicate across boundaries&lt;/strong&gt; (company ↔ partner, SaaS ↔ local).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance‑sensitive applications&lt;/strong&gt; (finance, healthcare, legal, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then an A2A handshake with &lt;strong&gt;cryptographic trust scoring&lt;/strong&gt; is no longer optional.&lt;/p&gt;

&lt;p&gt;With PiQrypt, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cryptographic identity&lt;/strong&gt; for every agent.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Co‑signed, hash‑chained handshakes&lt;/strong&gt; for every session.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session‑anchored events&lt;/strong&gt; that are verifiable offline, across frameworks.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Numeric trust scores&lt;/strong&gt; integrated into your governance and policy layer.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install PiQrypt and the A2A‑ready session module:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   pip &lt;span class="nb"&gt;install &lt;/span&gt;piqrypt piqrypt-session-multi-ai-agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Follow the A2A‑focused guides:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docs/A2A_HANDSHAKE_GUIDE.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docs/A2A_SESSION_GUIDE.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;QUICK-START.md&lt;/code&gt; (A2A handshake section).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Run the 3‑agent demo (&lt;code&gt;planner&lt;/code&gt; → &lt;code&gt;executor&lt;/code&gt; → &lt;code&gt;reviewer&lt;/code&gt;) and experiment with &lt;code&gt;verify()&lt;/code&gt; + &lt;code&gt;trust_score&lt;/code&gt; on your own event chains.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  From observability to verifiability
&lt;/h2&gt;

&lt;p&gt;We’ve spent years building &lt;strong&gt;observability&lt;/strong&gt; for software systems.&lt;br&gt;&lt;br&gt;
Now, AI needs the same — but stronger:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Not just visibility.&lt;br&gt;&lt;br&gt;
Proof.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your agents already talk.&lt;br&gt;&lt;br&gt;
The real question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can you prove what happened between them?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Right now, most systems can’t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PiQrypt does.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PiQrypt is the A2A handshake your agents never knew they needed.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Nothing ever disappears, and nothing appears out of nowhere — only what’s cryptographically agreed upon.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can check out the full reference implementation on [GitHub/PiQrypt]&lt;br&gt;
&lt;a href="https://github.com/PiQrypt/piqrypt" rel="noopener noreferrer"&gt;https://github.com/PiQrypt/piqrypt&lt;/a&gt; and try your first A2A handshake today.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>mcp</category>
      <category>security</category>
      <category>llm</category>
    </item>
    <item>
      <title>Why AI agents need cryptographic memory — and how to add it in one line</title>
      <dc:creator>PiQrypt</dc:creator>
      <pubDate>Fri, 03 Apr 2026 09:29:21 +0000</pubDate>
      <link>https://forem.com/piqrypt/why-ai-agents-need-cryptographic-memory-and-how-to-add-it-in-one-line-4gae</link>
      <guid>https://forem.com/piqrypt/why-ai-agents-need-cryptographic-memory-and-how-to-add-it-in-one-line-4gae</guid>
      <description>&lt;p&gt;The problem nobody talks about&lt;br&gt;
AI agents can act. They can call APIs, write files, execute code, make decisions.&lt;br&gt;
But can they prove what they did?&lt;br&gt;
Logs can be edited. Timestamps can be faked. Events can be reordered silently.&lt;br&gt;
There's no equivalent of Git, TLS, or OAuth for agent behavior over time.&lt;br&gt;
What cryptographic memory looks like&lt;br&gt;
Every action becomes a signed, hash-chained event:&lt;/p&gt;

&lt;p&gt;Who acted — deterministic Ed25519 agent identity&lt;br&gt;
What was decided — signed payload&lt;br&gt;
When — tamper-evident sequence&lt;br&gt;
Nothing missing — fork detection catches silent deletions&lt;/p&gt;

&lt;p&gt;Verifiable offline. No server. No central authority.&lt;br&gt;
One line with LangChain&lt;br&gt;
pythonfrom piqrypt_langchain import PiQryptCallbackHandler&lt;/p&gt;

&lt;p&gt;handler = PiQryptCallbackHandler(agent_name="my_agent")&lt;br&gt;
llm = ChatOpenAI(model="gpt-4o", callbacks=[handler])&lt;/p&gt;

&lt;h1&gt;
  
  
  Every action is now signed &amp;amp; hash-chained
&lt;/h1&gt;

&lt;p&gt;handler.export_audit("audit.json")&lt;br&gt;
The standard behind it&lt;br&gt;
This is built on AISS — Agent Identity and Signature Standard — an open protocol.&lt;br&gt;
The RFC is public. The spec is implementable by anyone.&lt;br&gt;
TCP/IP secured communication. TLS secured it. OAuth made it delegable.&lt;br&gt;
AISS is that primitive for autonomous agent trust.&lt;br&gt;
Try it&lt;br&gt;
bashpip install piqrypt[langchain]&lt;br&gt;
📦 PyPI : piqrypt&lt;br&gt;
🔗 LangChain Hub : hub.langchain.com/piqrypt/piqrypt-audited-agent&lt;br&gt;
📖 RFC : github.com/PiQrypt/piqrypt/blob/main/docs/RFC_AISS_v2.0_narrative.md&lt;br&gt;
Happy to discuss the threat model, the crypto choices, or the RFC in the comments. 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>langchain</category>
    </item>
  </channel>
</rss>
