Fork me on GitHub

Vines Overview

Vines contains three different components, distributed as Ruby gems: vines, the base chat server, vines-agent that's installed on each server, and vines-services, the data server with which the agents interact.

Chat Server

The vines gem installs a fully standards-compliant XMPP chat server without any agents or services. If we're just looking for a chat server for our team that's easy to install and maintain, we can simply install this gem and ignore the other two components.

The server is the centralized process to which the other components connect, so this gem is typically only installed on one machine.


The vines-agent gem installs an XMPP bot that connects to the chat server and waits for shell commands to execute. The agent enforces access control permissions so chat users can only execute commands on the system as approved unix accounts.

This gem is installed to each machine on which we'd like to run commands. The agent requires the services component to be installed on the chat server.

Services Component

The vines-services gem installs an external XMPP component that connects to the chat server. This component provides the web user interface and data access to the agents. This is typically installed wherever the vines gem is installed, not on each agent machine.

While the base Vines chat server is capable to storing data in a number of databases, the Vines Services product requires an Apache CouchDB database. CouchDB provides the features needed to quickly and dynamically group servers based on their attributes.