Seven days to build, thirteen interviews to stop
Atrium: a self-hosted voice and chat app, designed by me, built by Claude Code agents, closed on the data
· 4 min read · Nikita Miezhenski
Discord is blocked in Russia, and Telegram and WhatsApp calls fail there too. My friends live in Russia, China and Turkey, each behind their own blocks, and we had wandered through Jitsi, a Tencent call app and Yandex Telemost: an hour limit here, a dead battery there, the feeling that someone was listening. A small private server is hard to block, but setting one up takes an engineer. That was the problem I chose.
Atrium is a voice and chat app with no centre: each friend group runs its own server and owns its data. I designed it, Claude Code agents built it (FastAPI, Socket.IO, SQLite and LiveKit on the server; React, HeroUI and Electron on the client), and my friends moved onto it. First build on 15 October 2026, public on 17 October with 12 releases in two days, and on 23 October five of us played for three and a half hours on our own server without a problem.
The setup was the product
A central service is one thing to block and one place where everyone’s messages sit, so Atrium has none. Hosting servers myself for $5 a month was the easiest way to grow, and it would have put every group behind my machines, so I gave it up.
The first installer was a terminal wizard, fine for me and a wall for the friend who actually sets the server up. So the setup moved into the desktop app: address, login and password, then the app installs everything, shows each step and ends on an invite link. The password is used once and swapped for a key that can do nothing but update, back up and remove the app. A post on DTF, a large Russian gaming community, got about 4,000 views, and its first comment was about trust: never give anyone access to your server. The key shipped four days later. Trust designed, not explained.

Familiar beat original
On 15 October the app looked like a phone messenger with glass panels. By 18 October it had Discord’s layout. I spent a day on bubbles with physics and a who’s-where canvas instead of chats; the friends wanted chats where chats usually are. Only the circles that show who is in which room survived. People switch because they have to, and every unfamiliar screen is a tax.

The agents built both versions in hours. The difference between them is design decisions: what to keep from Discord, what to drop, what to add.
Thirteen conversations, no demand
With my friends on the server, I went looking for who else needed one. Two days, thirteen people who call friends to play or talk, one question that worked: when did a call last break for you, and what did you do? Nine live in Russia. Those who wanted Discord had it working; the rest used whatever was already on their phone. One person named a problem: about once a month a friend drops out and the group moves to a free TeamSpeak server for the evening. Free backups closed every pain I heard.
Two segments showed up that I hadn’t built for: a tutor whose students need to join lessons without installing anything, and the host of a private gaming community in Turkey, 15 to 20 members, most of them in Russia. Both need a different product.
When building gets cheap, stopping gets expensive.
Why I stopped
The goal was ten strangers coming back to a voice room twice in a week by 25 November. After thirteen conversations the count was zero. My pain was real, and it was mine: the circle I built for had solved it for free, and the people who hadn’t were not the people I knew. Building cost a week. Another month would have cost a month and taught me the same thing. The code stays open on GitHub, and my friends keep their server.
Three things I’d do again, in a different order. My own pain is a hypothesis with a sample of one. Thirteen conversations cost two days, less than any feature, and they belonged before the week of building, not after. And ask about the last time something broke, not whether people like the idea. Liking is free. Switching costs an evening.