Windows tray notifier  ·  Azure DevOps & GitHub  ·  not a cat

Know the state of your builds and pull requests.
With flair.

Greenlight watches your pipelines and pull requests on Azure DevOps and GitHub, and makes sure you notice. Every event gets its own sound, a stoplight sits on your desktop, and an open SDK lets anything — taskbar cars, a lava lamp, a laser sabre — turn red the moment a build breaks. Free for 5 pipelines and 5 repositories, for as long as you like.

$0
Free tier, no expiry
8
Events with a sound
1
Desktop stoplight
12
Clients to play with

Section 01 — Evidence

The window you'll call home

Every run grouped by pipeline, with its branch, its duration, and a row of coloured squares showing recent history at a glance. Click any run to open it in your browser.

The Builds tab, honestly captured. Some of those squares are already red.

Greenlight Builds tab listing recent pipeline runs, each with a branch chip, who triggered it, a duration and a strip of green and red status squares
Greenlight Pull Requests tab: five open pull requests, each showing its branch, target, author, age and how many approvals it is still waiting on
Pull requests, filtered to yours or everyone's — with the approval count you have been avoiding reading.
Greenlight Settings tab: connected GitHub and Azure DevOps accounts, a per-event notification list with sound pickers and toggles, and the polling interval
Settings: both providers connected, and a sound picker beside every notification. Yes, every one. We'll get to that.

Section 02 — Versus the cat

The cat is very good.
The cat is also very serious.

Let's be fair to the cat. It watches Jenkins, TeamCity, GitLab and half a dozen other CI servers; today we watch two. That's not a principle, it's a running order: we built the fun first — the noise, the stoplight, the things that go red — and more platforms are on the way. If your company runs on TeamCity and can't wait, go and get the cat, and give it our regards. We'll catch up.

Section 02.A — It makes noise

Point any event at a .wav and let the office hear it

Eight events, eight sound pickers: build started, failed, recovered and succeeded; review requested, approved, changes requested, and a new pull request in a repo you watch. Each one takes a Windows system sound or any .wav on your disk. We'd suggest the pairings below. We can't ship them, because shipping movie audio is how you meet lawyers — but you own a microphone and poor judgement, and that is all this needs.

Green Build recovered

Suggested .wav

yeah-baby.wav — Austin Powers

“Yeah, baby, yeah!”

Amber Review requested

Suggested .wav

bad-feeling.wav — Star Wars

“I've got a bad feeling about this.”

Red Build failed

Suggested .wav

bring-out-your-dead.wav — Monty Python

“Bring out your dead!”

Section 02.B — A stoplight, built in

A traffic light on your desktop. No soldering.

The tray icon is sixteen pixels. That is fine until you have two monitors and a meeting. So Greenlight ships a stoplight you can put anywhere on the screen — the one in the recording up top. Same verdict as the tray icon, because a desktop light that disagreed with it would be worse than no light at all.

  • Click-through. It sits on top of everything and never eats a click. It looks at your work; it does not touch it.
  • Blinks while building. The lit lamp flashes in time with the tray icon, so you can watch your mistake compile.
  • Your size, your spot. A hotkey drops it into edit mode to drag, resize, turn sideways or fade it out. Press it again and it goes back to minding its own business.
  • Off by default. A traffic light on someone's desktop should be a choice, not a surprise.

Want one made of actual plastic and relays? That exists too.

Section 02.D — Make your own

Your app, wearing your build's colour

Greenlight already polls the providers, holds the tokens and decides what colour the day is. The SDK hands your app that verdict live, over a named pipe. No API keys, no polling, no retry loop, and nothing to break when Greenlight isn't running — your app just waits for it.

Fork CarsClient, delete the cars, draw something worse. When it works, send it to the gallery and it gets a card on this site.

MIT licensed, no dependencies, net8.0 and net10.0. Not .NET? The pipe protocol is documented too.

dotnet add package MeddlingIdiot.Greenlight.Sdk

