Budgets, dry runs, and priority
Control how much a pipeline can spend, run it without pushing code, and decide what runs first.
What this means
Three settings on the New Pipeline form change how much a pipeline costs, whether it produces a merge request, and where it sits in the queue:
- Budget cap - the maximum a single pipeline can spend in US dollars.
- Dry run - runs planning and coding, then stops before pushing or opening an MR.
- Priority - sets where the pipeline sits in the per-repo queue.
These are independent. You can combine them - for example, a low-priority dry run with a small budget cap to test a prompt cheaply.
When to use it
| Setting | Use it when |
|---|---|
| Budget cap | Always. Every pipeline has a cap. |
| Dry run | You want to see the agent's plan and code without opening an MR - for example, to preview a risky change. |
| Priority | The repo has multiple pipelines queued, and one of them is more urgent than the others. |
Before you start
- These settings live on the New Pipeline form (
Pipelines → New). - The same setup checklist applies - credentials, product, and repos must exist before the form renders.
- All three settings are also stored on templates, so saved presets carry your defaults.
Budget cap
Where to set it
The Budget cap (USD) field on the New Pipeline form. Default: 10. Minimum: 0.01.
What it does
- Bilbis tracks total LLM spend on the pipeline as it runs.
- If spend reaches the cap, the run halts. The pipeline ends in Failed with a clear reason.
- The header on the pipeline detail page shows current cost so you can watch it climb.
How to pick a number
| Task shape | Reasonable cap |
|---|---|
| Trivial change in one small file | $1–$3 |
| Typical feature or bug fix | $5–$15 |
| Large refactor across many files | $20–$50 |
| Exploratory or unfamiliar codebase | Start small, raise on retry |
The Engine picker also affects cost. Claude Haiku and Workers AI are cheapest. Claude Opus is most expensive but most capable. Auto lets Bilbis pick - usually mid-tier.
Locale note
The form accepts decimals like 5.50 regardless of your browser locale. You don't need to use a comma even if your computer is set to a comma-decimal locale.
Dry run
Where to set it
The Dry run checkbox on the New Pipeline form. Default: off.
What it does
- The pipeline runs through routing, coding, and testing.
- It stops before the Pushing state.
- No branch is pushed. No MR or PR is opened.
- The diff is still visible on the pipeline detail page (Diff tab) so you can read what the agent would have produced.
When to use it
- Previewing what an agent would do for a sensitive change.
- Validating a new template before dispatching real runs.
- Testing how the Repo Router behaves on a vague task description.
- Comparing two engines on the same task without merging anything.
What it does not do
- Skip cost. Dry runs use the same agents and the same models, so they spend money. Set a budget cap accordingly.
- Skip clarifications. A dry run can still pause in Awaiting clarification if the agent has a question.
- Allow approvals. Dry runs never reach Awaiting approval because there is no MR to approve.
Priority
Where to set it
The Priority select inside Advanced options on the New Pipeline form. Default: Unrated.
What it does
Multiple pipelines on the same repository run sequentially. Bilbis holds a per-repo lock - the next pipeline picks up only after the previous one finishes. Priority controls who picks up first when several pipelines are waiting.
| Priority | Label | When to use it |
|---|---|---|
| 1 | Highest | Production hotfix that has to ship before everything else. |
| 2 | High | Time-sensitive task that should jump ahead of routine work. |
| 3 | Medium | Default. Day-to-day work. |
| 4 | Low | Cleanup, dependency bumps, refactors that can wait. |
| 5 | Lowest | Background experiments. |
| - | Unrated | Treated as Medium (3) at queue ordering. |
What it does not do
- Speed up a pipeline already running. Priority only matters when multiple pipelines are queued.
- Affect pipelines on different repositories. Each repo has its own queue.
- Override an in-progress pipeline. Priority does not preempt running work.
Reading the queue
A pipeline parked behind another pipeline shows a Queued badge with a clock icon. The pipeline detail page shows priority in the header so you can see why it's where it is in the queue.
Combining the three
A few common combinations:
| Goal | Settings |
|---|---|
| Quick safe test | Dry run on, budget cap $2, priority Low. |
| Preview a refactor before merging | Dry run on, budget cap $25, priority Medium. |
| Urgent production fix | Dry run off, budget cap $15, priority Highest. |
| Cheap routine job | Dry run off, budget cap $3, priority Lowest, engine Claude Haiku. |
Templates store all three. If you find a combination you reuse, save the form as a template - see Templates.
Problems and fixes
| Problem | What to check |
|---|---|
| The pipeline ended in Failed with a budget reason. | The cap was hit. Either raise the cap on a new run, switch to a cheaper engine, or split the task. |
| The dry run still feels expensive. | Dry runs use the same agents as real runs. Set a smaller budget cap or a cheaper engine. |
| A high-priority pipeline isn't running yet. | Another pipeline on the same repo is still in progress. Priority only matters once it joins the queue. Check the running pipeline's detail page. |
| Priority doesn't appear on the form. | It lives inside Advanced options. Click the disclosure to expand. |
| I expected an MR but didn't get one. | Dry run was on. Check the header for the Dry run badge. Dispatch again with the box unchecked. |
Related pages
- Create a pipeline - every form field, including how to find Advanced options.
- Pipeline states - what each state badge means, including Queued.
- Templates - save these settings as a reusable preset.
- Troubleshooting - recovery for failed and stuck runs.