New
Apps 1,461Makers 1,459This week 1,461
Promote your app−30%
opentui-irc screenshot 1
0views in
the last 30 days

opentui-irc

A friendly terminal IRC client for Linux and macOS, built with Bun, SolidJS and OpenTUI

Built with Claude Code

by benvinegar · Unclaimed · from CACanada · added Oct 29, 2026
no ratings0 comments

A friendly terminal IRC client for Linux and macOS. It has a channel/DM sidebar, one conversation at a time, and full mouse support with keyboard shortcuts throughout. Built with Bun, SolidJS and OpenTUI.

Status: alpha. It's the author's daily driver, but expect rough edges and breaking config changes before 1.0.

opentui-irc showing #lounge with a sidebar of channels and DMs, grouped messages with a reply and emoji reactions, and a member list

Why opentui-irc

  • Easy for newcomers. Add a network, join a channel and start chatting from menus. You don't need to know slash commands, but /help lists them.
  • Calm layout. Grouped messages, a sidebar with unread and mention badges, a member list on wide windows, and one footer showing the keys you can use right now.
  • Modern IRC where the server supports it. IRCv3 chat history, replies, reactions, typing indicators, read markers and message removal. Each one turns on only when the server offers it; the rest of IRC works as usual.
  • Safe by default. Verified TLS, and SASL only over TLS. Passwords live in your OS keychain or an environment variable, never in plaintext config. Uncertain sends are never replayed automatically.
  • Agents can configure it. A versioned JSON control API lets your coding agent read the config schema, preview changes and apply them, even while the client is running.

Screenshots

Click a message for actions Ctrl+K to jump anywhere
Message menu with copy, reply, react and about Jump-to palette listing conversations and actions
Light theme

opentui-irc in the light theme

Screenshots come from a local test server with made-up users.

Install

Requires Bun 1.3.14 or newer.

git clone https://github.com/benvinegar/opentui-irc.git && cd opentui-irc
bun install --frozen-lockfile
bun link        # adds `openirc` (and `opentui-irc`) to your PATH (~/.bun/bin)

bun link runs straight from the checkout. To update, git pull (and bun install if dependencies changed). To uninstall, run bun unlink.

Standalone binary: run bun run build to get dist/openirc, a single executable that needs neither Bun nor the source. Copy it anywhere on your PATH. It only runs on the OS and CPU it was built on.

Quick start

openirc
  1. Choose Set up a network. Presets fill in Libera.Chat and OFTC, or enter any TLS server.
  2. Pick a nickname. Optionally add your SASL account.
  3. Connect, then press Ctrl+J to join a channel.
Key Action
Ctrl+K Switch conversation / more actions
Ctrl+J Join a channel
Ctrl+F Search local history
Enter / Shift+Enter Send / new line
Tab Complete nicknames and commands
F1 Help
Ctrl+Q Quit

Click a message to copy, reply, react or open links. Click a nickname to see who they are. Drag across text to copy it.

Configuration

Settings are JSONC files you can edit by hand, change in the in-app Settings screen, or change through the control CLI:

openirc config get                                   # current settings
openirc config schema                                # every setting, with types and defaults
openirc config set tui.density '"comfortable"' --dry-run
openirc config set tui.density '"comfortable"'      # applies live if the client is running
openirc --check-config                               # validate the files
Data Location
Settings ${XDG_CONFIG_HOME:-~/.config}/openirc/openirc.jsonc and tui.jsonc
History ${XDG_DATA_HOME:-~/.local/share}/openirc/history.sqlite (Linux)
~/Library/Application Support/OpenIRC/history.sqlite (macOS)

To have a coding agent set things up for you, point it at docs/AGENT_GUIDE.md. By default the control socket can inspect and configure. Reading messages, sending chat and destructive actions each need a separate, explicit grant.

Good to know

  • History is local plaintext SQLite, kept for 30 days by default. You can turn off logging in Settings.
  • Closing the client disconnects. There's no background service; use a bouncer if you want to stay online.
  • Nicknames aren't identities. DMs are addressed by nickname, which anyone can take later. Check WHOIS before sharing anything private.
  • No link previews. Nothing is fetched automatically, and opening a link asks first.
  • Not included: plugins, scripting, DCC, moderation tools, split panes.

Docs

Contributing

Bug reports and pull requests are welcome. Read CONTRIBUTING.md first. In short:

bun install --frozen-lockfile   # also installs the pre-commit hook
bun run check                   # format, lint, types and every test

Node.js 24 is also needed for the Vitest suite. Tests use local fake IRC servers and never connect to public networks.

Security

Please report vulnerabilities privately; see SECURITY.md.

License

MIT © Ben Vinegar

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#irc · #cli · #tui