await using var greenlight = new GreenlightClient();

greenlight.Changed += (_, e) =>
    Paint(e.Snapshot.Status, e.Snapshot.IsBuilding);

await greenlight.StartAsync();

// That's it. Go draw a duck.

Section 03 — Signal codes

Four lamps. Infinite disappointment.

01 Green

Everything passes

Nothing needs you. Suspicious. Go get coffee before somebody notices.

02 Amber

Running, or a review is waiting

Someone wants your opinion. You will give it. It will be ignored.

03 Red

A pipeline is broken

It worked on your machine. Truly one of the great unsolved mysteries.

04 Dark

Disconnected, or clueless

Same emotional state as your access token on day 91.

Section 04 — What it watches

Everything you'd otherwise keep a tab open for

W-01

Pull requests

Awaiting your review, your own PRs, approvals and change requests — grouped, badged and filterable across every project.

W-02

Pipeline builds

Every run with a compact history strip: needs attention, in progress, and the ones that just passed by accident.

W-03

GitHub checks

Check runs and workflow results sit beside Azure DevOps builds in the same list, because your team never agreed on one provider.

W-04

Tray & toasts

A colour-coded tray lamp and actionable toasts. Open the item, or dismiss it and pretend you never saw it.

W-05

Secure by design

PATs and OAuth tokens live in Windows Credential Manager, DPAPI-encrypted. Never a config file called tokens_FINAL.txt.

W-06

A real desk stoplight

A plugin contract drives actual hardware. Steady colour for the verdict, flashing while it builds, visible from the hallway.

The long version, feature by feature, lives on the features sheet.

Section 05 — The hardware bit

A real stoplight on your desk, wired to your build

Greenlight ships a plugin contract for physical build indicators. Implement one small interface, drop the DLL in the plugins folder, and your lamp gets every state change — steady colour for the verdict, flashing while a build runs. The included K8055 plugin drives a three-lamp desk light over a USB board. Your teammates will hate it, which is how you know it works.

  • A 32-bit bridge process talks to the legacy board driver over stdin.
  • Restart a lamp from Settings when its board wanders off.
See the lamp setup

Coming soon — video course

Hooking up the stoplight, on camera

A short demo series is planned: parts and tools, relays and the K8055 board, the x86 bridge, the plugins folder, and a pipeline broken on purpose so the plastic lamp goes red on film. Mistakes left in, because that is the part you actually need.

No waitlist, no email capture. It will simply appear on the lamp page.

Section 06 — Commissioning sequence

Running in about a minute

  1. 01

    Connect

    Paste a Personal Access Token or sign in with Azure AD, then choose the projects, repos and pipelines worth watching.

  2. 02

    Greenlight watches

    It polls on a schedule you set, and never writes anything back. Read-only, so the damage stays manual.

  3. 03

    Glance

    The lamp stays honest. Click a row to jump to the PR or build. That is the entire user journey.

The Meddling Idiot mascot
The Meddling Idiot. He shipped on a Friday. He is not sorry.

Section 07 — Your tokens stay yours

Nothing leaves the machine

Storage

Personal Access Tokens live in Windows Credential Manager, DPAPI-encrypted per user, keyed by connection.

Not stored in

settings.json, log files, or the meddlingidiot.com account you downloaded this with — that one knows your email address and nothing else.

Network

Your remotes and the update feed. That is the entire list.

Scopes

Read-only throughout: Code (read), Build (read), Identity/Profile (read) on Azure DevOps; Pull requests (read) and Actions (read) on GitHub, or classic repo.

Section 08 — On your phone

Greenlight for iOS — coming soon

The same stoplight, the same two providers, on the home screen and the Lock Screen. Native Swift, because a home-screen widget has to be one — iOS renders it out of process, and nothing else gets to draw there.

