The Terminal Obby — a keyboard-driven IRC client for the terminal.
# Arch Linux (no dependencies):
yay -S tobby-bin
# npm (requires Bun):
npm install -g @mattfillipe/tobby
# or run without installing (requires Bun):
npx @mattfillipe/tobby
# or just run without running
ssh h4ks.comtobby
# to see more options:
tobby --helpPress Ctrl+K to open the action menu. From there you can connect to a server and join channels.
Join a channel with /join #channel or open the action menu with Ctrl+K and select "Join channel". To send a message, just start typing. Press Enter to send, or Shift+Enter for a new line.
To react, reply hit Ctrl+Space to enter message selection mode, navigate to the message with arrows or j/k, and press r to reply or e to add reactions.
| Key | Action |
|---|---|
Ctrl+K |
Open action menu (connect, join, disconnect, …) |
Ctrl+Space / Alt+K / Alt+↑ / Shift+↑ |
Enter message selection / scroll mode |
Ctrl+G |
Toggle members sidebar |
Ctrl+L |
Clear current buffer |
Ctrl+O |
Toggle multiline expand |
Ctrl+M |
Toggle multiline always-on |
Alt+[1-9] |
Switch to buffer by number |
Alt+N / Alt+P |
Next / previous buffer |
Tab |
Tab-complete nicks and commands |
| Key | Action |
|---|---|
j / k |
Move down / up |
g / G |
Jump to top / bottom |
y |
Yank (copy) selected message |
r |
Reply to selected message |
R |
Add emoji reaction |
Esc |
Exit selection mode |
| Key | Action |
|---|---|
Enter |
New line |
Ctrl+Enter |
Send message |
- IRCv3: multiline messages, emoji reactions, edit/delete, replies, SASL PLAIN/EXTERNAL,
echo-message,chathistory - Three-pane layout: server tree · message buffer · user list
- Channel browser (
/list) - Nick tab completion with fuzzy emoji picker for reactions
- Typing notifications
- vim-like keybindings for navigation and message selection
- Multi-line support with collapsible messages
- Persistent config and chat history (SQLite)
git clone https://github.com/ObsidianIRC/tobby
cd tobby
git submodule update --init ObsidianIRC
bun install
bun run devRun tests and checks:
bun run lint:fix && bun run format && bun run testAlternatively setup pre-commit hooks.
bun run prepareBuild distributable:
bun run build # outputs dist/index.js (minified)
# install locally:
npm install -g .