BAlto is a Language independent Test Orchestrator

View project on GitHub

Logo of Balto BALTO

All Contributors

BAlto is a Language independent Test Orchestrator is an unique tool to drive all your test-runners with one common interface.


Install balto with pipx:

pipx install balto

You should see at the end of the command:

  These binaries are now globally available
    - balto
    - balto-curses
    - balto-server
done! ✨ 🌟 ✨

It is highly recommended to avoid installing Balto in either your global Python environment or a virtual environment as it might causes conflicts with some dependencies.


To use it, point balto to a directory containing a .balto.toml file:

balto tests/

The .balto.toml file should look like:

name = "Acceptance Test Suite Subprocess"
tool = "pytest"

If you just want to give Balto a try, you can use the --tool to indicate which tool you want to use. For example:

balto --tool pytest tests

The tool must be one of the supported one, you can see the list here:

You can test balto against examples for supported test runners. Clone this repository and launch balto against one of the examples directories. For pytest, launch:

balto examples/pytest/

For more help:

balto --help


Balto is composed of two components: the server and the web interface.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. Please report unacceptable behavior to


Balto-server is a Python 3.7 project using Asyncio. To build the development version, first create a virtualenv (or equivalent):

virtualenv .venv
source .venv/bin/activate

Install the project in development mode:

pip install -e .

Then start the server:

balto-server --debug examples/pytest/

The server will start on port 8889.

Web interface

The web interface is a React project communicating with the server using WebSockets. You can start developing on it with these instructions:

cd balto/web_interfaces/balto_react
yarn start

The web interface is then available on http://localhost:3000/ and will connect to the server started before.

Warning: the WebSocket doesn’t auto-reconnect yet, sometimes your React modification requires you to reload your browser tab.


Thanks goes to these wonderful people (emoji key):

 Boris Feld
Boris Feld

πŸ’» 🎨 πŸ“– πŸ€” πŸ“’
Elias Dorneles
Elias Dorneles

πŸ’» πŸ›
Paul Morelle
Paul Morelle


This project follows the all-contributors specification. Contributions of any kind welcome!