A modular IRCv3 client library in Rust
Add I/O timeout support to Client
Fix bad handling of certain invalid tag strings
Add MVP of an all-in-one Client struct



You can also use your local clone with git send-email.

vinezombie is a work in progress. Use with care. It may have bugs, and there will be further breaking 0.x releases. Expect many more features in the future.


A modular IRCv3 library in Rust.

CI crates.io API docs Chat on libera.chat

vinezombie is a Rust library for writing IRCv3 software (mostly clients/bots at this time).


  • An emphasis on correctness; without using unsafe, it should be impossible to construct a correctly-sized message that, once written, does not parse into the same message.
  • Zero-copy parsing of IRC messages.
  • An implementation of IRCv3 connection registration, including SASL.
  • Convenience utilities for creating asynchronous TLS connections.
  • Minimal mandatory dependencies.
  • Designed to be flexible and modular, usable as either a library or a highly pluggable framework.

#Building Documentation and Examples

To build and view the documentation locally, run:

RUSTDOCFLAGS="--cfg doc_unstable" cargo +nightly doc --all-features --open`

The strings diagram in doc can be re-rendered using:

d2 -t 200 -l dagre --pad 0 doc/strings.d2 doc/strings.d2.svg

vinezombie's examples may use any combination of its features, and should be built with --all-features.


vinezombie is licensed under the GNU GPL v3 (only). Unless otherwise specified, all contributions submitted by you for inclusion will be licensed as the rest of the library.

Disclosing the source code of bots written using vinezombie to end users over IRC is also strongly encouraged, but not required.


If you wish to discuss vinezombie's development in soft-realtime, our official IRC channel is #vinezombie on Libera.Chat. A link to a webchat is available at the top by clicking the libera.chat badge.

<jess> why vinezombie lmao
<TheDaemoness> Because. Grapevines. Undead chat protocols.
<jess> oh my god