You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Calascibetta Romain d903086d7e
Lint a bit the codebase (intf.)
1 week ago
bin Lint a bit the codebase (intf.) 1 week ago
mirage Apply ocamlformat 1 month ago
src Lint a bit the codebase (intf.) 1 week ago
test/rope Fix the rope implementation and the safe_iter_range 1 week ago
.gitignore Rename the project to catty 1 month ago
.ocamlformat Upgrade 3 months ago Update the and mention the mirror to 1 month ago
catty.opam Lint OPAM package and require OCaml 4.12.0 at least 1 month ago
dune-project First commit 3 months ago

Ca-tty, an IRC client as an unikernel

catty is an unikernel which launches an SSH server with an IRC client. The goal of this unikernel is to provide an easy way to deploy and run an IRC client and let the user to idle in IRC with the smallest resource as he/she can have.

The project is experimental.

How to test it?

Currently, we provide also a simple binary which can be used as an IRC client:

$ git clone
$ cd catty
$ opam pin add -yn .
$ opam install --deps-only catty
$ dune exec bin/catty.exe -- \
  --nickname dinosaure --nickname dinosaure1 --nickname dinosaure2 \
  --realname "Romain Calascibetta"

The executable produces a log.txt to help to debug.

How to use the interface?

The UI is like a Vim interface:

  • you have a mode
    1. the normal mode (the default one)
    2. the insertion mode (from the normal mode, you can tap i)
    3. the command mode (from the normal mode, you can tap :)
    4. you can come back to the normal mode with Esc

The normal mode let you to set the input. We advise the user to look into src/ to see modes and key bindings.

Possible commands?

Currently, catty implements few commands:

  • connect <server> to connect to an IRC server via TLS
  • whoami [<server>] to know which nickname you got
  • join [<server>] <channel> to join a channel

A basic usage will be:

  1. :, connect
  2. join #mirage
  3. Esc, i, tap your message

How to participate?

The most interesting way to participate is to try it and ask to implement features or implement by yourself what you want and propose a PR!

Currently, we use:

GitHub mirror

Currently, the GitHub repository is a mirror to You can make a pull-request on GitHub or directly on if you want.