Skip to main content
Bellows is open source. You can run the whole platform on your own machine or cluster instead of using bellows.cloud. The product works the same way: a task runs an agent in a sandboxed runner, the gates check the result, and a pull request is published.

Components

How a task flows

1

You create a task

From the web app, the CLI, the MCP server or the API. The board stores it as a queued job in Postgres.
2

The driver claims it

The driver polls the board (every 5 seconds by default) and takes a lease on the job. The claim carries the repository, the executor, your environment variables and the plan read from .bellows.yaml.
3

A runner starts

The driver creates a task volume, starts a runner from the executor image, and clones the repository with a token the board minted from the GitHub App.
4

The agent works

The runner reports progress and questions to the board. Its telemetry goes to the collector, which forwards it to the board.
5

Gates run

The driver runs the gates declared in .bellows.yaml, plus any services the repository declares.
6

A PR is published

The board publishes the pull request through the GitHub App and keeps following it. Logs, artifacts and the verdict stay on the task.
The board never starts containers. If the driver is down, queued tasks wait until a driver claims them. A driver that is stopped cleanly hands its running tasks back to the board (see DRIVER_HANDOVER_MS).

What you need

The Docker executor mounts the Docker socket into the driver. That is root on the host. Read Security before running it anywhere shared.

Where to go next

Docker Compose

Run Bellows on one machine with the Docker executor.

Kubernetes

Deploy with the Helm chart. Each task is a pod.

GitHub App

Register the App and the OAuth App.

Jira app

Turn on Connect Jira with an Atlassian OAuth app.

Configuration

Every server and driver environment variable.

Security

What each credential grants and where the boundaries are.