For devs and sysadmins. No heavy app, no browser, no noise: you join a room with one command, talk, and leave with Ctrl+C. It runs on your company's server, and messages never leave the network.
try it now: $ teachatty --server teachatty.com
teachatty is open source, and it will stay open source, forever. No paid tier, no account to sign up for, no tracking: a terminal, a room, and whoever drops by. Install the client, and you're one command away.
A teachatty server runs at teachatty.com, open to anyone. With no --room, you land in local, the lobby everyone shares. Say hi.
teachatty --server teachatty.com
Make up a room name and send your friends the same line. The room appears when the first person joins and vanishes when the last one leaves. There are no passwords yet, so anyone who knows the name can walk in: pick one that's hard to guess.
teachatty --server teachatty.com --room tea-with-friends
Run the server on any machine in your office, homelab or VPN, and point everyone at it. Messages never leave your network, and it works without internet access. Encrypted with TLS out of the box.
# on one machine teachatty-server # on everyone else's teachatty --server 192.168.0.10
Every line is public under the GNU AGPL-3.0: read it, change it, run it, share it. Anyone who ships or hosts a modified teachatty has to share its source with their users too, so nobody can ever lock it away. Ideas and patches are welcome: see how to contribute.
Full screen, like vim or htop. Messages on top, your input box at the bottom.
┌───────────────────── dev · mateus ─────────────────────┐ │14:02 joao: anyone seen the disk alert on db-02? │ │14:03 daniel: yep, it's at 91%. cleaning old logs │ │14:05 mateus: thanks. did the 10am deploy go out? │ │14:05 daniel: @mateus it did, healthcheck is clean │ │ │ └────────────────────────────────────────────────────────┘ ╔════════════════════════════════════════════════════════╗ ║nice! closing the ticket█ ║ ╚════════════════════════════════════════════════════════╝
@you: the message lights up in amber and your terminal beeps, even from another tab.teachatty and you're in local. For another room, --room: if it doesn't exist, it's created.Work chat turned into heavy apps with notifications, threads, emoji and a thousand channels. teachatty is the opposite: a small command-line tool you use like any other.
Nobody types ws://...?room=x. It's teachatty --room dev --alias daniel, and the rest is an internal detail.
One server binary on an internal machine, on the port and interface you choose (--addr). Traffic never leaves the company network, and it's encrypted with TLS by default, with no certificates to manage.
make 2>&1 | teachatty --room ops sends the build output to the team's room (lines arriving together go as one message), shows it in your terminal and exits at the end. Safe in scripts and cron.
A feature only goes in if it pays for itself. The whole codebase is about 1,250 lines, comments included, standing on libraries that do the heavy lifting.
Measured, not estimated. The server keeps everything in memory and each connection costs little.
Daniel and Mateus are in room dev. João is in geral. Daniel types hi and presses Enter. Step through it, or press play. The arrow keys work too.
Each step is explained in detail in the documentation.
The terminal is in raw mode: the kernel neither holds nor echoes anything, each key goes straight to the program. tcell reads the bytes from stdin and turns them into events. The "h" and the "i" are already in the input box. When Enter arrives, SetInputCapture grabs the key before the box sees it.
teachatty comes in two parts. The client is what you chat with, and it's all you need to join teachatty.com. The server is optional: install it only if you want to host rooms of your own.
teachattycurl -LO https://teachatty.com/downloads/teachatty_latest_amd64.deb sudo apt install ./teachatty_latest_amd64.deb
sudo dnf install https://teachatty.com/downloads/teachatty-latest.x86_64.rpm
go install github.com/daniel-cmdline/teachatty/cmd/teachatty@latest
That's it, nothing else to set up. The package puts teachatty in /usr/bin, which is already in your PATH. Open any terminal, in any folder, and run:
teachatty --server teachatty.com
With go install, it lands in ~/go/bin, which Go's standard setup adds to your PATH. If teachatty isn't found, add export PATH=$PATH:$HOME/go/bin to your ~/.bashrc.
teachatty-serverFor your team, your homelab or your own network. You don't need it to chat on teachatty.com.
curl -LO https://teachatty.com/downloads/teachatty-server_latest_amd64.deb sudo apt install ./teachatty-server_latest_amd64.deb sudo systemctl enable --now teachatty-server
sudo dnf install https://teachatty.com/downloads/teachatty-server-latest.x86_64.rpm sudo systemctl enable --now teachatty-server
go install github.com/daniel-cmdline/teachatty/cmd/teachatty-server@latest teachatty-server
The packages set everything up: a locked-down systemd service that starts on boot, its own teachatty user, TLS on port 7347 with a certificate created on first start, and a config file for flags, /etc/default/teachatty-server. Then everyone on your network connects with:
teachatty --server 192.168.0.10
Open port 7347/TCP in the server's firewall. Using your own domain? See running the server as a service.
Every file, including Linux and macOS tarballs and checksums.txt, is in downloads/. These are development builds of the upcoming v0.1.0.
teachatty --server teachatty.com # the public lobby teachatty --server teachatty.com --room tea-with-friends # your own room teachatty --server 192.168.0.10 # a server on your network
git clone https://github.com/daniel-cmdline/teachatty.git cd teachatty # the server (port 7347, default room local) go run ./cmd/teachatty-server # in another terminal: no flags, you land in the local room go run ./cmd/teachatty # send a command's output to the room uptime | go run ./cmd/teachatty
Flags, keys, other machines on the network and running the server with your own domain: in the documentation.
teachatty is just getting started and grows one feature at a time.
The packages above, made official: a git tag and a release page, so .deb, .rpm and the tarballs carry a stable version instead of a development build.
A server-wide token or password-protected rooms, decided after the release. TLS is in place, so a secret travels encrypted; the server stores only a salted hash.
Pure-Go SQLite. Whoever joins sees what was already said, and pipe mode keeps logs.