---
title: Builders
url: "/docs/build/builders/"
canonical_url: https://docs.blossom88.com/docs/build/builders/
markdown_url: https://docs.blossom88.com/docs/build/builders.md
summary: Builds run on their own Server, so they never slow your Apps
categories:
- build
---

# Builders

Every Build runs on a Builder, its own Server with its own CPU and memory, so
a heavy Build never slows your running Apps. You don't need to set anything
up: your first Build in a region creates that region's **Default Builder**.

| Setting | Default | Change it when |
|---|---|---|
| Size | Auto, preferring 4 vCPU / 8 GB | Can use 2 vCPU / 4 GB; explicit minimums support up to 8 vCPU / 16 GB |
| Idle time | 1 hour after a Build | You deploy all day: keep it 8 hours |
| Build timeout | 30 minutes per Build | Allow longer builds, up to 2 hours, or stop slow builds sooner |
| Persistent cache | Off | Builds still start cold or download a lot |

Blossom BYOC Builder management is eligible for the Organization’s $20 monthly
credit. Your provider bills the Server separately.
[See Builder pricing](https://app.blossom88.com/pricing/builders?offering=blossom_byoc).

## Default Builder

An Environment set to **Auto** builds on its region's Default Builder. It
starts when a Build needs it, so the first Build of the hour waits a few
minutes while its Server starts. Builds within its idle time reuse it and its
local cache. The idle timer restarts after each Build; one hour of idle
retention does not mean a new Server or a separate hourly charge per Build.

See it under **Apps → Builders**, or from the CLI:

    blossom builder:list

## Change Its Settings

**Deploying all day?** Keep your Builder warm 8 hours and add a Persistent
cache, so every Build starts warm. Open the Builder's **Settings**, or from the
CLI:

builder.yml:

```yaml
builder:
  idle_retention_seconds: 28800 # stays warm for 8 hours after a Build
  volume_gib: 50 # Persistent cache, 10 to 1,000 GiB
```

    blossom builder:update --id builder-100 --data builder.yml

Build timeout is the maximum duration of each Build, not its expected duration.
Builds that exceed it fail. You can see it on the Builder overview and change
it beside Idle time in Settings. Idle time starts after a Build finishes.

A new size applies the next time the Builder starts. The Persistent cache is a
disk that keeps image layers and dependencies across days; 50 GiB is a good
start for a few Apps. It's available in Hetzner regions.

## More Builders

A Builder runs one Build at a time. Create another for parallel Builds or for
one heavy App:

    blossom builder:init
    blossom builder:create --data builder.yml

Choose it per Environment in **Source and Build**, or with `builder_id` in its
build settings. **Make default** on a Builder's page, or `default: true`,
points Auto in its region at it instead:

| `builder_id` | Builds run on |
|---|---|
| `auto` | The region's Default Builder |
| `builder-100` | That Builder |

## What You Get

- Builds on their own CPU and memory, never your Apps'
- A Builder ready on your first deploy, with nothing to set up
- A warm cache within its idle time, or across days with a Persistent cache
- Self-healing: if a Builder's Server is lost, Blossom replaces it and the
  next Build carries on

Delete a Builder with `blossom builder:delete --id builder-100`; Environments
using it switch to Auto. Deleting the Default is fine: the next Build in its
region creates a new one.
