No items found.


To use free and open source software for persistent messaging that can be used both with we browser and mobile app, that provides features known in Slack and Microsoft teams but with options to use fine-grained discussions and ability to be visually customized and to connect to other applications/services.

Description of the tool

ZULIP offers many Internet Relay Chat (IRC) style features, including persistent chat organized by topic, private groups, and direct messaging. Communication occurs in streams (channels in IRC). Each stream can have several topics - Zulip features a unique threading model, in which each message also has a topic, along with the content. Zulip claims that this improves productivity by "making easy to catch up after a day of meetings".
Zulip offers standard features of collaboration apps like message reactions, message search history, polls, private messaging, group messaging etc. Zulip streams can be private or public - only people invited to a private stream can view messages in it, while anyone within an organization can join a public stream.
Messages in Zulip can be sent in plain-text or formatted using markdown, along with images, links, and file attachments. Zulip is inspired by email’s highly effective threading model: Every channel message has a topic, just like every message in email has a subject line. Zulip Topics hold Zulip conversations together, just like subject lines hold email conversations together.

Zulip also offers support for native integrations with hundreds of services, which can extend its functionality, as well as to connect to IRC and XMPP messaging

Steps of application

Production Installation

You’ll need an Ubuntu or Debian system that satisfies the installation requirements. Alternatively, you can use a preconfigured Digital Ocean droplet, or Zulip’s experimental Docker image.

Note that if you’re developing for Zulip, you should install Zulip’s development environment instead. If you’re just looking to play around with Zulip and see what it looks like, you can create a test organization at

Step 1: Download the latest release

Download and unpack the latest built server tarball with the following commands:

cd $(mktemp -d)


tar -xf zulip-server-latest.tar.gz

Step 2: Install Zulip

To set up Zulip with the most common configuration, you can run the installer as follows:

sudo -s  # If not already root

./zulip-server-*/scripts/setup/install --certbot \

    --email=YOUR_EMAIL --hostname=YOUR_HOSTNAME

This takes a few minutes to run, as it installs Zulip’s dependencies. For more on what the installer does, see details below.

If the script gives an error, consult Troubleshooting below.

Installer options
  • The email address of the person or team who should get support and error emails from this Zulip server. This becomes ZULIP_ADMINISTRATOR (docs) in the Zulip settings.
  • The user-accessible domain name for this Zulip server, i.e., what users will type in their web browser. This becomes EXTERNAL_HOST (docs) in the Zulip settings.
  • --self-signed-cert: With this option, the Zulip installer generates a self-signed SSL certificate for the server. This isn’t suitable for production use, but may be convenient for testing.
  • --certbot: With this option, the Zulip installer automatically obtains an SSL certificate for the server using Certbot. If you’d prefer to acquire an SSL certificate yourself in any other way, it’s easy to provide it to Zulip.
Step 3: Create a Zulip organization, and log in

On success, the install script prints a link. If you’re restoring a backup or importing your data from HipChat, Slack, or another Zulip server, you should stop here and return to the import instructions.

Otherwise, open the link in a browser. Follow the prompts to set up your organization, and your own user account as an administrator. Then, log in!

The link is a secure one-time-use link. If you need another later, you can generate a new one by running generate_realm_creation_link on the server. See also our doc on running multiple organizations on the same server if that’s what you’re planning to do.

Step 4: Configure and use

To really see Zulip in action, you’ll need to get the people you work together with using it with you.

Learning more:

Details: What the installer does

The install script does several things:

  • Creates the zulip user, which the various Zulip servers will run as.
  • Creates /home/zulip/deployments/, which the Zulip code for this deployment (and future deployments when you upgrade) goes into. At the very end of the install process, the script moves the Zulip code tree it’s running from (which you unpacked from a tarball above) to a directory there, and makes /home/zulip/deployments/current as a symbolic link to it.
  • Installs Zulip’s various dependencies.
  • Configures the various third-party services Zulip uses, including Postgres, RabbitMQ, Memcached and Redis.
  • Initializes Zulip’s database.

