VoiceDebrief iOS / sgit-app / secrets

A secrets manager made of people and vaults

The design for the secrets manager in SGit Vaults, asked for by the owner on 14 November 2026. This page is intention. Built so far, compiled and tested but not yet used on a device: questions for the owner, the first secrets screens and the keys in iCloud Keychain (steps 1 to 3 below), described in the reality file. What is built is in the reality file, and this page will say plainly as each part arrives.

The owner's words: "a full-blown secrets manager ... passwords, secrets, passkeys", "the synchronisation between devices ... has to be completely transparent", "the collaboration of secrets between people", "how do we go from one person to two people, three, five, the whole group, where each one trusts the other", "a visual representation of the trust", "every team can do this independently", "it is also going to be the foundation for things like the CRM vault".

Earlier experiments it builds on: secrets.sgit.ai (a zero-knowledge secrets manager in the browser, designed, not built) and pki.sgit.ai (people, their keys, and links that count only when both sides confirm them).

The idea in one drawing

            you                         your team
   ┌──────────────────┐        ┌──────────────────────────┐
   │  iPhone  iPad  Mac│        │  Ana   Ben   Chloe  Dev  │
   │     \     |    /  │        │    \    |     |    /     │
   │   one key bundle  │◀──────▶│   cards swapped, both    │
   │   one inbox       │ trust  │   ways confirmed         │
   └────────┬─────────┘        └────────────┬─────────────┘
            │ opens                          │ opens
            ▼                                ▼
   ┌──────────────────┐        ┌──────────────────────────┐
   │  "My secrets"     │        │  "Team: devices"          │
   │   a vault         │        │   a vault, its key sealed │
   │   secrets/*.json  │        │   to each member          │
   └──────────────────┘        └──────────────────────────┘
            ▲                                ▲
            └──────── the same app, the same format ───────┘
                 a secret is a file in a vault; a team is
                 the people a vault's key was sealed to

Two things carry the whole design:

  1. A secret is a file in a vault. One encrypted JSON file per entry, in the vault's secrets/ folder. So everything vaults already do comes free: history of every change, signed by who made it; sync with no conflicts between different entries; the web Vault and the sgit command can read it; a vault on the device first and on a server when you choose.
  2. A team is the people a vault's key was sealed to. No company account, no admin, no server of ours. Five people who have swapped cards can make a shared vault in one step, and anything in it is shared. A "CRM vault" later is the same thing with different files in it.

What makes it different

Ordinary password managers keep your secrets in their company's cloud, behind an account they run, and sharing goes through their servers and their idea of a "team". This one has:

What the research says

The field and the opportunity is a research brief on eleven managers and secret tools. Its points that change this design:

Ten things this design could do better than all of them are ranked in the brief, each with its risk.

From one person to a team

  1. alone          2. two people          3. three           5. the team
  ───────────       ──────────────         ──────────         ─────────────
     (you)           (you)═══(Ana)          (you)═══(Ana)       (you)══(Ana)
                                              ║     ╱            ║ ╲  ╱ ║
  a key bundle,     met in person:            ║   ╱             ║  ╳   ║
  made on this      scan each other's        (Ben)              ║ ╱  ╲ ║
  device; "My       cards, take a photo,                       (Ben)══(Chloe)
  secrets" vault    both confirm             Ana and Ben           ╲  ╱
  on this device                             confirm each           (Dev)
                    ═══ a link both          other too, or
                        people confirmed     only through you  a shared vault
                    ─── one side only                          for all five

1. Alone. The app makes a key bundle the first time it is needed, not at first launch. "My secrets" is a vault on this device. Nothing needs a network or an account.

2. Two people, in person. Each shows their card as a QR code; the other scans it. The app asks for a photo of the person in front of you (kept on your device) and what to call them. Each confirms. A link counts only when both have confirmed: one side alone is drawn dashed, as "waiting for Ana".

2b. Two people, apart. The card goes by WhatsApp, Signal or mail as a link. It is a weaker way of meeting, and the map says so ("met by message"), until you confirm the fingerprint on a call: four groups of four characters, read aloud.

3 to 5. A group. Each new person meets whoever is nearest. Ben, who has met only you, sees Ana as "known to someone you trust" and can meet her directly later. The map shows the links that exist; the app suggests the ones that are missing ("Ben and Chloe have not confirmed each other").

The team's vault. "Make a shared vault for these people": pick them on the map, name it ("Team: devices"), and the vault's key is sealed to each person's key and dropped in their inbox. Each of them sees it arrive and opens it with one tap. From then on, a password added by any of them is there for all of them, with who added it.

The trust map

                       ┌───────┐
              ┌────────│  you  │────────┐
              │        └───┬───┘        │
           in person    in person    by message
              │            │         (dashed until
          ┌───┴───┐    ┌───┴───┐      confirmed)
          │  Ana  │════│  Ben  │    ┌ ─ ─ ─ ┐
          └───┬───┘    └───────┘      Chloe
              │                     └ ─ ─ ─ ┘
           in person
          ┌───┴───┐
          │  Dev  │   ◀ known to Ana, not yet to you
          └───────┘

Each person is drawn with their photo. A solid line is a link both people confirmed; dashed is one side only. A line says how they met. Tapping a person shows their fingerprint, when you met, the vaults you share and the secrets you gave each other. An agent is drawn as a robot face instead of a photo.

The map is computed on your device from what you know: your own contacts and the shared vaults' member lists. It is never published anywhere unless you choose to (pki.sgit.ai's register is optional, and off).

A secret

  secrets/2026-11-14-office-wifi.json   (encrypted in the vault, as every file)
  ┌─────────────────────────────────────────────┐
  │ kind      wifi                               │
  │ name      Office Wi-Fi                        │
  │ fields    network: SGit-Office                │
  │           password: ••••••••••••             │
  │ note      the router is in the cupboard       │
  │ tags      office                              │
  │ changed   14 Nov 2026, by Ana (iPad)  ✓signed │
  └─────────────────────────────────────────────┘

Kinds, each with the fields it needs: login (site, username, password, one-time code), device (a laptop, tablet or phone and its passcode: the owner's first use), Wi-Fi, card, note, token (API keys), vault key and read key (opens the vault in one tap), server access key, recovery code. Values are shown only after Face ID, are copied to the clipboard for two minutes and never leave this device, and are hidden in the app switcher.

Passkeys. iOS lets a third-party app keep and use passwords and passkeys in other apps and in Safari only as an AutoFill credential provider, an extension that needs a capability switched on for the app in Apple's developer portal. Until then the app records which passkeys exist and where, without holding them. The owner's step is in the list at the end.

Sync, without thinking about it

     iPhone                      iPad                       Mac
  ┌──────────┐               ┌──────────┐              ┌──────────┐
  │ vault    │◀── iCloud ───▶│ vault    │◀── iCloud ──▶│ vault    │
  │ keys     │   Keychain    │ keys     │   Keychain   │ keys     │
  └────┬─────┘               └────┬─────┘              └────┬─────┘
       │  push / pull             │                          │
       └──────────────▶  vault server (ciphertext)  ◀────────┘

Your vault keys live in iCloud Keychain, so every device signed into your Apple account opens the same vaults with no setup. The vaults themselves sync through the vault server: the app pulls when it opens and when it comes to the front, and pushes after every change. Two devices changing different secrets never conflict, because each secret is its own file; two changing the same secret at once keep both and ask which is right.

Writing to the server needs an access key; the owner will connect payment for that. Until a person has one, "My secrets" stays on the device it was made on, and the app says so.

Messages and questions

People talk through their inboxes: a sealed note, a card, a secret, a vault invitation. The same channel is how the app can ask its owner questions while it is being built: a Questions screen where a question waits, and the answer can be typed or spoken with the keyboard's dictation, and goes to the developers sealed to their key.

What is built in which order

StepWhatDepends on
1Questions for the owner, answered by typing or dictationnothing new
2Secrets: entries in a vault's secrets/ folder, the kinds above, Face ID, copy, historynothing new
3Vault keys in iCloud Keychain, pull on open, push on changean access key for the server part
4People: card, scan, photo, two-way confirmation (the people session's screens)SGitPeople
5The trust mapstep 4
6A shared vault for chosen people, sealed to eachstep 4 and an inbox each
7AutoFill: passwords and passkeys in Safari and other appsthe owner switches on the capability

For the owner

Questions are also in the app (Settings, Questions) once step 1 is built.

  1. Where "My secrets" lives. Proposed: a vault like any other (on the device first, on the server once there is an access key). The alternative is iCloud Keychain only, which syncs for free but cannot be shared or read by the sgit command.
  2. Photos of people. Proposed: kept on your device only; not in the card, so a card stays small enough for one QR code.
  3. AutoFill and passkeys. Needs "AutoFill Credential Provider" switched on for ai.sgit.vaults.app in the Apple developer portal, and an App Group. Shall I prepare it?
  4. Recovery. If all your devices are lost, the vault keys go with iCloud Keychain. Proposed for later: a printed recovery sheet, or a second person who holds a sealed copy.
  5. What a member of a shared vault can do. Today, everything (they hold the vault key). Read-only members are possible with a read key; "may add, may not delete" needs the server.

Ideas