Observed since 20 Oct, 18:29 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A local breakpoint debugger for GitHub Actions workflows, wrapping act.
A local breakpoint debugger for act. act runs
GitHub Actions workflows locally, but there's no way to pause mid-run and look
around. actbreak injects a real breakpoint into a workflow, waits for the job
container to reach it, and drops you into a live shell inside the still-running
container. Resume when you're done, and the workflow keeps going.
Zero runtime dependencies. Python 3.9+, stdlib only.
Early / v0.1.0. Core injection and selection logic is unit tested; the
run/resume/clean orchestration against real act + Docker/Podman is covered by
a CI integration test rather than exercised in every environment this ships to.
git clone https://github.com/munzzyy/actbreak
cd actbreak
pip install -e .
Once it's on PyPI: pipx install actbreak.
Requires act on PATH, and one of Docker or Podman.
actbreak run <workflow.yml> --break-before <step>
actbreak run <workflow.yml> --break-after <step>
actbreak run <workflow.yml> --break-on-failure
actbreak resume
actbreak clean
<workflow.yml> is either a path to a workflow file, or a bare name looked up
under .github/workflows/.
A step selector is either a step's name: value, or <job>:<index> to select
by zero-based position (use this for steps with no name:).
run flags| Flag | Meaning |
|---|---|
--break-before STEP | pause immediately before STEP runs |
--break-after STEP | pause immediately after STEP runs |
--break-on-failure | if act exits nonzero, attach to the last job container for post-mortem |
--job JOB | disambiguate a multi-job workflow |
--runtime {docker,podman,auto} | container runtime to use (default: auto-detect) |
--no-attach | don't exec a shell automatically; print the attach command and hold |
--act-arg ARG | extra argument passed through to act (repeatable) |
-v, --verbose | print the injection/act commands being run |
actbreak run ci.yml --break-before "Run tests"
actbreak run ci.yml --job build --break-before build:2
actbreak run ci.yml --break-after "Build" --no-attach
actbreak run ci.yml --break-on-failure
/tmp/actbreak/hold) and blocks
on it inside the container.act -W <temp copy> --reuse so the container stays alive after the
run "finishes" (i.e. hangs at the hold).docker ps / podman ps for the job's container, then for the
sentinel file, to know the breakpoint has been hit.actbreak resume) deletes the sentinel and lets the job continue.Because round-tripping a workflow through a generic YAML library corrupts it.
PyYAML's default loader coerces an unquoted on: key to the boolean True
under YAML 1.1 rules, and any generic dumper throws away comments, quoting
style, and anchors. actbreak never deserializes the file. It scans for
jobs:, then the target job, then its steps: list, using indentation alone,
and splices in new lines at the right point. Every other byte in the file is
untouched.
pip install -e ".[dev]"
python -m unittest
pytest
The integration pytest marker (pytest -m integration) runs a real
act + Docker/Podman end-to-end test; it's auto-skipped unless both are on
PATH, which in practice means it only runs in CI.
Prosperity Public License 3.0.0 — free for noncommercial use, thirty-day trial for commercial use. See LICENSE. Contributions come in under the Blue Oak Model License; see CONTRIBUTING.md.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 12 Jul 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:29 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:bc81f8de6a4b3c7c6fa2637c209bfcae0bb158818b637e1c7c4b0816e1064e3d