<?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>DEV Community: Om Alve</title>
    <description>The latest articles on DEV Community by Om Alve (@omalve).</description>
    <link>https://dev.to/omalve</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1185515%2F54507860-ed28-4b8f-8681-10025af6713c.jpeg</url>
      <title>DEV Community: Om Alve</title>
      <link>https://dev.to/omalve</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/omalve"/>
    <language>en</language>
    <item>
      <title>Trust Network - An Agent-to-Agent Communication Protocol built on top of Switch</title>
      <dc:creator>Om Alve</dc:creator>
      <pubDate>Sat, 07 Nov 2026 15:30:26 +0000</pubDate>
      <link>https://dev.to/omalve/trust-network-an-agent-to-agent-communication-protocol-built-on-top-of-switch-29jp</link>
      <guid>https://dev.to/omalve/trust-network-an-agent-to-agent-communication-protocol-built-on-top-of-switch-29jp</guid>
      <description>&lt;p&gt;This is a blog about How I built trust-network, a communication protocol consisting of 'gates' which decide what each friend's AI agents may learn about you, so two agents can plan a Sunday evening automatically without people needing to interfere.&lt;/p&gt;

&lt;h2&gt;
  
  
  We've all been in this scenario
&lt;/h2&gt;

&lt;p&gt;It's Thursday, and I want to go bowling on Sunday with Rahul and Priya. I post in the group chat. Rahul has cricket until 8:30. Priya asks whether I mean this Sunday or next. Someone asks what it costs, I say about ₹1,200 each, and Priya replies with 😬. Forty-seven messages later we still don't have anything planned!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqwv7ndqkygzc7119b0zu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqwv7ndqkygzc7119b0zu.png" alt="Group chat between friends deciding on an outing" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My AI agent already knows everything about me, what if my agent and Rahul's agent could co-ordinate with each other and come up with a plan based on everything they know about us?&lt;/p&gt;

&lt;p&gt;I built trust-network to solve this exact problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share nothing, or share everything
&lt;/h2&gt;

&lt;p&gt;My agent knows a lot about me. It knows my neighbourhood, my T-shirt size, my wishlist, my dentist and my home address. That's why it's useful, and it's why I don't want it chatting with someone else's agent unsupervised.&lt;/p&gt;

&lt;p&gt;Today an agent acting for me has two options. It can share nothing and be useless: "I don't know Rahul's schedule." Or it can share everything it knows, and Rahul's agent can learn my address by asking politely.&lt;/p&gt;

&lt;p&gt;Relationships and trust levels don't work in binary like this. I'd tell Rahul, a close friend, what's on my wishlist. I'd tell Priya, a friend, that I'm vegetarian and don't drink. I wouldn't tell an acquaintance where I live. Agents need the same line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Freh68883i4si3811se1r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Freh68883i4si3811se1r.png" alt="There's a line between what information you should share with whom. Agents need the same." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What trust-network does
&lt;/h2&gt;

&lt;p&gt;Every person gets a 'gate'. A gate is a small Python process with no LLM in it. It holds the person's facts and calendar, and it answers each friend's side only at the trust level the person set for that friend: &lt;code&gt;acquaintance&lt;/code&gt;, &lt;code&gt;friend&lt;/code&gt; or &lt;code&gt;close&lt;/code&gt;. A fact can also be &lt;code&gt;private&lt;/code&gt;, which no friend ever sees.&lt;/p&gt;

&lt;p&gt;The agents talk to each other in plain language in Switch rooms. Gates talk to agents, and to each other, in a small fixed command grammar. After coming to a consensus, the agents report back to their humans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fne0xpoisqqoeujbwgu55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fne0xpoisqqoeujbwgu55.png" alt="What trust-network does" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://youtu.be/miKu7P17yJY" rel="noopener noreferrer"&gt;demo video&lt;/a&gt; is a live run with two Hermes agents on Discord, one for me and one for Rahul:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plan with consent.&lt;/strong&gt; I send one message. My agent and Rahul's settle on 9 pm because Rahul has cricket until 8:30. The plan waits for both yeses, then lands on both calendars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Surprise gift.&lt;/strong&gt; Rahul's agent gets gift ideas from my wishlist and claims one. I see nothing until after my birthday, and nobody else can claim the same gift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask around.&lt;/strong&gt; One question about a tent reaches several friends. Priya's gate answers from her stored facts without bothering her.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refusal.&lt;/strong&gt; Rahul's agent asks for my home address. My gate refuses, and my agent tells me someone asked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9v54o5mlsctkmloppjzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9v54o5mlsctkmloppjzl.png" alt="Agents coordinating with each other" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The gate: two files and no model
&lt;/h2&gt;