If you’d like to deploy Zulip with these services on different machines, check out our deployment options documentation.


Install script. The Zulip install script is designed to be idempotent. This means that if it fails, then once you’ve corrected the cause of the failure, you can just rerun the script.

The install script automatically logs a transcript to /var/log/zulip/install.log. In case of failure, you might find the log handy for resolving the issue. Please include a copy of this log file in any bug reports.

The zulip user’s password. By default, the zulip user doesn’t have a password, and is intended to be accessed by su zulip from the root user (or via SSH keys or a password, if you want to set those up, but that’s up to you as the system administrator). Most people who are prompted for a password when running su zulip turn out to already have switched to the zulip user earlier in their session, and can just skip that step.

After the install script. If you get an error after scripts/setup/install completes, check the bottom of /var/log/zulip/errors.log for a traceback, and consult the troubleshooting section for advice on how to debug.

Community. If the tips above don’t help, please visit #production help in the Zulip development community server for realtime help or email with the full traceback, and we’ll try to help you out! Please provide details like the full traceback from the bottom of /var/log/zulip/errors.log in your report.

For further information:


Internet Relay Chat (IRC) is one of the original text-based internet protocols dating long before the birth of the World Wide Web. With the advancement and popularization of WWW, many users were in need of a more visual and feature rich system for communication beyond the initial and basic IRC. Though many systems developed became popular among private users, business users did not have a clear winner in the field. Commercial software Slack offers many IRC-style features, including persistent chat rooms (channels) organized by topic, private groups, and direct messaging. It also added many features for business convenience.
Slack was previously compatible with non-proprietary IRC and XMPP messaging protocols, but the company moved away from standards and closed the gateways in 2018. Support for Linux was missing or late. Number of alternatives to Slack emerged as open source and standard following projects already years before and with increasing differences between approaches Zulip emerged as one of the most prominent alternatives (together with Mattermost).
Zulip was originally developed by Zulip, Inc., a small startup in Cambridge, Massachusetts. Zulip, Inc. was founded by the MIT team that previously created software for live-patching a running Linux kernel. Zulip was inspired by the BarnOwl client for the Zephyr chat protocol, and the incredible community that Zephyr supported at MIT.
Zulip, Inc. was acquired by Dropbox in early 2014, while the product was still in private beta. Beta users loved Zulip’s unique user experience and continued using it, despite the fact that the product was not being actively developed. Dropbox soon generously decided to release Zulip as open source software so that Zulip’s users could continue enjoying the software.
First time the public had the opportunity to use Zulip was when Dropbox released Zulip as open source software in late 2015. The open sourcing announcement was very popular.
Zulip was open sourced with the complete version control history intact because 10 Zulip users visited Dropbox for a full week to help with the technical work. Zulip open source project was maintained with just a bit of lead developer Tim Abbott’s free time, steadily the community gained new contributors to be one of the world’s largest and most active open source projects with milestones below:2015, the open source project was going strong with a community of dozens of developers around the world. 2016, more than 150 people from all over the world had contributed almost 1000 pull requests to the software, and the Zulip project was moving faster than when the original startup employed 11 full-time engineers. Tim Abbott started Kandra Labs, to steward and financially sustain development.  2017, Kandra Labs offers hosted service at, and an enterprise support product for on-premise deployments.2018, the Zulip server project had contributions by over 400 developers.

Kandra Labs is supported by nearly $1M in SBIR grants from the US National Science Foundation, and Zulip has benefitted enormously from the 30+ developers that started working on Zulip via Google Summer of Code and Google Code-In.

Context of origin

Visual representation




ZULIP should be adopted by all that care about price, flexibility, data privacy and freedom to customize and use open standards. Ideally it should be introduced at the start of the project and presented to all participants in order to avoid fragmentation with other messengers, email and mailing lists.


Kandra Labs, Inc.  Original author Tim Abbott and Jessica McKellar 

With over 600 contributors now