Vaults and keys

What must not be public (booked meetings, contacts, introductions, the week's access keys) lives in encrypted SGit vaults, never in this repository. This page says what exists, how a key reaches an agent, and who is ready. It holds no vault key, no private key and no contact detail. Kept by sgit@web-summit.dinis.

What exists today

How a vault key reaches an agent

The push is the authorisation (the article, CLAUDE.md "Identity and names"). A key is trusted because it was pushed to this repository's keys page, which only an account with push access can do. It is not trusted because of the pki.sgit.ai register, and no registration there is needed.

  1. The agent makes its own key in its session (node pki-agent.mjs keygen --session) and commits only the public half to data/keys.json. The private half never leaves the session.
  2. The holder of a vault key seals it to that key, read from what was pushed:

node admin/tools/seal.mjs --to <key id> --from-vault <vault dir> --expires 2 --qr sealed.png. The tool takes the bundle from origin/dev:data/keys.json, names the commit that pushed it, checks that the live site serves the same key (/keys/sha256-<fp>.json), and seals with pki-agent.mjs's own code (refusing any copy whose sha256 is not the pinned one). Who pushed it (WS-106): every commit here is authored as "Claude", so git cannot say whose account pushed a key. The tool asks GitHub (the repository's activity API names the account behind each push) and seals only if that account is one the roster (data/team.json) lists for the person in the key's label, or if the sealer passes --fingerprint <fp> that the person read to them out of band (or showed as a QR code). It never prints the fingerprint in a refusal, so the out-of-band check cannot be copied from its own output. The vault key goes from sgit vault show-key into memory and is never printed. --check <key id> shows what the repository says about a key and seals nothing.

  1. The sealed link or QR code reaches the agent out of band (Dinis, or a person carrying the QR code). The agent opens it with node pki-agent.mjs open <link or qr.png> --save <dir> and keeps the vault key outside this repository's clone: in the vault's own .sg_vault/local/ (the vault lives in ~/vaults/<name>), or under ~/.sg-send/. Never anywhere in the clone, not even in an ignored folder: the gate reads every file there and stops the build on a key.
  2. The agent clones the vault with sgit and reads and writes it there.

Tried end to end on 2 November: a test secret was sealed to sgit-dinis from the keys page and opened by that session from the link and from the QR code (WS-102). Still open, as in the article: proof that a session holds the private half, which writer may replace which role's key, and retiring an old session's key.

The private vault: a proposed shape

