Chat-tails: A Retro Terminal Chat Application Built on Tailscale
Chat-tails: a secure, private, and ephemeral terminal chat app built on Tailscale. It offers a retro LAN-like experience for focused group communication, perfect for gaming or private communities.
Chat-tails: A Retro Terminal Chat Application Built on Tailscale
Inspired by a need for a secure chat environment for his child during Minecraft sessions, Brian Scott developed "chat-tails," a unique terminal-based chat application leveraging Tailscale and its tsnet library. This project intentionally diverges from modern chat platforms, offering an experience reminiscent of classic IRC.
Chat-tails prioritizes privacy, simplicity, and an ephemeral nature. Access requires explicit invitations, conversations are not easily stored or searchable, and the platform lacks features like voice calls, plugins, avatars, or integrated images (beyond ASCII art). Scott envisioned it as a private digital space across friends' Tailnets, fostering the feel of a local area network (LAN) gaming session, accessible from anywhere. "It's about having this private space, across your friends’ Tailnets, where you can chat about the game you’re playing or whatever you’re doing," Scott explains. "It’s supposed to be more like the days where you were all on the same LAN... Now you can kind of have that same type of feeling, no matter where you are in the world—just a nice private area where you can chat.”
How it Works
Chat-tails offers two operational modes:
Regular Mode
In Regular Mode, users execute ./chat-server, specifying a port number, room name, and maximum user count to create a local network chat. While port forwarding on a home router could extend access, this method is generally discouraged for security reasons, especially for family use.
Tailscale Mode
Tailscale Mode enhances security and accessibility. In addition to the regular parameters, users provide a --hostname for access via a Tailscale domain (e.g., hostname.something.ts.net) and an auth key to integrate with Tailscale. This setup allows any device within the Tailnet, or shared into it, to join the chat using nc or telnet commands, such as telnet hostname.something.ts.net 2323.

Once connected, the chat operates within the terminal. Users type messages and press enter for instant visibility. The application includes a few basic commands: /who to list users, /help for command information, /me for italicized action text (e.g., reaches for an ice-cold Diet Coke), and /quit to exit. Although minimal, chat-tails is designed to fulfill its core purpose effectively, with recent additions like history options demonstrating its potential for incremental feature growth.

Building an Old-School Chat Space
Brian Scott, a developer with a decade of experience in Go, found the tsnet library a perfect fit for his vision. He dedicated about two days to learning and integrating the library for this project. "The tsnet library was actually the easiest thing," Brian noted. With network setup and verification handled by Tailscale, his primary challenge was ensuring text input in one terminal reliably appeared in another. Unlike modern apps that might use websockets, a terminal-based chat relies on simpler TCP and UDP connections.
To enhance the user experience beyond a plain terminal line, Scott incorporated bubbletea, a free and open-source terminal UI library. "While I was making this thing very minimal, I wanted to also make it very pleasing," he stated.
Scott believes that developers familiar with Go could easily extend or modify chat-tails. He has explored ideas such as rendering images within terminal chat using Go libraries and potentially integrating Taildrop for file sharing among Tailscale users. Chat-tails is resource-efficient, making it suitable for deployment on low-power devices like a Raspberry Pi or other single-board computers (SBCs). This could enable its use as a portable, ephemeral chat solution for events, or serve as a retro alternative to modern chat platforms like Slack or Discord for specific communities.
Ultimately, chat-tails offers a fun and secure learning environment for his child and friends. "You launch it on top of Tailscale, scale it as big as you want, and now your community is not only learning about VPN technology, but also the basics of SSH, terminal, things like that," Brian shared. "It feels good, very retro-futuristic, and fun.”