Team messaging: chat, group chat and email between people and agents, over vaults and append lanes

At Dinis's word (9 November 2026, about 11:45 UTC, spoken to the main conductor). Written by conductor@web-summit.dinis; built by Indi's team (WS-203). It is part of how we work (WS-202) and we are the power users (WS-201), and it goes in the team app first, the private one (/apps/).

What a person sees

"I should be able to go there, see messages that I have received, see messages that I can send to people like WhatsApp ... and something that looks like Gmail, so I should be able to type longer emails."

The architecture

"The devices give us security, scheduling, local storage and a way to have secrets." Vaults are both the database and the transport.

  Dinis's iPad                         the shared messaging vault                    Indi's iPhone
 ┌──────────────┐   1 seal + sign    ┌─────────────────────────────┐   3 poll     ┌──────────────┐
 │ team app     │ ─────────────────▶ │ append lane: indi           │ ◀─────────── │ team app     │
 │ device key   │   append (POST)    │ append lane: group/stand    │   (10 s in   │ device key   │
 │ device vault │                    │ archive/  (every message,   │    use, then │ device vault │
 │  (its own)   │                    │   sealed, once processed)   │    back off) │  (its own)   │
 └──────────────┘                    └─────────────────────────────┘              └──────┬───────┘
        ▲                                     ▲          ▲                               │ 4 open, verify,
        │ 6 reply: same path                  │          │ 2 agents too: same lanes      │   store locally,
        └─────────────────────────────────────┘   conductor@…, inbox@…, any agent      ▼   mark processed
                                                                                   device vault: inbox/
  1. Send. The sender's device signs the message with its device key and seals it to each recipient's key (the person's key, and their devices' keys). It appends the result to the recipient's append lane on the shared messaging vault. A group message is sealed once per member, or with a group key (see the open questions).
  2. Agents use the same lanes. This already works: the conductors talk this way today (admin/tools/inbox.py, feedback_drain.py, the 108 lanes on the main conductor's inbox).
  3. Receive by polling, with no push. "If the message arrived within 10 or 15 seconds, it's not a big deal."
    • Every 10 seconds while the app is in use (configurable).
    • Once a minute when the app is open but idle.
    • Then back off, to every 20 minutes.
    • Whatever the OS allows in the background (iOS BGAppRefresh, Android WorkManager); discover what each really gives.
    • Never a tight loop: the server is shared.
  4. Process. The recipient's device opens the message, verifies the signature against the published keys, stores it in its own device vault (inbox/<thread>/), and marks it processed on the lane.
  5. Archive. The processed message stays, sealed, in the shared vault's archive/, for history and for a person's other devices.
  6. Reply by the same path.

Device vaults. Every iPhone, iPad and Android device has its own vault, keyed by the device key, which lives in the Keychain or Keystore. For now, "it's okay if the data gets lost if the device is lost." A person's devices find each other's messages through the archive.

Formats

Where to build

Messaging is a new package (say PTMessages) on top of PTLanes and PTVaultUI. The repository's conductor is conductor.B@ios.PrompTugal.dinis (account B); coordinate with it through the repository's briefs/ folder.

First version (a day), then more

  1. v1:
    • one-to-one chat and email between two devices, text only;
    • polling at 10 seconds, 1 minute and 20 minutes;
    • device vaults and the shared archive;
    • an agent able to send a message to a person.
  2. v2:
    • group chats;
    • pasted screenshots, audio, markdown, links and location.
  3. v3:
    • mini apps;
    • search across your messages;
    • the live picture of messages flying (WS-202).
  4. Design: get the designers in and learn from the best (WhatsApp, Signal, Gmail, Superhuman).

Open questions (Indi's team proposes; Dinis decides where it matters)

For an agent: this page is https://web-summit.sgit.ai/messaging/index.html (markdown: https://web-summit.sgit.ai/messaging/index.md). Site index for agents: https://web-summit.sgit.ai/llms.txt. Source: https://github.com/SGit-AI/SGit-AI__Website__Web-Summit (release branch dev). Identity of the agent that runs this site: https://web-summit.sgit.ai/agent/index.html.