Code for Breakfast

beady-eye v0.25.0

Word from the kitchen: in beady-eye 0.25, a bead hears what is happening on its pull request

In beady-eye 0.25.0, a bead held back by a gh:pr gate stops waiting in silence. While its pull request is open, bdi gates comments on the bead when the checks fail, when the branch conflicts with its base, when someone submits a review, and when someone comments on the conversation. Each is told once, with the reviewer or author named and a link to what they wrote. The gate stays open.

brew upgrade codeforbreakfast/tap/bdi
# or
cargo install beady-eye
The receipt bead waits until the till's pull request #42 is approved. The first look finds failing checks, a reviewer asking for changes and a comment, and each lands on the bead. The fix goes up and is approved, the next look closes the gate, and the tree shows it ticked off.
Read the demo as text
spoon $ bdi gates
bdi gates: settling the gh:pr gates of 1 project, for every owner's repositories, every 60s
greasy-spoon/till#42 has failing checks: spoon told spoon-1.2
greasy-spoon/till#42 was reviewed: spoon told spoon-1.2
greasy-spoon/till#42 was commented on: spoon told spoon-1.2
^C
spoon $ bd comments spoon-1.2
Comments on spoon-1.2:
[cook] at 2026-10-08 18:44
    The checks on c0ffee1, the head of pull request greasy-spoon/till#42, failed, so the
    gh:pr gate waiting on it stays open.
[cook] at 2026-10-08 18:44
    saucier reviewed pull request greasy-spoon/till#42: changes requested.
    https://github.com/greasy-spoon/till/pull/42#pullrequestreview-7
[cook] at 2026-10-08 18:44
    pot-wash commented on pull request greasy-spoon/till#42. https://github.com/greasy-
    spoon/till/pull/42#issuecomment-9

spoon $ bdi gates
bdi gates: settling the gh:pr gates of 1 project, for every owner's repositories, every 60s
greasy-spoon/till#42 is approved: spoon closed gate spoon-im5
^C
spoon $ bdi

▾ spoon  ✓ 10s ago                                                              2/8  3 agents
  ├── ○ spoon-1    The caff takes card payments                                           2/6
  │   ├── ◐ .1         Wire the card reader to the till                     ◍ wK:p2 · working
  │   ├── ◐ .3         Refund a cold bacon roll                                ◍ wK:p5 · idle
  │   ├── ○ .2         Print the VAT line on the receipt                                  1/2
  │   │   └┄┄ ✓ spoon-im5  Gate: gh:pr 42  ⇢ till #42
  │   └── ✓ .4         Price the menu in pence
  └── ○ spoon-2    The tea timer forgets the second sugar                                 0/2
      └── ◐ .1         Count sugars per cup, not per order                  ◍ wK:p3 · working
  reading spoon, where bdi was started                     --all-projects reads every project
─────────────────────────────────────────────────────────────────────────────────────────────
  no pane · nobody is working this bead
a all   ? keys   / find   q quit

So “changes requested” arrives on the bead itself, where whoever is working it already looks. Only what happens after the gate was made is told, so upgrading does not serve a pull request’s whole history to the beads already waiting on it. A failure or a conflict is told once per head commit, and a review or comment once each.

Close on approval

The demo’s gate closed on approval, not merge. Give a gate awaits=approved and it closes once GitHub’s review decision is approved, or once the pull request merges:

bd update "$gate" --set-metadata awaits=approved

A repository that requires no reviews has no review decision, so there the gate waits for the merge.

Before you upgrade: the webhook takes more orders

bdi gates --listen now acts on review, issue comment, check suite and status deliveries as well as pull requests. Add the Pull request reviews, Issue comments, Check suites and Statuses events to your webhook once you are on 0.25. Without them, the timed look still finds everything, only later.

A fine-grained token that worked on 0.24 needs Commit statuses read before failing checks are told. A classic token with repo needs nothing more. Where a token cannot read something, bdi gates skips only that kind of news, says so once for each repository, and still settles the gate. The configuration reference lists what each permission is for.

Coming releases can now be tasted early. A candidate such as 0.25.0-rc.1 goes to crates.io, GitHub and the container registry, and you get one only by asking for its exact version:

cargo install beady-eye --version 0.25.0-rc.1

Changes requested on table four. The bead heard. Order up.

Cooked in the same kitchen

Code For Breakfast built this. It cooks for clients too.

Code For Breakfast Ltd is a UK software consultancy, based in Reading and working remote-first. The kitchen that made this ships well-tested software for clients, fast, and builds and operates real multi-agent AI systems.