Terminal chat clients in 2026: every option compared
Which chat clients actually work in a terminal today, which ones are maintained, and what each one costs you in setup and risk. Covering Slack, Matrix, IRC, Discord, Zulip, Mattermost and Hasarak, with repository links and release dates checked in October 2026.
If your day happens in tmux, a terminal emulator and an editor, a chat app in a browser tab is a context switch every time someone pings you. A terminal client fixes that: chat sits in a split pane, uses the same keys as everything else, and works over SSH.
The catch is that the terminal chat world is uneven. Some protocols (IRC, Matrix) were designed for third-party clients and have excellent ones. Some products (Slack, Discord) don’t offer an API meant for full clients, so terminal clients for them depend on workarounds that can break or break the rules. And some popular projects quietly stopped being maintained years ago.
This guide sorts it out. Status and release dates were checked against each project’s repository on October 24, 2026; if you’re reading this much later, check again.
The short answer
| You use | Best terminal option | Status |
|---|---|---|
| Slack | WeeChat + wee-slack | Maintained; last tagged release 2024, nightly builds since |
| Matrix | iamb for Vim users, gomuks (web UI is the mature one) | Both active in 2026 |
| IRC | WeeChat, irssi, senpai, catgirl | Mature |
| Discord | Discordo, with a Terms of Service risk | Active |
| Zulip | zulip-terminal | Stable, last release 2023 |
| Mattermost | matterhorn | Released January 2026 |
| Microsoft Teams | None maintained that we found | — |
| Hasarak | The first-party TUI | No public release yet; the web app is released |
The rest of this guide explains the trade-offs behind each row.
Slack in the terminal
Slack doesn’t publish an API for building full user clients. Its Web API is designed for apps and bots, and it limits what those can read: since May 2025, commercially distributed apps that aren’t in the Slack Marketplace get one request per minute for channel history on new installs (changelog). Terminal clients get around this in one of two ways: an OAuth token from an app you create (limited by scopes and rate limits), or your browser’s session token, which behaves like the official client.
wee-slack
- What: a Python plugin for WeeChat that adds Slack as a WeeChat “server”.
- Status: the most actively maintained Slack terminal client. The last tagged release is v2.11.0 (October 2024), and the project publishes rolling nightly builds; master has had hundreds of commits since.
- Auth: an OAuth token, or a session token with the browser’s
dcookie. The README says session tokens are “not officially supported” by Slack, “may stop working at any time” and “can’t be revoked”. - Why pick it: you get all of WeeChat (scripts, triggers, relay to mobile, splits) and Slack threads, reactions and edits.
- Caveat: check with your workspace admin before using a session token. Slack’s developer policy prohibits circumventing its access controls and using unpublished APIs.
slack-term
- What: a Go TUI for Slack (erroneousboat/slack-term).
- Status: dormant. The last release is v0.5.0 from March 2020; the last commit is from May 2020. It isn’t archived, but expect it to break as Slack changes.
sclack
- What: a Python TUI for Slack (haskellcamargo/sclack).
- Status: dormant, last commit May 2021. It relied on legacy tokens, which Slack has since retired for new apps.
Bridges
Another route is to bridge Slack into a protocol with good terminal clients, for example Slack to Matrix with mautrix-slack, then use iamb or gomuks. You trade a client problem for a server you have to run, and the bridge still needs Slack credentials.
Matrix in the terminal
Matrix is an open protocol with an API designed for third-party clients, which is why its terminal clients are some of the best maintained on this list.
iamb
- What: “a Matrix client for Vim addicts”, written in Rust (ulyssa/iamb).
- Status: active. v0.0.12 was released in September 2026, with newer tags in October.
- Why pick it: modal Vim keybindings, window splits and tabs, threads, reactions and end-to-end encryption. The closest thing to “Vim for chat”.
gomuks
- What: a Matrix client in Go (gomuks/gomuks).
- Status: active, with monthly releases (the latest, at the time of writing, is from October 2026).
- Caveat: gomuks was rewritten. The new version’s web frontend is the mature one; its README says the terminal frontend is “still experimental and doesn’t have many features beyond basic chatting”. The classic TUI lives on at the v0.3.1 tag.
WeeChat + weechat-matrix
- What: a Matrix plugin for WeeChat (poljar/weechat-matrix).
- Status: the Python plugin is in maintenance mode; development moved to a Rust rewrite, weechat-matrix-rs. Good if you already live in WeeChat and want IRC, Slack and Matrix in one window.
IRC in the terminal
IRC is where terminal chat started, and its clients are the most mature software on this list. If your community or company still runs IRC (or a modern server like Ergo with history), any of these are excellent:
- WeeChat: extensible, scriptable, with a relay protocol for mobile and web front ends. Version 4.10.1 was released in September 2026. It’s also the host for wee-slack and weechat-matrix.
- irssi: the classic; stable and minimal, with a Perl scripting ecosystem going back decades.
- senpai: a modern Go client that “works best with bouncers”, designed around the soju bouncer and IRCv3 features like chat history.
- catgirl: a small C client, TLS only, for FreeBSD, OpenBSD, macOS and Linux.
The usual setup for always-on IRC is a bouncer (soju, ZNC) on a server, so you get history and stay connected while your laptop sleeps.
Discord in the terminal
Discordo
- What: a Discord TUI in Go (ayn2op/discordo).
- Status: very active, with commits every week; there are no versioned GitHub releases.
- Auth: your account’s password, a QR code or a token.
- The risk: a third-party client signs in as your user account. Discord’s policy is that automating normal user accounts outside the OAuth2/bot API “is forbidden, and can result in an account termination”. Discordo’s own README notes that self-bots are against the Terms of Service. Using a client by hand isn’t the same as automating an account, but Discord doesn’t sanction third-party clients either. Use an account you can afford to lose.
Zulip, Mattermost and Teams
- zulip-terminal (Python) is Zulip’s official terminal client. Its README describes a “fairly stable moderately-featureful everyday-user experience”. The last release is 0.7.0 from February 2023. Zulip’s topic-based threads suit a terminal well.
- matterhorn (Haskell) is a Mattermost client with a long history; its latest release came out in January 2026.
- Microsoft Teams: we found no maintained terminal client.
What to look for in a terminal chat client
Beyond “does it connect”, these are the things that decide whether you’ll still be using it in a month:
- Is the protocol meant for it? IRC, Matrix and Zulip publish APIs for clients. Slack and Discord don’t, so their terminal clients depend on tokens and endpoints that can change or be disallowed.
- Threads. Modern team chat runs on threads. A client that flattens them into the channel makes busy channels unreadable.
- Notifications and mentions. You need to know when someone needs you without watching every channel: a bell, desktop notifications or a mentions view.
- Images, code and diagrams. Some content doesn’t survive the terminal. Kitty, Ghostty, WezTerm and iTerm2 can show images inline; most clients don’t use that.
- Maintenance. Look at the last release, not the star count. Several popular Slack clients haven’t been updated since 2020 or 2021.
- Sign-in that respects your workspace. OAuth tokens that an admin can see and revoke are better than borrowed session cookies.
Hasarak’s terminal client
Hasarak is a team chat built with a terminal client as part of the product, not a third-party wrapper. Its TUI is written in Rust with ratatui, and the API client it uses is generated from the same OpenAPI spec as the web, desktop and mobile apps, so an API change is a compile error, not a broken client.
What it does today:
- Channels, threads,
@mentions, reactions and the inbox (mentions, thread replies and DMs, with done, snooze and undo). - Workspace pages: Markdown docs with tables, code blocks, images and
flowchartandsequenceDiagramMermaid diagrams, drawn with the Kitty graphics protocol in Kitty and Ghostty, iTerm2 images in iTerm2 and WezTerm, Sixel elsewhere, and coloured half-blocks as a fallback. - Vim keys and a
:command line, the same keys as the web app’s Minimal style (see the shortcuts cheat sheet). - Email and password sign-in, with the session stored with
0600permissions, andHASARAK_TOKENfor scripts. - A
--demoflag that starts a throwaway workspace with sample data.
What to know before trying it: there’s no public release of the TUI yet. The web app at app.hasarak.com is the released client, and the TUI uses the same keys as its Minimal style. And it only talks to Hasarak, so it’s an option if your team chooses Hasarak, not a way to reach your existing Slack.
More: terminal team chat with Hasarak and Hasarak for Vim users. If you’re comparing whole chat tools rather than clients, see Hasarak vs Slack, vs Zulip and vs Element.
Summary table
| Client | Protocol | Language | Latest activity (Oct 2026) | Main caveat |
|---|---|---|---|---|
| wee-slack | Slack (in WeeChat) | Python | Nightly builds; v2.11.0 in Oct 2024 | Session tokens unofficial |
| slack-term | Slack | Go | Last release Mar 2020 | Dormant |
| sclack | Slack | Python | Last commit May 2021 | Dormant |
| iamb | Matrix | Rust | v0.0.12, Sep 2026 | Pre-1.0 |
| gomuks | Matrix | Go | Release in Oct 2026 | New terminal UI experimental |
| weechat-matrix | Matrix (in WeeChat) | Python | Maintenance mode | Moving to a Rust rewrite |
| WeeChat | IRC + plugins | C | 4.10.1, Sep 2026 | Configuration takes time |
| irssi | IRC | C | Mature | IRC only |
| senpai | IRC | Go | See project page | Best with a bouncer |
| catgirl | IRC | C | Docs updated 2025 | TLS only, minimal |
| Discordo | Discord | Go | Weekly commits | Terms of Service risk |
| zulip-terminal | Zulip | Python | v0.7.0, Feb 2023 | Infrequent releases |
| matterhorn | Mattermost | Haskell | Release Jan 2026 | — |
| Hasarak TUI | Hasarak | Rust | No public release yet | Hasarak only |