v2.2.1Native Soju & Lurker bouncer support

Keyboard first. Open source. Unmistakably IRC.

A modern terminal IRC client. Built in Rust.

The speed and familiarity of irssi, with the capabilities of a modern IRC client. Connect to your networks, switch between terminal and browser, and make the experience your own.

Leave the terminal. Keep the conversation.Built-in detach & attach keeps your IRC connections alive. Pick up where you left off — without tmux or screen.
cargo install --locked repartee

repartee — Libera.Chat · #libera
Repartee running in a terminal: multi-network buffer list, chat view with join/quit events and a colour-coded nick list.
Actual Repartee screenshotsExplore settings
  • Open source, MIT
  • ~24 MB single binary
  • 3,043 tests
  • Linux · macOS · FreeBSD

Built-in settings

Configure everything without leaving the terminal

No hand-editing config files required. A searchable settings interface opens on top of your chat and writes straight to ~/.repartee/config.toml.

/config

Networks, SASL and DCC, managed in place

Open settings over a live channel, add or edit servers and switch between networks with Ctrl+←/→. Changes apply as soon as you save.

  • Your conversation stays visible behind the overlay
  • Servers, TLS certificates, SASL and bouncers in one place
  • Fully keyboard-driven — Tab, Ctrl+←/→, Ctrl+S
repartee — Settings › Networks & Connections
/wizard

Every option, one search away

Ten clear categories, from appearance and notifications to E2E encryption and translation. Press Ctrl+F to find any setting by name.

  • Ten categories, every option documented
  • Edited fields are marked until you save
  • Kept in sync with /set and config.toml
repartee — Settings › Appearance

Protocol

RPE2E v1: native E2E for repartee, with companion scripts for WeeChat and irssi/erssi

RPE2E is Repartee End-to-End: a compact IRC-oriented protocol that adds end-to-end encryption for channels and private messages without changing the transport. repartee ships the native implementation, and matching scripts are available for WeeChat and irssi-compatible clients including erssi. erssi project.

Technical spec, not just a user guide

The protocol page documents wire identifiers, CTCP handshake frames, chunk format, AAD layout, the recipient-keyed per-direction DM context, replay window, trust model, and current v1 security tradeoffs directly from the implementation.

Cross-client interop

The same RPE2E v1 wire format is implemented in repartee plus companion scripts for WeeChat and irssi/erssi, so encrypted conversations can work across clients.

Scripts and requirements

The protocol page also links to the official scripts tree and lists what is required to run the Python and Perl clients correctly.

Built with modern tools

A robust foundation for a reliable client

RustMemory-safe, zero-cost abstractions
RatatuiTerminal UI framework
TokioAsync runtime
AxumWeb server
LeptosWASM web UI
SQLitePersistent storage
Lua 5.4Scripting engine
HunspellSpell checking

Everything you need, nothing you don't

Terminal-first, zero-compromise. No Electron, no heavy runtime. The TUI is the primary interface.

First-Class Bouncers

Native Soju and Lurker integration: network discovery, BOUNCER BIND, CHATHISTORY TARGETS, read-marker sync, /bsearch, /bmeta, /bcert, WebPush, and FILEHOST uploads.

Live AI Translation

Translate incoming and outgoing IRC conversations per buffer across 8 languages, with multi-provider fallbacks, privacy masking, quality gates, and a channel wizard.

Web Frontend

Built-in HTTPS web UI with mobile support, shared /wizard settings panel, WebPush notifications, and real-time 1:1 terminal sync.

IRCv3 Capabilities

server-time, echo-message, labeled-response, CHATHISTORY, read-marker, message-redaction, account-registration, extended-monitor, setname, +typing, and more.

Full IRC Protocol

Channels, queries, CTCP, TLS, themed WHOIS, MONITOR nick watching, and modern SASL including OAUTHBEARER, SCRAM-SHA-1/256/512, EXTERNAL, and ECDSA.

irssi-style Navigation

Alt+1–9 window switching, Alt+A unread jump, /bind custom key sequences, /bare selection mode, and /wizard settings UI.

Lua Scripting

Lua 5.4 scripts with an event bus, custom commands, persistent per-script settings, and full IRC/state access.

Server History

CHATHISTORY TARGETS discovery, scrollback paging, automatic reconnect gap-fill, read-marker sync, and /bsearch server-side search.

Encrypted Logging

SQLite with optional AES-256-GCM encryption and FTS5 full-text search across all logs.

24-bit Theming

irssi-compatible format strings with true color support. Custom abstracts and color schemes.

Image Preview

Popup and inline chat image thumbnails (`image_preview.inline`) with Kitty, iTerm2, Sixel, and Halfblocks protocols.

Embedded Shell

Full PTY terminal inside Repartee — run vim, btop, or any command without leaving the client.

Detach & Reattach

Detach from your terminal and reattach later — IRC connections stay alive. Like tmux, built in.

Typing Indicators

The ratified IRCv3 +typing tag: see who is composing, in both the TUI status line and the web UI. Sending is toggleable per channel and query.

URL Shortener

Built-in shr.al-compatible client. Long URLs you send and receive are shortened inline, with an [host] hint and a phishing-aware host extractor.

Inline Emotes

183 built-in GG7 :name: emotes render inline in the TUI and web, with emote & emoji pickers (Ctrl+G) and tab-completion.

Spell Checking

Multilingual inline checking with Hunspell dictionaries and a 7,400-word IT dictionary.

DCC CHAT

Direct client-to-client messaging with active and passive connections, auto-accept masks.

Netsplit Detection

Batches join/part floods into single events so your scrollback stays readable.

Flood Protection

Blocks CTCP spam and nick-change floods automatically, and honors provider SAFERATE outbound limits.

Extended Bans

WHOX account tracking and extban support — ban by account name with /ban -a.

Single Binary

Compiles to a ~24MB standalone executable with WASM web frontend bundled.

Quick Install

Get up and running in seconds. No build steps, no configuration required.

Install from crates.io

cargo install --locked repartee

Then just run:

$repartee
$/server add libera irc.libera.chat:6697 --tls
$/connect libera

Config stored at ~/.repartee/config.toml