Automated application deployment

batou helps you to automate your application deployments:

  1. Create a model of your deployment (using a simple but powerful Python API)
  2. Describe different environments (where your model will be deployed on actual machines)
  3. Run the deployment (using the batou utility)

Getting started with a new project is easy:

$ mkdir myproject
$ cd myproject
$ curl -o batou
$ chmod +x batou
$ ./batou

Here’s a minimal application model:

$ mkdir -p components/myapp
$ cat > components/myapp/
from batou.component import Component
from batou.lib.python import VirtualEnv, Package
from batou.lib.supervisor import Program

class MyApp(Component):

    def configure(self):
        venv = VirtualEnv('2.7')
        self += venv
        venv += Package('myapp')
        self += Program('myapp',

And here’s a minimal environment:

$ mkdir environments
$ cat > environments/dev.cfg
mode = local

localhost = myapp

To deploy this, you run:

$ ./batou deploy dev


batou itself is released “as is”.

We hang around #batou in the Freenode IRC network.

A public `mailing list XXX`_ is there for general discussion and help.

You can also report bugs to our bugtracker.

Commercial support

We will be happy to give you commercial support for batou: feature implementation, bug fixing, consulting, or education.

If you need us, send an email to to get an offer for our services.


batou is developed as open source / free software. If you want to get in touch and contribute, you are more than welcome.