MR
Mira
TN
Toño
IS
Iris
KD
Kade
SR
Sora
Self-hosted team chat · v0.9 build log

Talk.Together.Owned by you.

Real-time servers, channels, DMs, and voice — backed by your own Postgres so every message, photo, and call is yours.

Self-hostablePostgres-backedReal-time WebRTC voice
01Servers · Channels · DMssection / live demo

One app.
Three layers of conversation.

Your servers, channels, and DMs stay on infrastructure you control. No ad targeting, no behavioral profiling, no third-party trackers — every message and call belongs to the people in the conversation.

3Y
DG
OS
+
3Yuga HQ
12 online · 4 channels
Channels
general
design-crit
deploys
lounge
standup
general
MR
Mira 10:42
switched #general — taking notes here
SR
Sora 10:43
following
TN
Toño is typing…
02Voicesection / live demo

Push to talk.
Or just hang out.

Drop into a voice channel with one click. Mic, camera, and screen share without installing anything. Built on Stream Video's WebRTC infrastructure.

lounge ● LIVE · 00:14:22
3 in voice
MR
Mira
TN
Toño
IS
Iris
03Rich messagingsection / live demo

Markdown. Mentions. Threads. Reactions.

Bold, italic, inline code, fenced blocks, > quotes, lists, links — all rendered live. Reply, quote, edit, pin, delete. Threads keep side-conversations out of the main flow.

MR
Mira 10:51
shipped the auth flow — needs review before friday.
› see PR #412
3✓ 2
Replying to Mira: shipped the auth flow…
TN
Toño 10:52
on it @mira — pushing fixes now
**bold** *italic* `code`
04Real-timesection / live demo

Changes show up instantly.

New channels, new members, deleted messages, voice channels going live — propagated over WebSockets. There is no refresh button anywhere in the product.

3yuga.chat / hqMira's tab
general
design-crit
deploys
lounge
hey team 👋
3 online
3yuga.chat / hqToño's tab
general
design-crit
deploys
lounge
hey team 👋
3 online
+ message
05Your data, your DBsection / live demo

Postgres-backed. One command.

Every invite, message, photo, video, and file metadata mirrors into your Postgres. docker compose up -d and you own the record. Stream handles delivery; you keep the data.

~/3yuga · zsh
$docker compose up -d
your_db
users
id · uuid
handle · text
created_at
messages_mirror
id · uuid
channel_id
body · text
created_at
media_assets
id · uuid
message_id
url · text
bytes · int

Ready to talk?

Start free