
Your Guest Identity Now Fits in a Password Manager
Using Gryt without an account meant living in one browser on one machine. Now it's 24 words you can paste onto your phone.
Guest mode worked until you got a second device
In 1.5.0 you stopped needing an account to use Gryt. No email, no sign-up, no round trip to anything I run. Your client makes a keypair, the key is who you are, and that's enough. Joining a server only ever needed proof that the same person came back, and signing a challenge proves that on its own.
I still think that was the right call. But it had a bad day built into it, and the bad day looked like this: the key lived in one browser on one machine. Clear your site data and it was gone. With it went every server that identity was known on: your roles, your history, and any server you owned. Nobody could give it back, including me, because there was nothing to give back. The key was the account.
There was an escape hatch. You could save your identity to a file and restore it somewhere else. It worked, and almost nobody used it, and honestly I understand why: it went out of date every time you joined a new server. Each server got its own key, so the file you exported last week didn't know about the server you joined yesterday. A backup you have to keep re-taking is a backup you stop taking.
Where this came from
Carlo had been asking about federation, whether his users could join servers he didn't run. That's a much bigger question and I'll come back to it another time. Somewhere in the middle of it he asked something smaller:
But if you allow multiple servers for one key for gryt one could store the key in a password manager for cross device sign in
That is a smaller question than federation. Not "can I federate", just "can I be me on my phone".
The reason the answer was no is that there was no single thing to store. There were N things, one per server, and N kept going up.
One secret for every device
So the keys aren't generated any more. They're calculated.
There's one seed on your device — 32 random bytes — and every server's key is worked out from it, using the seed and that server's identity as the inputs. Same seed and same server always produce the same key, on any device, whether or not that device has ever spoken to that server before.
That's the part that makes it work. Your laptop and your phone don't have to exchange anything. Give them both the seed and they independently arrive at the same key for any server, including one you join next month. There's nothing left to sync, which means there's nothing left to go stale.
The property I was most worried about losing survived intact. Two servers still can't tell they're talking to the same person. The derived keys look unrelated to anyone who doesn't hold the seed, so the per-server separation that guest mode was built around is exactly as strong as it was. You get portability without becoming trackable.
Why the backup is words
The seed is shown as 24 words, which I took directly from how Bitcoin wallets do recovery phrases. It's a good format and there was no reason to invent another.
The nice part is that the checksum is inside the words rather than sitting beside them. The standard list is 2048 words, so each one is 11 bits. 24 words is 264 bits, and your seed is 256 of them. The spare 8 bits are a hash of the rest. So a mistyped or swapped word gets rejected instead of quietly making you somebody else. That's the failure I actually cared about, because being silently wrong is much worse than being told no.
No two words in the list share their first four letters either, so a misread word usually isn't a word at all and fails before the checksum is even reached.
You're not meant to memorise them. Copy them into your password manager and move on with your day. The field you paste them back into is a real password field, so your manager will offer to save them the first time and fill them in after that.
I use Bitwarden, self-hosted via Vaultwarden, and this was very much designed around that being the normal thing to do.
The short version
Don't have an account and want to be signed in on your phone?
- On your computer: Settings → You → Security → Show my identity backup
- Copy the 24 words
- On your phone: Settings → You → Security → I already have one, and paste
Done. Same person, same servers, same roles.
Direct messages were broken on a second device
While I was in here I found something I hadn't noticed. Your identity was filed under the address a server answered on. Servers move, and Gryt picks a different port on its own if the one it wants is taken, and a self-hosted server on a home network gets a new address whenever the router feels like it.
When that happened, the client recognised the server correctly, and then handed it a completely different identity. You showed up as a stranger with no roles and no history, and nothing on screen said why. It just looked like the server had forgotten you.
Identities now belong to the server itself rather than to where it happens to be reachable, so it can move, and it can rotate its own identity key, and you're still you. One side effect worth knowing: a server you can reach both on your LAN and through a tunnel is now one identity on both, where it used to be two.
What this doesn't fix
Making a new identity is still free, and it always will be. If you host a server that accepts people without accounts, a ban still holds only until somebody decides to come back as somebody else. That's a property of not requiring an account, not a gap I can close. It's the same trade it always was, and the answer is still invites, the lobby, or requiring accounts if it matters to you.
This is also not federation. It makes you portable across your own devices. It doesn't make you portable across identity providers, and Carlo still can't bring his own users to a server I run. There's groundwork in this release that makes that safe to build later, but it's groundwork and nothing more.
Where to find it in the app
It's deliberately out of the way. A first-time user shouldn't have to think about seeds, and nothing in the join flow mentions any of this. It's in settings under Security, next to the identity tools that were already there, for people who go looking.
Thanks to Carlo for the question. It was a better one than the one we had been arguing about.