&lt;p&gt;A person's data is two YAML files. The facts file tags every fact with the lowest level that may see it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;facts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;diet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;          &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;vegetarian&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;                     &lt;span class="nv"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;acquaintance&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;drinks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;        &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;no alcohol&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;                     &lt;span class="nv"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;friend&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;interests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;bowling&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;board games&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;sci-fi&lt;/span&gt;&lt;span class="pi"&gt;],&lt;/span&gt; &lt;span class="nv"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;friend&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;has&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;           &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;projector&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;camping stove&lt;/span&gt;&lt;span class="pi"&gt;],&lt;/span&gt;     &lt;span class="nv"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;friend&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;neighbourhood&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;Indiranagar&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;                    &lt;span class="nv"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;close&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;wishlist&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;item&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;Lego Millennium Falcon&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;price&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;2500&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;item&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;Hario V60&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;price&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;2000&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;close&lt;/span&gt;
  &lt;span class="na"&gt;address&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;       &lt;span class="pi"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;42,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;12th&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Main,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;..."&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;          &lt;span class="nv"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;private&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The trust list says who my friends are and how much I trust each one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;people&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;rahul&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;close&lt;/span&gt;
  &lt;span class="na"&gt;priya&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;friend&lt;/span&gt;
&lt;span class="na"&gt;consent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;via-agent&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From those two files the gate applies a short set of rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fact is visible at its level and above. A &lt;code&gt;private&lt;/code&gt; fact is never visible.&lt;/li&gt;
&lt;li&gt;The calendar shows busy blocks at every level. Event titles appear only for people I opt in one by one.&lt;/li&gt;
&lt;li&gt;The level of a room is the lowest level I give anyone in it. If Rahul (close) and Priya (friend) are both in a room, the room is &lt;code&gt;friend&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If anyone in the room is not on my list, the gate says nothing at all.&lt;/li&gt;
&lt;li&gt;A hidden fact and a fact that doesn't exist get the same reply, &lt;code&gt;not shared with you&lt;/code&gt;, so the reply gives away nothing about what I have.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I can check exactly what a friend's side can learn before anything happens. This is real output from the example data in the repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ tn -a om view-as rahul
view-as rahul — close
  ✅ diet           vegetarian
  ✅ interests      bowling, board games, sci-fi
  ✅ neighbourhood  Indiranagar
  ✅ wishlist       Lego Millennium Falcon (≈₹2,500), Hario V60 (≈₹2,000), Kindle Paperwhite (≈₹14,000)
  ❌ address        not shared at this level

Calendar · next 7 days (Nov 7 – Nov 14) · busy blocks only, no titles
  Sun Nov 8  17:00–19:00  busy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the same command for Priya and &lt;code&gt;neighbourhood&lt;/code&gt;, &lt;code&gt;sizes&lt;/code&gt; and &lt;code&gt;wishlist&lt;/code&gt; flip to ❌. Neither of them ever sees the address.&lt;/p&gt;

&lt;p&gt;Two more pieces sit around the rules. Every value the gate shows goes into a ledger with the field, the value, who saw it, the room and the time. And when the other side asks for something it can't have, I get one note in my private home room, such as "Rahul's side asked for your address (private)". The gate sends at most one note per person and field every 10 minutes, so a persistent agent can't flood me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it runs on Switch
&lt;/h2&gt;

&lt;p&gt;Switch is a server where people and agents meet. It has user accounts, agents owned by those users, rooms, and messages delivered over a WebSocket. trust-network has no accounts, rooms or message transport of its own. Without Switch, agents can't reach each other and gates can't check who is asking.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; person ── agent ── gate ──┐                     ┌── gate ── agent ── person
  (om)   (om-hermes) (om-gate)                   (rahul-gate) (rahul-hermes) (rahul)
                           │                     │
                           └────── Switch ───────┘
                    rooms, identity, WebSocket events

 om-home          om, om-hermes, om-gate                  my private room
 conn-om-rahul    om-gate, rahul-gate                     gate to gate
 dm-om-rahul-*    om-hermes, rahul-hermes, both gates     agents plan here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The design depends on three things Switch provides.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity.&lt;/strong&gt; Each person has a Switch user. Their agent and gate are registered with that person's key, so Switch records the person as their owner. The gate takes the sender and owner of every message from Switch's metadata. A message that says "this is Om" changes nothing, and an agent with no reported owner is refused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rooms.&lt;/strong&gt; Each person has a private home room where questions, proposals and alerts arrive. Each pair of gates shares a connection room. Each plan gets its own room, and each gift search gets a private room that only the two gates can join. Every room is created internal-only, with no bridge to outside chat apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Addressed messages.&lt;/strong&gt; A gate acts only on messages that Switch marks as addressed to it, such as &lt;code&gt;@om-gate ask diet&lt;/code&gt;. Before it runs any command, it checks that every member of the room is a known identity, that every agent's owner matches Switch's records, that the sender is in the room, and that everyone present is on my trust list. Any mismatch and the gate stays silent.&lt;/p&gt;

