Install, Configure, and Run the Game

The service supports both authenticated SSH terminal clients as well as unauthenticated browser-based web clients. A single service supports both types of clients.

Installing the Software

Installing from the Python Package Index (PyPi)

txwerewolves can be installed from the Python Package Index. Althought not specifically required, I strongly recommend installing into a Python virtual environment. I like to use virtualenvwrapper .

$ mkvirtualenv wolfenv
(wolfenv)$ pip install txwerewolves

Installing from cloned Github repo

Clone the source repository and install the dependencies via pip into a Python virtualenv.


$ git clone
$ cd txwerewolves
$ pipenv install

The last command uses pipenv to install the dependencies in Pipfile.lock. This command can fail if operating system dependencies are not satisfied. Satisfying those dependencies isn’t covered here.

SSH Service Configuration

To set up the SSH service you need to create a randomly generated SSH key pair:

$ mkdir -p ~/.txwerewolvesrc/ssh_keys
$ ckeygen -t rsa -f ~/.txwerewolvesrc/ssh_keys/ssh_host_rsa_key

To configure authentication for the SSH service, edit ~/.txwerewolvesrc/users/user_keys.json.

    "user1": [
        "pubkey ...",
        "another pubkey ..."
    "user2": [ "only one pubkey ..." ],
    "user3": [ "etc ..." ]


The location of the SSH service keys and user database can be configured from the command line. The service will also check in $HOME/.txwerewolvesrc and /etc/txwerewolves for the sub-directories users and ssh_keys.

Web Service Configuration

The web service doesn’t support any advance configuration options at this time.

Starting the Service

To start the service:

(wolfenv)$ twistd -n werewolves

When running against a cloned git repo, you need to add the project folder to your PYTHONPATH.

$ cd /path/to/project
$ export PYTHONPATH=.
$ twistd -n werewolves

To connect an SSH client to the service (assuming a typical OpenSSH command-line client):

$ ssh user1@localhost -p 2022

To connect a web client to the service, simply browse to the IP address of the interface and the port on which the web service runs. E.g.