We built tide to host our own video calls.


tide is the video call software we use every day at Convex Works. This week, we made it free and open source on GitHub so anyone can self-host it.
We built it for a business reason first. At Convex Works, we pitch owning your company data and context. It would be hypocritical to pitch that in a Google Meet. As a data infrastructure company, we want to be our best case study.
There was also a sentimental reason. As teenagers aspiring to do business, we knew that important meetings happened in person. You ran across the city or abroad. Nice offices, sit down, handshake, coffee. Phone/Skype was for minor things. We did not live it ourselves (graduated 2019), but we found something cool, human, and cinematic in that.
Businesses of the past actually hosted their guests. They owned the room, literally.
Now, we accept meeting in the rooms of big tech and letting them listen to our calls. You click a Meet/Teams/Zoom link and go to their environment. No class.
So, if we lost the in-person part, we might at least keep the hosting and ownership bits.
Either way, that is only possible if you self-host your meeting software. Alternatively you pay for an enterprise cloud SaaS where they proxy their service through your domain (fake and expensive).
Open source video call software already existed. We tried Jitsi and MiroTalk, and it was sad: bloated with features, too opinionated, and not working that well. So, we built our own. In July, Filippos had a first version running in a day. We called it Klisi (Greek for “call”), but the name was too esoteric, so it became tide.
We used it internally and with clients over the past two months. One client liked it enough to ask, at the end of one call, how many euros it costs. It has finally reached a stable enough version to let anyone use it.
tide does a few things: reusable meeting links on your own domain, a guest lobby, screen sharing, sign-in for hosts through the login your company already uses (OIDC), and server-side recording saved to your own storage (S3). We wanted those few things to work well, so we did not add much else.
That means it does less than Jitsi, Zoom or Google Meet. There is no phone dial-in, no background blur and no mobile app. The full comparison is on the website.
What we use the most is recording. Every call is recorded on our server and saved to our own storage. No notetaker bot joins the call. The recordings become our meeting notes, and those are part of the company context we and our AI agents use every day.
It is super easy to self-host. Do it yourself, or ask your agent to read the context we provide on the website.
Sending Zoom/Meet/Teams links is nice, but wait until you send your own meet.your.domain link. Try the demo, or have a look at the code on GitHub.
We also launched tide on Product Hunt. If you try it, we would like to hear what you think.
For the devs, the stack:
- Go, one binary with the web app (SvelteKit) inside it
- LiveKit for the media, inside the same binary
- LiveKit Egress for recording
- SQLite for the database
- Any S3-compatible storage for the recordings
- Any OIDC provider for sign-in (we recommend Pocket ID, the one we use; authentik and Keycloak also work)