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
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.