cio.1 (3746B)
1 .Dd May 1, 2026 2 .Dt CIO 1 3 .Os 4 .Sh NAME 5 .Nm cio 6 .Nd a minimal IRC client 7 . 8 .Sh SYNOPSIS 9 .Nm cio 10 .Op Fl vTV 11 .Op Fl l Ar logfile 12 .Op Fl n Ar nick 13 .Op Fl p Ar port 14 .Op Fl s Ar server 15 .Op Fl u Ar user 16 .Op Fl c Ar certificate 17 . 18 .Sh DESCRIPTION 19 .Nm 20 is a multiplexing curses interface for IRC featuring TLS, UTF-8, and scrollback. 21 .Nm 22 does not aim for complete coverage of rfc2812, but rather focuses on taking 23 design choices with the aim of creating hackable code that is easily extendable. 24 .Sh OPTIONS 25 .Bl -tag -width Ds 26 .It Fl T 27 Disable TLS and connect using a plaintext socket. 28 .It Fl V 29 Disable TLS hostname validation. 30 .It Fl l Ar logfile 31 Append all IRC activity, including timestamps and channel names, to 32 .Ar logfile . 33 .It Fl n Ar nick 34 Set the IRC nickname. 35 If not provided, 36 .Nm 37 will check the 38 .Ev IRCNICK 39 environment variable, then the 40 .Ev USER 41 variable. 42 .It Fl p Ar port 43 Connect to the server on 44 .Ar port . 45 Defaults to 6697. 46 .It Fl s Ar server 47 Connect to the IRC server at 48 .Ar server . 49 Defaults to irc.oftc.net. 50 .It Fl u Ar user 51 Set the IRC username (ident). 52 Defaults to the value of the 53 .Ev USER 54 environment variable, or "anonymous". 55 .It Fl c Ar certificate 56 Use 57 .Ar certificate 58 as a TLS client certificate. 59 This is used for both establishing the encrypted connection and for SASL 60 EXTERNAL (CertFP) authentication. 61 .El 62 . 63 .Sh COMMANDS 64 .Ss Chat Commands 65 Chat commands are submitted with a newline. 66 They are not prepended with a '/'. 67 Any text not matching a command is sent as a message to the currently 68 focused channel. 69 .Bl -tag -width Ds 70 .It Ic j Ar #channel 71 Join a given channel 72 .It Ic l Op Ar #channel 73 Leave the given channel(s), defaults to current channel. 74 .It Ic m Ar recipient message 75 Sends a private message. 76 .It Ic r Ar message 77 Sends a raw IRC message to the server. 78 .It Ic q 79 Quits 80 .Nm . 81 .El 82 .Ss Interface Commands 83 .Bl -tag -width Ds 84 .It Ic ^n 85 Increases focused window index by 1 (wrapping). 86 .It Ic ^p 87 Decreases focused window index by 1 (wrapping). 88 .It Ic PAGEUP 89 Scrolls chat up by 15 lines. 90 .It Ic PAGEDOWN 91 Scrolls chat down by 15 lines. 92 .El 93 .Ss Line Editing 94 The following key bindings are available when entering text: 95 .Bl -tag -width Ds 96 .It Ic ^A 97 Move cursor to the beginning of the line. 98 .It Ic ^E 99 Move cursor to the end of the line. 100 .It Ic ^B No \&| Ic LEFTARROW 101 Move cursor one character to the left. 102 .It Ic ^F No \&| Ic RIGHTARROW 103 Move cursor one character to the right. 104 .It Ic ^K 105 Delete from the cursor to the end of the line. 106 .It Ic ^U 107 Delete from the beginning of the line to the cursor. 108 .It Ic ^D 109 Delete character under the cursor. 110 .It Ic ^H 111 Delete character to the left of the cursor. 112 .It Ic ^W 113 Delete word to the left of the cursor. 114 .It Ic BACKSPACE 115 Delete character to the left of the cursor. 116 .It Ic ENTER 117 Submit current line. 118 .El 119 . 120 .Sh ENVIRONMENT 121 .Bl -tag -width Ds 122 .It Ev USER 123 The username to use. 124 Overridden by 125 .Fl u . 126 .It Ev IRCNICK 127 The nickname to use. 128 Overridden by 129 .Fl n . 130 .It Ev IRCPASS 131 The password to used for SASL PLAIN authentication. 132 This is used if no certificate is provided via 133 .Fl c . 134 .El 135 . 136 .Sh EXIT STATUS 137 .Nm 138 exits 0 if requested by the user and >0 if any other error occurs. 139 .Sh EXAMPLES 140 .Ss Using CertFP 141 .Bl -enum 142 .It 143 Generate a new TLS client certificate: 144 .Bd -literal 145 $ openssl req -x509 -newkey rsa:4096 -nodes -days 365 \\ 146 -keyout user.pem -out user.pem -subj "/CN=CertFP" 147 $ chmod 600 user.pem 148 .Ed 149 .It 150 Connect to the server using the certificate: 151 .Bd -literal 152 $ cio -c user.pem 153 .Ed 154 .It 155 Identify with the server normally then add the certificate fingerprint to 156 your account: 157 .Bd -literal 158 m nickserv cert add 159 .Ed 160 .El 161 . 162 .Sh HISTORY 163 .Nm 164 is a fork of 165 .Lk https://c9x.me/irc/ irc.c 166 written by 167 .An Quentin Carbonneaux Aq Mt qcarbonneaux@gmail.com . 168 . 169 .Sh AUTHORS 170 .An Andrew Kloet Aq Mt andrew@kloet.net