Projects / Twenty
Twenty + minidauth contact data the server never sees in the clear
A CRM is a list of people and everything a team knows about them. In this fork, the personal fields in Twenty are sealed before they reach Postgres and decrypted in the browser, so the server and its database only ever hold ciphertext.
Run end to end
What gets sealed
Twenty is the open source CRM. These fields are stored as ciphertext, and nothing on the server can decrypt them.
- People
- Name, emails and phone numbers (including the additional ones), job title and city.
- Links
- LinkedIn and X links, both their URLs and their labels.
- Notes and tasks
- Note bodies, and task titles and bodies.
How it's wired
-
Sealed at the shared ORM
Hooks in Twenty's workspace repository seal on insert, update and save, and handle reads, so every object goes through the same choke point.
-
Decrypted in the browser
An Apollo link decrypts sealed fields client-side, using a session-bound token and a proof of possession tied to each request.
-
Gated by a quorum role
Reading needs a crm-reader role the quorum granted, and revoking it takes effect across the whole instance with no deploy.
The key that seals these fields exists only as shares across the Tide network, and 14 of 20 nodes have to cooperate to use it. It is never on the Twenty server.
Details that matter
- The token that allows a reveal lives for 15 seconds and is bound to the browser's session key.
- A reveal token is only minted while a live server-side session exists, so a CRM token captured before logout can't keep minting them.
- Signing out revokes the minidauth session, and retries so the revocation doesn't fail silently.
- The dev server refuses to serve key files and .env files.
Status and running it
A proof of concept, off unless MINIDAUTH_SEAL_URL is set, so an unconfigured checkout behaves exactly like upstream Twenty. The fork's README covers setup against a running minidauth.
Want to do the same for another app, or stuck running this one? Join the Discord and I'll help you out.
Other projects: Formbricks · Cal.diy · Integrations