A place to talk that belongs to you.
Gryt is voice, video and text chat. Download the app and you can make your own server right from it. Your chats stay on your machine, and nobody has to hand over an email, a phone number or a photo of their face to join.
No sign-up
No email, no phone number, and no photo of your face.
Most chat apps want enough about you to know who you are, and then you just have to hope they look after it. Gryt doesn't ask. Your device makes an identity and your device keeps it.
It's twenty-four words. Put them in your password manager like any other password, and paste them back in on your next machine. How that works. None of it comes to us. No ads, nothing tracking you. What we hold.
You can make an account too. But it's not the more private choice — a guest identity never touches anything of ours, and signing in means trusting our login service. What you get for it is one name on every server, a way back in if you lose your device, and a ban that sticks. You can do it later without losing the servers you've joined, and a server tells you whether it takes guests before you try.
It's a real password field, so your password manager offers to fill it like any other.
Avatars
Everybody gets an owl. Here's yours.
Expression
19 drawnOr use a picture you already have.
A GIF stays a GIF, and so does an animated WebP. It keeps moving instead of getting flattened to the first frame, and it plays in the member list and next to every message you send. You don't have to pay for that. Up to 25 MB, cropped square, stored at 256 pixels. Server icons work the same way. More on profiles.
kasper
nora
tobias
ida
- yours
Emoji
Bring the emoji you already have.
Paste a link into server settings and Gryt grabs what's behind it. One emoji, a whole pack, or somebody’s entire profile from emoji.gg or BetterTTV. You don’t have to tell it which one it is.
You see the whole list before anything happens. Rename what you want, untick what you don’t, and only the rest come in. They all end up 128 pixels tall, and the animated ones are stored as WebP. Emoji in the docs.
Voice and sharing
It sounds good, and it keeps up.
Full-quality audio, a noise filter that runs on your own machine, and screen sharing fast enough to actually watch someone play. There's no better version you could be paying for. Whoever runs the server sets the limits, and they can turn them up.
sivert
kaspersharing
nora
tobiasmuted
idadeafened
Built from the same parts as the app. The voices are on a timer. Nobody's really talking.
- The voice server
- Ours. We wrote it from scratch in Go instead of renting one
- Sound
- Opus at 48 kHz, in stereo, and it copes with dropped packets
- Quality
- Nothing gets re-encoded on the way, so nothing gets lost
- Noise
- RNNoise cleans up your mic, on your machine, not on a server
- If the server restarts
- You keep talking. Voice is its own connection to its own service, and when the server comes back it just asks who is still in the room
- eSports mode
- 128 kbps, Opus in 10 ms frames, push-to-talk on, every filter off
- Network
- One UDP port to open, not a range. 3478, unless you change it
Share your screen at up to 120 frames a second.
Enough that a game still looks like the game. 30, 60, 90 and 120 are the normal settings. 144, 165 and 240 are there if you want to push it, up to 4K. Anything over 60 needs the Windows app, because it grabs the screen itself instead of going through the browser.
Send the whole file.
The size limit is whatever the person running the server picks. There's no tier that raises it, because there are no tiers. It starts at 100 MB so nobody fills a disk by accident, and the next limit after that belongs to the storage, not to us. What a server decides.
Past the 100 MB default, the next limit is the storage's own. On S3 that's 5 TB a file.
Themes
Nineteen themes, and a generator for the rest.
Twelve are ours. Seven are ports of themes you've probably seen somewhere else. A theme sets the colours and the corner radius, so picking one changes the shape of the app as well as the colour.
The panel next to this is built from the same parts as the app, and each theme goes on it the same way. Press an arrow and the rest of this page comes with it — that's the same set of variables, on the whole site instead of one box.
If none of them fits, build one at ui.gryt.chat and paste the link it gives you into Appearance. Text size, interface scale and emoji size are their own settings: 10 to 24 pixels, 50 to 200 per cent, and 12 to 96 pixels.
kasperdid you see the new theme
noratook about four seconds to pick
On your network
Nobody types an address.
Start a server on your machine and everyone else on the network just sees it appear in their list. No address to read out, no invite link to send round. It's mDNS, the same thing that finds your printer.
The desktop app is the one doing the looking, so a browser tab won't find anything this way. The server has a switch for it and it's on by default. Hosting from the app.
The pane from the app, built here from the same parts. Nobody on this page is on your network. These four are made up.
Addons
Themes, and a small plugin API.
An addon is a folder with an addon.json in it. A theme addon adds CSS. A plugin addon adds a module, and that module can talk to exactly one thing: an object on window with a version, the theme you're on, and an event for when you change it.
And that's all of it. No sandbox, no registry, no marketplace, and the plugin system is still on the roadmap. It's enough to restyle the client. It isn't enough to build a product on. More on the developer page.
A theme's CSS goes in like any other stylesheet. A plugin's module gets one object, with three things on it.
Motivation
One senior engineer, four years, and a voice stack written from scratch.
I started Gryt in May 2022. I wanted somewhere for my friends to talk that I wasn't renting from anybody, and the chat apps we were using kept asking for a bit more of us every year.
Roughly two of those four years went into WebRTC before the media server was written at all. I asked every developer at my workplace how ICE negotiation and DTLS-SRTP actually work, and not one of them could tell me. So it was me, the RFCs and a lot of trial and error. The voice server is written in Go on Pion rather than an off-the-shelf SDK, because when something breaks in a call I want to be able to trace it down to an individual packet.
It's still one person. The app, the server, the voice stack, the identity system, the component library, the mobile app, the docs and this page. That's either the best or the worst thing about Gryt depending on what you need from it, and you should know that before you put a community on it.
- years, since May 2022
- 0+years, since May 2022
- of them spent on WebRTC before writing the media server
- 0of them spent on WebRTC before writing the media server
- repositories, all public
- 0repositories, all public
- person
- 0person
Self-hosting
Put it on a machine that stays on.
Hosting from the app is fine for an evening with friends. But if you want it still running after you shut your laptop, put it on something that stays on. Pick whichever of these sounds like you.
From the app
The client you downloaded is already a server. Name it, press create, read the address out. No terminal at all.
Hosting from the appWindows
A zip, one config file and a batch script. Node.js is the only thing you have to install yourself.
Windows guideLinux
Four commands and a server is up. The database is SQLite, so a backup is one directory. There's a catch worth reading about first.
Quick startDocker
A compose file and an .env. There's a Helm chart too, if you're the sort of person who has a cluster.
Deployment docsDownload
Download Gryt.
The desktop app is the one that hosts servers, and the one where push-to-talk still works when the window isn't in front. The browser gets you into a call in about ten seconds and needs nothing installed.
No download required. Works in Chrome, Firefox, Edge, and Safari. Some features like global push-to-talk are desktop-only.
Sponsors
Gryt is free, and it isn't asking you for money.
There's nothing to buy in it and nothing behind a subscription. You can chip in if you want to. It pays for a domain, the box the auth stack runs on, and the Apple and Windows signing certificates. None of this depends on it.
Sponsor GrytNames go up from $25 a month and logos from $100, and one-off payments are just as welcome. The tiers are written out on the sponsors page, along with everybody who has.