|README(7)||Miscellaneous Information Manual||README(7)|
pounce — IRC
pounce(1) is a multi-client,
TLS-only IRC bouncer. It maintains a persistent connection to an IRC server,
acting as a proxy and buffer for a number of clients. When a client
connects, any messages received since it last disconnected will be relayed
to it. Unlike some other bouncers,
pounce uses a
single buffer for all IRC messages, which acts as a queue from which each
client reads messages independently.
pounce speaks regular modern IRC to both
servers and clients, using the server-time extension to
indicate when messages originally occurred. Clients identify themselves to
pounce by their IRC usernames. See
QUIRKS(7) for notes on connecting
pounce with particular networks and clients.
As a former znc(1) user, I was dissatisfied with the multi-client experience it offered. I wanted to connect from both my laptop and my phone and have full chat history on both. With znc(1), my options were either having both clients spammed with redundant history every time they connect, or having one client consume the buffer and the other get no history at all.
With a multiple-consumer ring buffer, each client has its own place in the history and can be brought up to date independently. Additionally, by expecting clients to implement the server-time extension, all events can be accurately replayed, rather than being limited to messages.
pounce requires libtls,
provided by either
(for OpenSSL) or by LibreSSL.
libtls may be packaged for your system. Check the Repology
pounce primarily targets
OpenBSD, where it is sandboxed with
FreeBSD, Linux and macOS are also supported.
./configure make all sudo make install
If installing libtls manually to
/usr/local, for example, make sure
/usr/local/lib appears in
/etc/ld.so.conf.d/* and be sure to run
ldconfig(8) once the library is
./configure to find it.
On FreeBSD and
OpenBSD the recommended way to run
pounce is with the process supervisor
Additional functionality can be provided by special-purpose
clients connected to
- provides logging and search.
- provides notifications by running an external command. Configure with
- provides push notifications for the Palaver IRC app. Configure with
--enable-palaverto build. Requires libcurl and libsqlite3.
- declarations and common functions
- configuration and event loop
- local server binding
- remote server connection
- remote client connections
- state shared between clients
- buffer between server and clients
- getopt_long(3)-integrated configuration parsing
- XDG base directories
- SNI socket dispatch
The upstream URL of this project is ⟨https://git.causal.agency/pounce⟩. Contributions in any form can be sent to <firstname.lastname@example.org>. For sending patches by email, see ⟨https://git-send-email.io⟩. Mailing list archives are available at ⟨https://causal.agency/list/pounce.html⟩.
Monetary contributions can be donated via Liberapay.
Central logging with full-text search: litterbox
June McEnroe, IRC Suite, https://text.causal.agency/010-irc-suite.txt, June 19, 2020.
|July 16, 2022||Causal Agency|