For WS-23 (Nimay's booked meetings) and WS-24 (every contact and introduction followed up). Nothing is in a vault yet. The shape is ready as a template: the three folders with a _template.md each, the rules in PRIVATE.md, and AUDIT.md for what leaves the vault.

FolderOne file perFields
meetings/booked meetingwho, when, where, owner, what we bring, public or not
contacts/person or organisationwho, how we know them, owner, next step, by when
introductions/introduction made to usfrom, to, about, owner, next step

Each person's agents read and write it once their keys hold its vault key. Only an agreed, public meeting may be copied to this site, and only after the decision in WS-23.

Who is ready for step 8

A vault key is sealed only to an agent key that seal.mjs --verify passes. The key must be active and not replaced, and the push that added it, and every push that changed it since, must come from an account the roster (data/team.json) lists for its person. Otherwise its fingerprint must be confirmed with that person directly. The whole keys page, checked on 6 November at 17:00 UTC (72 entries, in seconds):

Whose keysPassNot yet
Dinis11 (with ontologist@PrompTugal.dinis)
Angelo8
Jose10
Silvio8
Vicky18 (with checker@PrompTugal.vicky)
Indi11: the roster lists no GitHub account for Indi yet (riskmandate-indi waits on Dinis's word)
No person in the label3: the vault registry key and the first two conductor sessions; fingerprint only
Ended, retired or replaced3: never sealed to

Run it yourself: node admin/tools/seal.mjs --verify agent:<key id>,person:<person id>,... (from a full clone, not a shallow one). crm.mjs seal-keys runs it before every seal (WS-178).

Everyone's own vaults

Everyone now makes their own vaults, through a vault agent with an SG/Send access token of its own (one per agent, from 5 November): your vault agent, step by step. Almost every vault is public: its read key is listed here, from people/<id>/vaults.json, and opens the vault read-only, with no account. The build refuses anything but a sgit_public_read_ key in those files.

VaultWhoseWhat it holdsOpen it (read only)
Who reads web-summit.sgit.ai: the published data (aym98gsm)Dinis Cruz, observability@web-summit.dinisobservability@web-summit.dinis's public data: page views and reads per group (readers, team, synthetic, crawlers), the team's reads by site key, and every agent's run log, as data/public.json, refreshed by the hourly drain; with the app (index.html) that renders it. No anonymous row. The private vault it is drained from (kuuqr3do) is not published.in SG/Vault · sgit clone sgit_public_read_49b19183eebfe091e28a939bc681764b860562458d4b4902f96e91781de74ef2:aym98gsm
Who reads web-summit.sgit.ai: the app (Dinis's) (p96tiql4)Dinis Cruz, observability@web-summit.dinisThe observability app, code only: one self-contained index.html that reads data/public.json over the vault bridge. Its source is people/dinis/observability/app/index.htm.in SG/Vault · sgit clone sgit_public_read_ca7119c0d4cfad565e3ad4b050a706c0db103a420675b56f755efaa25b8bd4f9:p96tiql4
The stand reel (cf8uki85)Dinis Cruz, conductor@web-summit.dinisThe twelve approved stand videos from the team's videos vault (h9in5em4, kept by video@web-summit.silvio), every language and format, cut into 4-second fragmented-MP4 pieces under 4 MB so the command centre's VÍDEOS view (assets/cc/demo.js) plays them in the browser through the vault's read API. Content unchanged, re-encoded at 1080p. reel.json lists them.in SG/Vault · sgit clone sgit_public_read_9a441f69a9e8caf4209ca30c848bae0b9878b6a95351a8fdb6da2404e8257f99:cf8uki85
Silvio on RiskMandate (ayaexnc7)Silvio Switha, vault@web-summit.silvioWho Silvio is on the team and RiskMandate in short (Reach, Mandate, Gap, Barriers), with links to his pages. A README; audited before publication.in SG/Vault · sgit clone sgit_public_read_b2fa6fce31ebb474fec8d1c5e0027e2f1972befbe02635026563c2f83fc56268:ayaexnc7
Silvio's videos (ws-team-videos) (h9in5em4)Silvio Switha, video@web-summit.silvioThe stand loop in six languages (MP4 and HTML pages, previews, the clean source pictures) and the 30-second film; checked, nothing with an error; a video.json per video (WS-174)in SG/Vault · sgit clone sgit_public_read_d89e235f091c13bb58e495c8744a2a4adb73d2f9ddca63bfb4a43cbb3848b60e:h9in5em4
GAMMA-Ray scans of Silvio's agents (skz9rwpu)Silvio Switha, gamma-ray@web-summit.silvioThe eleven GAMMA-Ray Public scans of Silvio's own agents, the levels computed with the standard's model, and a copy of every public page they were read from (10 November 2026); audited before publication (WS-206).in SG/Vault · sgit clone sgit_public_read_2ea15f20f56b2edcd0a51c94321524a68f8908ee6c84da5923a3eb9e6cc88c0f:skz9rwpu
Angelo's Web Summit vault (ucvg2pkv)Angelo, vault@web-summit.angeloAngelo's first vault: a README and PUBLIC.md, public, nothing secret; audited with its read key before publicationin SG/Vault · sgit clone sgit_public_read_3fbcdfaefeeeb0157e359c2223d0739d57715afe338fa16f8cc31830634dc376:ucvg2pkv
Vicky at Web Summit (k64ma7jd)Vicky Wang, vault@web-summit.vickyVicky's showcase after the summit: eight live pages (her Humans and AI interview, the PrompTugal.news front page, the newsroom's workflow, story ideas, the Live AI Office and articles), each with Open and a live Preview, in a vault app that also checks its own files, reads its history and shows its sandbox.in SG/Vault · sgit clone sgit_public_read_2ac60a307cb9150924929791e558d6966991151a93ca1b1efa02534aa88b2c65:k64ma7jd
Vicky's research vault (newsroom) (41j3e9s9)Vicky Wang, vault@web-summit.vickyThe Web Summit 2026 newsroom's research desk: one capture per public source (the summit, Portugal, Europe, announcements), each with its URL and read date. Kept by researcher@web-summit.vicky; audited before every push.with sgit only (a pack vault has no web view): sgit clone sgit_public_read_73b6bde689942850b42d941aa2582c48cfdc59c45e6845a90e19ff7720039fe5:41j3e9s9
Synthetic users: the business cards, run 1 (nnsikio4)Indi Gupte, synthetic@web-summit.indiFive invented personas get a RiskMandate business card, scan it and say what they make of it (WS-142): personas, journeys, runs, findings, measurements, the card images and phone screenshots, and the tools. Everybody in it is invented; it is not user research. Audited with its read key by a security sub-agent before publicationin SG/Vault · sgit clone sgit_public_read_36341681a2e9106de274d18ac6647f1649796eabbbc243617e844039ba733fb1:nnsikio4
Synthetic users, run 2: the six round-2 card designs (4c52covm)Indi Gupte, synthetic@web-summit.indiThe same five invented personas judge the six round-2 RiskMandate card designs: Record is picked by four of five, Terminal by the engineer. Personas, journeys, runs, findings, measurements and the 60 card images. Everybody in it is invented; it is not user research. Audited before publication (WS-142).in SG/Vault · sgit clone sgit_public_read_c6b81fbb977185027dabd2a070e1b12626b552ee17fe3ca1ab29f208c39c9045:4c52covm
Reach, Mandate, Gap (3b9y9n9t)Jose Bota, vault@web-summit.joseA vault app: pick an example agent, tick what it is authorised to do, and see the gap between its reach and its mandate. Self-contained, read-only, audited before publication.in SG/Vault · sgit clone sgit_public_read_61eb18a77759ed0ee737fda03befd205d30f0ff6036e9d7703cc71f0d427a8f9:3b9y9n9t
Who reads web-summit.sgit.ai: the application (5rmsy87y)Jose Bota, conductor@web-summit.joseThe observability app (WS-37), code only and no data: Overview and an in-vault drain, run by the private data vault that links it. Published read-only at Jose's word; audited before publication (latest revision clean; two earlier revisions held a PEM header in test code, ruled out by reading).in SG/Vault · sgit clone sgit_public_read_731e9d55b15019c57b00173c7d8156267a062514c362e9e7a7b680d1e69bbc8b:5rmsy87y
Agent policy explorer (rius8gwy)Jose Bota, vault@web-summit.joseA vault app: every agent on the team's Reach, Mandate, Gap and Barriers, from the 44 published ABPs, one agent at a time or the whole team side by side. Self-contained, no permissions, built like sgit.ai's Risk graph explorer; audited before publication.in SG/Vault · sgit clone sgit_public_read_c377ac3e30ff1668526448d253112f12082828c9fb2746f574380304b394065b:rius8gwy
For an agent: this page is https://web-summit.sgit.ai/vaults/index.html (markdown: https://web-summit.sgit.ai/vaults/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.