The Greenlight iOS Builds tab: a green stoplight card reading All clear, everything is passing across 55 pipelines, a warning that GitHub timed out after 20 seconds, and a list of Azure DevOps pipelines each with a row of pass/fail squares, branch, duration and who triggered it.
Builds — the lamp, then every pipeline under it. The amber note is the app admitting GitHub timed out rather than quietly showing you stale squares.
The Greenlight iOS Pull Requests tab: three counters reading zero waiting on you, four yours open and three approved, then a section of approved and ready to merge pull requests followed by a waiting section, each row showing its number, title, repository and branch.
Pull requests — split into approved-and-ready versus still waiting, so the ones you can actually land are at the top.
The Greenlight iOS Settings tab: GitHub and Azure DevOps connections with their status, a notify-me-when list with toggles for a build breaks, a build recovers, a review is requested and my PR is approved, and display options for hiding draft pull requests and runs per pipeline.
Settings — both providers, and notifications chosen one event at a time rather than all or nothing.
An iPhone home screen with three Greenlight widgets: a small one showing a green stoplight and All clear, nothing needs you; a large Builds widget listing pipelines with rows of green, red and grey squares; and a medium Pull Requests widget listing three pull requests with approved and waiting icons.
Home screen — small, medium and large, all three stamped with how long ago they last heard anything.
An iPhone Lock Screen showing the time and a Greenlight Live Activity two thirds of the way down: an amber stoplight beside the pipeline name Automation.Nuke, running on main, a timer reading 3:44, a progress bar and an estimate of six minutes remaining.
Lock Screen — a tracked build, below the clock and above the flashlight. Tap Track on a run and it stays there until it lands.

Home screen

The stoplight at a glance, your pull requests, or recent pipeline runs as pass/fail squares. Small, medium and large.

Lock Screen

Circular, rectangular and inline accessories. They render monochrome, so every state carries a shape as well as a colour — the light is still readable when the hue is gone.

Dynamic Island

A tracked build compacts to a lamp and a timer, and expands to the pipeline, the branch and its progress.

Honest about iOS

The desktop app polls every thirty seconds because it is always running. A phone is not. iOS schedules background work when it feels like it, so every widget shows how old its data is and dims when that answer stops being good enough. No widget here will ever claim to know something it does not.

In TestFlight now, not yet on the App Store. Same tokens, same read-only scopes, same rule about credentials never leaving the device — on iOS they live in the Keychain rather than Credential Manager.

Section 09 — Testimonials, three of them allegedly

Praise from people who exist

“I used to find out main was broken from a standup. Now I find out from a small red circle, thirty seconds after I cause it.”

Backend developer, allegedly

“We were about to pay per seat for a cat to tell us the same thing. This is free for now and it does not purr at me.”

Team lead with a budget

“The desk stoplight has ended two arguments and started five. Net positive.”

Person with a USB board

Actually real

“Handier than a pocket on a shirt”

A real user, name withheld

Three of the above were written by us and are labelled as such. The green one is a verbatim quote from somebody who actually uses it.

Section 10 — Anticipated complaints

Questions you were about to ask

Does it fix the build?

No. It reports the failure quickly and in a tasteful enamel red. The fixing part remains, tragically, yours.

Why not just use the cat?

If you need Jenkins or TeamCity today, honestly, use the cat — it watches far more than we do, for now. More platforms are coming; we just did the fun parts first. If what you need is a desktop traffic light that shouts Monty Python when main breaks, you are already in the right place.

Mac or Linux?

It's a Windows tray app wired into Credential Manager. This page works on your phone, which is legally almost the same thing.

A physical stoplight, really?

Plugin contract plus a K8055 relay bridge. Nothing communicates healthy team culture like a red lamp nobody will admit to owning.

Is there a course for building it?

Planned. Parts, relays, the 32-bit bridge, plugin folder, and a pipeline broken on purpose for the shot. Details on the lamp page.

More answers, same tone →

GREENLIGHT

Put a light on it.

Free while it is in beta, small, and determined to stay out of your way until the exact moment it shouldn't.

Download the installer

v0.0.1  ·  Windows 10 / 11 x64  ·  installs per user

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.