repartee-0.4.0 is not a library.
Repartee
A modern terminal IRC client built with Rust, Ratatui, and Tokio.
Inspired by irssi. Designed for the future.
Features
- Full IRC protocol — channels, queries, CTCP, TLS, channel modes, ban/except/invex lists
- IRCv3 — server-time, echo-message, away-notify, account-notify, chghost, multi-prefix, BATCH netsplit grouping, message-tags, and more
- SASL — PLAIN, EXTERNAL (client certificate), and SCRAM-SHA-256
- irssi-style navigation — Esc+1–9 window switching, aliases, familiar
/commands - Mouse support — click buffers and nicks, scroll chat history
- Lua 5.4 scripting — event bus, custom commands, full IRC and state access, sandboxed per-script environments
- Persistent logging — SQLite with WAL, FTS5 full-text search, optional AES-256-GCM encryption
- Netsplit detection — batches join/part floods into single events
- Flood protection — blocks CTCP spam and nick-change floods automatically
- Theming — irssi-compatible format strings with 24-bit color support and custom abstracts
- Web frontend — built-in HTTPS web UI with mobile support, real-time sync with the terminal, swipe gestures, 5 themes
- DCC CHAT — direct client-to-client messaging with active and passive (reverse) connections
- Spell check — inline correction with Hunspell dictionaries, multilingual, Tab to cycle suggestions
- Detach & reattach — detach from your terminal and reattach later; IRC connections stay alive
- Extban —
$a:accountban type with/ban -ashorthand - Single binary — ~5.5MB, zero runtime dependencies (SQLite, Lua, and WASM frontend bundled)
Installation
From source
Requirements
- Rust 1.85+ (2024 edition) — install via rustup
- A terminal with 256-color or truecolor support (iTerm2, Alacritty, kitty, WezTerm, etc.)
- A modern web browser for the web frontend (optional)
Quick Start
Launch repartee:
Add a server and connect:
/server add libera irc.libera.chat
/connect libera
/join #repartee
Or edit ~/.repartee/config.toml directly:
[]
= "Libera"
= "irc.libera.chat"
= 6697
= true
= true
= ["#repartee"]
Key Bindings
| Key | Action |
|---|---|
Esc + 1–9 |
Switch to buffer |
Ctrl+N / Ctrl+P |
Next / previous buffer |
Tab |
Nick completion |
Up / Down |
Input history |
Mouse click |
Select buffer or nick |
Mouse wheel |
Scroll chat |
Ctrl+\ |
Detach from terminal |
Ctrl+Z |
Detach from terminal |
Directory Layout
~/.repartee/
config.toml # main configuration
.env # credentials (SASL passwords, log encryption key)
themes/ # custom .theme files
scripts/ # Lua scripts
logs/messages.db # chat logs (SQLite)
sessions/ # Unix sockets for detached sessions
Sessions & Detach
repartee can run in the background while you close your terminal:
# Detach: press Ctrl+\ or type /detach — terminal is restored
# Reattach from any terminal:
# Or start headless (no terminal needed):
Everything survives detach — IRC connections, scrollback, scripts, and channel state.
Scripting
Scripts are Lua 5.4 files placed in ~/.repartee/scripts/:
meta =
Load at runtime:
/script load hello
Or autoload in config:
[]
= ["hello"]
Theming
Themes are TOML files in ~/.repartee/themes/ using irssi-compatible format strings with 24-bit color extensions:
[]
= "1a1b26"
= "a9b1d6"
= "e0af68"
= "7aa2f7"
[]
= "{pubmsgnick $0}$1"
= "{ownmsgnick $0}$1"
Set the active theme:
[]
= "mytheme"
Documentation
Full documentation is available at outragedevs.github.io/repartee.
- Installation
- First Connection
- Configuration Reference
- Command List
- Web Frontend
- Sessions & Detach
- Scripting API
- Theming
- Logging & Search
License
MIT — see LICENSE.