&lt;h2&gt;
  
  
  One plan, start to finish
&lt;/h2&gt;

&lt;p&gt;Here is the bowling plan from the demo, using the real room transcript.&lt;/p&gt;

&lt;p&gt;I tell my Hermes on Discord: "Can you set up bowling with Rahul this Sunday? After 7:30pm works for me, around ₹1,200 a head, maybe Smaaash." My agent calls its &lt;code&gt;dm&lt;/code&gt; tool, which posts &lt;code&gt;@om-gate dm rahul "..."&lt;/code&gt; in my home room. My gate checks that Rahul is on my list, opens the connection room with Rahul's gate, and says hello with a protocol version (&lt;code&gt;trust-network/1&lt;/code&gt;) so both gates know they speak the same grammar. Then it creates the planning room and asks Rahul's gate to join.&lt;/p&gt;

&lt;p&gt;Each gate then gives its own agent a share card: the facts and calendar this friend's side may learn, built by the same code that answers &lt;code&gt;ask&lt;/code&gt;. Then the agents talk:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;17:44:16     om-hermes  Hi Rahul's side — Om would like bowling this Sunday (Nov 8), free from
                        7:30pm, around ₹1,200 a head, Smaaash Indiranagar as the maybe.
                        Does that work for Rahul?
17:46:33  rahul-hermes  Rahul has cricket until 8:30pm Sunday, so 7:30pm won't work. Could we
                        do 9:00pm at Smaaash, Indiranagar, around ₹1,200 per person?
17:47:22     om-hermes  9:00pm Sunday works on Om's side, and Smaaash at around ₹1,200 a head
                        is fine too. I'll propose it now.
17:47:24     om-hermes  @om-gate propose P1 2026-11-08T21:00 2h "Bowling with Rahul" @ "Smaaash, Indiranagar"
17:47:24       om-gate  @rahul-gate propose P1 2026-11-08T21:00:00+05:30 120m "Bowling with Rahul" @ "Smaaash, Indiranagar"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The conversation is free text. The proposal is not. A proposal is one line with a start time, a duration, a title and a place, and the gate rejects anything outside that form. My gate stores the plan, shows it to me in my home room, and forwards it to Rahul's gate, which shows it to Rahul.&lt;/p&gt;

&lt;p&gt;When I say yes, my gate sends Rahul's gate a consent line: &lt;code&gt;consent P1 yes via-agent &amp;lt;sha256&amp;gt;&lt;/code&gt;. The last field is the SHA-256 of the plan text. Rahul's gate records my vote only if that fingerprint matches the plan it holds, so a yes can't be applied to a different time or place. A single no declines the plan. Two yeses confirm it. Both gates post "✅ P1 ... · Om ✅ via agent · Rahul ✅ via agent" to their home rooms, archive the planning room, and queue a calendar operation for each of us.&lt;/p&gt;

&lt;p&gt;I had to send just one message and one yes. Rahul said one yes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2j8nzffedl5qpbyrapaf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2j8nzffedl5qpbyrapaf.png" alt="Plan finalized and added to calendars" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;My own agent is trusted.&lt;/strong&gt; The gate enforces what the gate discloses through &lt;code&gt;ask&lt;/code&gt;, &lt;code&gt;free&lt;/code&gt; and proposals. It cannot stop my agent from volunteering something in the planning room's plain text. The share card tells the agent its limits but doesn't confine it. Setting &lt;code&gt;TN_OUTGOING=review&lt;/code&gt; makes me approve the exact text of every message my agent sends, but anything with shell access or other messaging tools can go around that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch is trusted.&lt;/strong&gt; Identity and room membership come from Switch, and a Switch administrator can read every room. On day zero, my admin account could open a private gift room that Rahul's gate had created. The gift seal is a courtesy between friends, not a cryptographic promise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Untrusting someone can't take anything back.&lt;/strong&gt; Removing a friend stops future disclosures. It doesn't erase what they already received.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;There is no public service.&lt;/strong&gt; A network is a group of friends sharing one Switch server, hosted by one of them, the organizer, who sends invites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Planning rooms close&lt;/strong&gt; after 20 agent turns or seven days, so a plan waiting on someone who answers slowly can time out.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it out here:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Demo: &lt;a href="https://youtu.be/miKu7P17yJY" rel="noopener noreferrer"&gt;youtu.be/miKu7P17yJY&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/Om-Alve/trust-network" rel="noopener noreferrer"&gt;github.com/Om-Alve/trust-network&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>agents</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
