Convos got a built in pastebin

Convos has a high focus on privacy. Convos can be run on closed network, and no external resources on the public internet should ever be needed. This ideas was also taken into consideration when we decided bundle a pastebin with Convos. The pastebin implementation stores the data in CONVOS_HOME, meaning you are in full control of the data shared.

The pastebin works like this:

  1. Copy a chunk of multiline text
  2. Paste it into the the input text box in a conversation
  3. Hit enter
  4. Convos will create a paste, and send the link to the past as a message

Here is an example paste:

Example paste

Multiline messages

If the text is three lines (subject to change) or less, then Convos will simply send the them as three messages instead. There is an environment variable that decides how many lines you need to have before it is converted to a paste. It is not public, so changing this might not work in the future, but if you want to play around and tweak the setting, you can try the command below:

$ CONVOS_MAX_BULK_MESSAGE_SIZE=1 ./script/convos daemon

External pastebin service

There are currently no plan to implement support for sending a paste to an external service, but that doesn’t prevent you from making your own. The pastebin is implemented as a plugin, meaning you can create your own and load that instead.

The plugin simply listens to a multiline_message event and creates a paste based on the information from the backend. Below is an alternative that post the paste to

$app->core->backend->on(multiline_message => sub {
    my ($backend, $connection, $text, $cb) = @_;
    $app->ua->post("", form => {"f:1" => $$text}, sub {
      my ($ua, $tx) = @_;
      my $err = $tx->error ? $tx->error->{message} : "";
      $backend->$cb($err, $tx->res->body);

The $connection object is there so you can get the user object, which again can hold authentication details for the paste service. Note that this is currently not implemented in the frontend, but this can of course be changed.

After all… Convos is Open Source!

Want to know more?

Please contact us if you’re interested into learning more about how to make a plugin, or have questions about Convos in general.

Convos version 0.99_33 is out with bugfixes

Version 0.99_33 has been released with a bunch of updates. Run the install command to get the latest version!

IRC servers with credentials

A Convos user reported in that username/password was not handled correctly when you click “Save”. The existing logic at the time was very complicated and therefor also very buggy. The idea was that the password submitted on web should not be sent back to the web interface, because of security concerns. This logic is now changed, since we think there’s no issue sending the password over the web as long as you protect your Convos installation with HTTPS.

And you do protect Convos with HTTPS, right..?

Online/offline state for private dialogs

Version 0.99_31 was released with a new method to detect if the user in a private dialog is online or not: Convos now uses the ISON command instead of WHOIS. This change was introduced since ISON is a much lighter command to run, and simply answers the question we want to know: Is this user online? The problem with “ISON” is that the returned data looks like this:

:hybrid8.debian.local 303 test21362 :
:hybrid8.debian.local 303 test21362 :superman

The first reply is for an offline user, while the second is for a user that is online. This looks quite sane, but it does not seem like the IRC server returns the ISON reply in the same order as it is sent, so it’s hard to track if the offline response was for “superman” or some other nick, before you have received all the replies. This logic is now improved in version 0.99_33 and seems to work as expected.

I wonder if I have misunderstood something. Please contact me, if you have any information regarding this.

Active user tracking

Users in a channel has improved “active” tracking, which means that Convos will track users who was active as well as currently active users. This helps the autocomplete to order the nick list by last seen in the dialog. Pressing “tab” will now autocomplete the last user who said anything in the dialog, which makes sense since it’s probably the person you want to reply to.

As a sidenote: The autocomplete has a better matcher for emojis, so you don’t need to remember the emoji name exactly by name.


Hope you enjoy these changes! Like to see your favorite chat feature implemented? Then get involved. Need some help? Ask us in #convos on

Convos version 0.99_24 is out

Version 0.99_24 is out in the wild. This release feature some cool changes in the user interface, but also some important bug fixes.

Listing of available rooms

The “Join dialog” page now shows a list of available rooms, which makes it more intuitive and easy to find the correct chat room to join. The “Dialog name” input field can be used to search in the list of available rooms. The default list is sorted by number of participants, which makes it easy to find the most popular rooms on the current server.

Join dialog

You can now send any IRC command

There used to be a limitation to which IRC commands you could send. This limitation is now removed.

Convos still handle some commands with custom logic (such as JOIN, WHOIS, …), but other commands (such as WHOWAS) is now sent and received as raw IRC messages. Please let us know if your favorite IRC command should get some extra love, so it will render in a more pleasing way.

Bug fixes

This version includes some bug fixes, here are the two most important fixes:

  • Fix registration process: There used to be a bug which require you to refresh the browser window, after adding a new server. This is now fixed.
  • You can now go to the profile and help pages while running the initial registration wizard.


So what are you waiting for? Get the new version of Convos now!

And don’t forget to contact us if something doesn’t work as expected, or you just want to say hi.

Convos version 0.99_21 is out

Version 0.99_21 is fresh from the bakery! Run the install command to get the latest version.

Who’s in the current dialog?

Getting the participant list did not work when joining a dialog. It also failed when reconnecting to a server. Both of these issues are now fixed.

The participant list will also reload when the websocket connection is restarted.

Version 0.99_16 also add special styling to indicate if a user in a channel is currently active or not: A user who have left the channel will be rendered with “strike through” to indicate that the user is no longer present in the dialog.

Convos behind a reverse proxy

Convos has always worked behind a reverse proxy, but there was a bug which did not allow it to be mounted under a custom base path.

This bug was fixed in the beginning of December, making both location with and without a path working:

# Always worked
location / { ... }

# Now fixed
location /whatever/convos { ... }

Organization URL

You can now change the organization url to point to your own website.

On connect commands

Version 0.99_17 added support for defining and editing “on connect commands”. This allows commands such as /msg NickServ identify supersecretpassword to be run automatically when you connect to an IRC server.

Closing dialogs

You can now close dialogs directly from the dialog list, instead of clicking on the dialog first.


Want more details? Check out the Changelog, or come and talk to us.

Convos loves Docker

We now have an official Docker file for Convos! The image is based on Alpine 3.5, making it very small and easy to install. You can get up and running with these commands:

# Build
$ docker build --no-cache --rm -t nordaaker/convos .
# Run
$ docker run -it --rm -p 8080:3000 -v /var/convos/data:/data nordaaker/convos

8080 is the port where you want Convos to be exposed and /var/convos/data is where you want to store settings and logs on the host machine.

We have plans for other ways to install/run Convos. Have a look at issue #285 for more details. We welcome any help and input on making official Convos packages and easy “install buttons”.