An aurora that
actually flows.

Aurora Glass paints a live fluid simulation across the menu bar of your Mac. Not a looping video or a crossfading gradient — an incompressible fluid solve, recomputed every single frame on the GPU.

Free, signed and notarized. macOS 26 Tahoe or later.

This is the default: it lights the menu bar and spills a little onto the desktop. Move your pointer across it.

It lives in the menu bar. No window, no Dock icon, and it never takes focus or swallows a click — so the top of your screen stays exactly as usable as it was, and quietly becomes the nicest part of your desk.

This is a recording of it running

The animation at the top of this page is a web approximation. This is the real app, captured on a MacBook Pro — the menu bar, the notch masked out, and your own menus and status icons sitting crisply on top of it.

Recorded at 1024×665 so the detail is easier to see. Unretouched, playing at normal speed.

The simulation is the point

Ambient-light apps usually animate a gradient and hope you don't look closely. Aurora Glass runs Jos Stam's stable fluids method on a velocity grid sized to your display, as seven Metal compute kernels. The order matters, so here it is in order.

  1. Advection

    Every cell traces backwards along the flow and samples where its fluid came from a moment ago. Semi-Lagrangian, so it stays stable no matter how large the timestep or how fast the field is moving.

  2. Curl-noise forcing

    The wind comes from the curl of a noise field, which is divergence-free by construction. That means turbulence can be injected without inventing fluid out of nowhere or draining it away.

  3. Vorticity confinement

    A grid quietly smears out small eddies. This step measures the vorticity it's losing and feeds that energy back into the swirl, which is why the filaments stay sharp instead of dissolving into haze.

  4. Pressure projection

    A Jacobi solve for pressure, then subtract its gradient. This is the step that makes the field incompressible — and the reason the aurora drifts and folds instead of piling up at one end of the bar.

The colour you see is a second pass that reads the velocity and density fields and ramps them through the palette. The CPU spends its time asleep.

Tune it, or pick a look and forget it

Nine palettes ship with the app. Pick one here and the aurora at the top of this page changes with it.

Showing Classic Aurora

Seven whole-look presets

Northern Lights, Geomagnetic Storm, Glacier Drift, Deep Nebula, Flurry, Whisper, and Rave. One click sets speed, scale, bloom, vorticity and palette together, so you don't have to understand a solver to get something you like.

Five pointer modes

Leave it inert, have a soft light follow the pointer, push the fluid around, spin up a vortex, or run Calm — which smooths the flow to stillness wherever your pointer goes.

It knows about the notch

On a MacBook Pro the camera housing can be masked out cleanly, traced with light so the aurora wraps it, or simply ignored. The strip geometry is read from the display, not guessed.

Four places to put it

Over the menu bar, behind the menu bar, behind every window, or across the whole screen as a living wallpaper. The app also links straight to the System Settings panes that control menu bar transparency.

Real HDR on XDR displays

On a Pro Display XDR or a Liquid Retina XDR MacBook Pro, the brightest filaments are drawn above SDR white. The aurora glows rather than just being pale.

It can react to things

Leave it on its own, or point it at an input: Music drives the fluid from an FFT of your system audio, AI agent from whatever your agents are doing, Weather and Wind speed from outside. Custom script hands the whole thing over to you.

Colours from your wallpaper

Rather than pick a palette, let it read the one already behind your windows. There is also a Flurry preset, which is a nod to the screensaver a certain generation of Mac user will remember.

Idles when you're busy

It stops drawing entirely when the display sleeps, when the screen is locked, and when you’re in a full-screen app — and on battery too, if you ask it to. A pretty menu bar is not worth your fans spinning up.

Pricing

One tier, and it is free. Everything the app does today, it does for everyone.

Aurora Glass

Freeforever

  • The full fluid simulation
  • All nine palettes and seven presets
  • All five pointer modes
  • Notch handling and all four layer placements
  • Every visualiser mode, including Music and Weather
  • The aurora CLI and the scene language
  • HDR glow on XDR displays
  • Colours sampled from your wallpaper
Download for macOS

A paid tier may come later, once there is something worth charging for. Nothing that works today will move behind it.

Your agents already have a status light

The aurora command ships with the app. It writes channels into a JSON file that the app watches, which means there is no client library to install, no socket to open and no daemon to keep alive. If a thing can write a file, it can drive the aurora.

It lives inside the app bundle, so install through Homebrew and it is linked onto your PATH for you:

zsh
$ brew install --cask gourneau/tap/aurora-glass

Installing from the disk image instead leaves the command present but not on your PATH; the app's settings panel shows the one line that fixes it.

# tell the menu bar what the agent is doing
$ aurora busy

# green when the suite passes, red when it doesn't
$ npm test && aurora ok || aurora fail

# or just hand it colours
$ aurora palette "#ff0055" "#ffcc00" "#00ddff"

Drop those two words into a git hook, a watch script or an agent's tool list and the top of your screen becomes the build light.

Or wire the physics to something real

Underneath the settings popover there is a small scene language. It is line-oriented and takes #, ; or // comments — deliberately close to the LEDS.LED files SidePulse uses, so one habit covers both. set fixes a parameter. bind is the interesting one: it re-evaluates its expression every frame, against whatever is coming in live.

# react to whatever is playing
palette #0dff8c #26f2cc #5a8cff #d94df2

set  speed    0.6

bind exposure = 0.75 + level * 1.4 + bass * 1.1
bind curl     = 1.8 + mid * 5.0
bind raysharp = 1.3 + treble * 2.6

Music

level bass mid treble beat

An FFT of whatever the system is playing.

Weather

temp wind gust cloud rain

The sky outside, driving the sky above your windows.

Agents

busy ok err a0–a3

Whatever the CLI last wrote. Four spare channels are yours.

Time

t

Seconds, for when you only want it to breathe.

The same light, off the screen

SidePulse is a separate piece of hardware: a small light-based status indicator for coding agents, so you can tell at a glance whether yours are working, waiting on you, or finished. SidePulse Pro has eight lights and sits in the SD card slot of a 14- or 16-inch MacBook Pro. SidePulse Dot has two and plugs into a USB-C port. Both are driven by writing a plain-text animation file, which means anything that can write a file can control them.

Including a fluid simulation. Aurora Glass already speaks that dialect — its scene files and SidePulse's LEDS.LED files are the same shape of small text format on purpose. The plan is to close the loop: Aurora Glass samples its own strip at eight points and hands those colours to SidePulse, so one script lights the menu bar and the hardware beside your keyboard together.

Eight samples across the menu bar, eight lights on a SidePulse Pro. Pick a palette above and this changes too.

The sync is planned, not shipped. SidePulse hardware works today on its own — sidepulse.io.

Put it at the top of your screen

Download for macOS

Free. Signed and notarized by Apple, so it opens without a warning. macOS 26 Tahoe or later, Apple silicon.

or with Homebrew

$ brew tap gourneau/tap
$ brew install --cask aurora-glass

Homebrew also puts the aurora command on your PATH. With the disk image, the app's settings panel installs it for you.