On this page
Bellows
Troubleshooting
Troubleshooting for Bellows.
act is required but was not found in PATH
Install act:
brew install actThen rerun:
bellows doctor
bellows self-testUse runner image preflight when failures look like missing or stale local runner images:
bellows doctor --image-preflightdocker is not reachable
Bellows found the Docker CLI but cannot reach the Docker daemon.
Start Docker Desktop, Rancher Desktop, Colima, or your preferred Docker-compatible runtime, then check:
docker info
bellows doctorUnmapped Runner Label
If a workflow uses a runner label Bellows does not know:
job test uses unmapped runner custom-ubuntu-runnerAdd a local mapping:
runner:
map:
custom-ubuntu-runner: ghcr.io/smeltery/kiln:ubuntu-22.04Dynamic Runner Expressions
Workflows with matrix runners often use:
runs-on: ${{ matrix.os }}Bellows reports this as a warning because the concrete runner label is resolved
by act during matrix expansion.
Make sure .bellows.yml includes mappings for the possible matrix values:
runner:
map:
ubuntu-latest: ghcr.io/smeltery/kiln:ubuntu-22.04
macos-latest: ghcr.io/smeltery/kiln:ubuntu-22.04The macOS mapping is a local compatibility fallback. It does not emulate macOS.
Deployment Jobs Fail Locally
Skip deployment jobs in local runs:
skip:
jobs:
- deployCloud CI should remain responsible for production deployment checks.
Artifact Uploads Fail Locally
GitHub artifact uploads require cloud runtime credentials that local act runs
usually do not have.
Guard artifact steps so they stay enabled in cloud CI and are skipped locally:
- name: Upload coverage
if: ${{ env.ACT != 'true' }}
uses: actions/upload-artifact@v5Bellows passes both ACT=true and BELLOWS=true to local workflow runs.
doctor JSON For Automation
Use JSON output when another tool needs to inspect diagnostics:
bellows doctor --format jsonEach finding includes a level, stable code, message, and optional workflow,
job, and suggestion fields.
Clear Local Docker Cache
bellows cache pruneRefresh Local Action And Image Caches
act caches downloaded actions and Docker images. If a workflow action version
or runner image changes but local behavior looks stale, refresh the local cache:
rm -rf ~/.cache/act
docker image pruneFor a full Docker layer cleanup:
bellows cache prune