A stage curtain parted on a seam of warm light

macOS · Epiphani Studios

Stage your menu bar.

You decide who is on it: the readouts you glance at, the icons you manage, and rules you write in a sentence, all in one app.

◍ 3:34PM || Jul 26 87° 80% C 12%  M 67% ‹
Each element is a separate item you can drag anywhere in the bar.
You: "Hide everything when I'm presenting."
You: "Show battery and weather only."
You: "Bring the central processing unit (CPU) reading back if anything is pegged for a minute."
And the bar: icons step back, and the menu names the rule that did it.
Get StageMenu See how it compares $29, once. No subscription. macOS 15 or later, Apple Silicon.

The problem

Your menu bar is either cluttered or blind.

You keep the readouts visible because you want to know the moment something is wrong. So the bar fills up. Then you install a second app to hide the mess the first one made, and now you run two utilities that do not know the other exists. Neither knows you are about to share your screen. Neither knows the difference between a laptop on battery in a coffee shop and the same laptop plugged in at your desk.

The tools that react to anything you can describe are built for people who write shell scripts. Everyone else gets a grid of preset triggers, which covers the conditions the developer thought of and nothing you would say in a sentence.

Two apps competing for one strip of screen

A monitor and a hider, bought separately, updated separately, neither aware of the other.

Static by design

What you configured on a Tuesday is what you get in a client presentation on Friday.

Rules for programmers only

Fully conditional bars exist. They are configured in Lua and shell scripts.

Proof

The counts below come from tests that can fail.

Each part of the app ships a headless self-test with negative controls, so a regression these checks cover fails the build instead of passing quietly. These are the current counts, and they run on the same build you receive.

More than 160 checks on the rules engine

More than 70 are negative controls: gibberish and half-sentences must produce nothing, a dip must reset a sustained timer, a switched-off rule must never fire.

Eighty-two icons across 27 apps

The fixture the icon-detection self-test runs against, measured on a live Mac. Reading your own bar at runtime uses the Accessibility grant described below, not this number.

More than 50 checks on the agent surface

More than 20 are negative controls, including that an unknown module and an unparseable sentence are both refused rather than guessed at.

Run them yourself, for example StageMenu --rules-selftest. Every test is named on the capabilities page.

How it works

Say it, and the bar arranges itself.

1

Put up what you want to see

Clock, weather, battery, CPU, memory, disk, network. Each is its own item, so you drag them where you like and they stay there.

2

Tuck the rest behind the divider

Drag any icon to the left of StageMenu's divider and it hides, and no permission is involved. Click the chevron to see everything hidden, each with its own app icon, and click one to open its real menu; that list is the one place the app asks for Accessibility, and it asks when you first open it.

3

Write a rule as a sentence

"Hide everything when I'm presenting." That becomes a real rule with a condition and an action, parsed on your Mac.

4

It tells you what it did

The menu shows what is in force right now and the reason: "hiding the icons: presenting." Nothing changes silently.

Features

The whole job, on one stage.

The readouts you glance at, the icons you command, and rules you write in a sentence: your whole bar, working together. Stage Cards put the time and date, the weather with an hourly strip, and battery with time to full in one panel, one click away. Choose where StageMenu lives, in the menu bar or the Dock only, in Settings > General.

Clock and calendar

Your exact format, world clocks, and a crisp calendar mark with a month grid and your events.

Weather

In the United States from the National Weather Service, everywhere else from Apple WeatherKit, with sunrise and sunset worked out on your Mac. No key, no account, and no weather subscription.

Battery, including AirPods

Your Mac plus connected Bluetooth accessories, read from the same sources the system itself uses. Every device's charge sits in the battery item beside the Mac's own, and a Bluetooth item beside it counts what is connected, in five styles, or takes the place of Apple's own Bluetooth icon.

Energy Mode at a glance

Settings > Battery shows the mode your Mac is in right now, plus what it uses on battery and on the charger, refreshed when you plug in or unplug. One click opens Hush Performance, or System Settings, to change it.

Wi-Fi

The name of the network you are on, with signal, band, link speed and security beneath, your iPhone's Personal Hotspot one click away, and nearby networks to join.

CPU, memory, disk, network

Sampled natively in Swift inside the app, with nothing bundled and nothing left running when you quit. (The optional agent server described below is a Python script, and it runs only while an agent is talking to it.)

Icon hiding without Screen Recording

Hiding and revealing through the divider need no permission at all, Screen Recording included. The cross-app icon list uses Accessibility, asked for at that point and not before. Screen Recording is an optional extra: allow it once and your hidden icons show their own real artwork in Settings; it reads the thin strip your menu bar sits in and nothing else. Hiding works on macOS 15, 26 and 27.

Rules in plain English

Power state, presenting, the app in front, the Wi-Fi network you are on, the hour, or a metric held above a threshold. It explains every decision it makes.

Model Context Protocol ("MCP") server for agents

Eleven tools over standard input and output using JavaScript Object Notation Remote Procedure Call ("JSON-RPC"), with no third-party dependencies (it runs on the Python 3 that ships with the Xcode command line tools), so your artificial intelligence (AI) assistant can read and compose the bar, read the Bluetooth panel, and connect or disconnect a device by name.

Everyday

The moments this is actually for.

You share your screen

The bar empties the moment a display starts mirroring or a presentation or call app comes to the front, so your Virtual Private Network (VPN), your password manager, and the other client's project stop being part of the presentation. macOS publishes no "I am presenting" flag, so those two signals are what the app reads, and it names which one fired when it explains the decision.

You unplug and walk out

On battery, the heavy readouts step aside and battery moves front and center. Plug in at your desk and the full set comes back.

Something starts eating the machine

The fan spins up and you want to know why. Say the CPU readout should return when anything stays pegged for a minute, and it is there when it matters and gone when it does not.

You are deep in a full-screen editor

When your editor is in front the bar can clear itself, then come back the moment you switch away.

Your agent is already working

An assistant that can read your repository can now read your menu bar: what is showing, what is collapsed, and which rules are active. It can compose the bar for what you are about to do, through the eleven tools the agent surface exposes.

It is late

After nine, a rule can drop the work readouts and leave the clock and the weather.

A rack of stage fresnel lights, one lit warm

Not everything belongs on stage at once

A good show is staged: the right thing in the light at the right moment, everything else seated in the rows just off it. That is the whole idea, applied to the strip of screen you glance at all day.

Who it is for

Four people who live in the same strip of screen.

The developer with 30 icons

You run Docker, a VPN, a tunnel, a password manager, two cloud drives, and a battery of build tools, and every one of them wants a permanent seat. You want them reachable in one click and invisible the rest of the time, and you want the machine's load in front of you the moment a build goes sideways. Today that is two paid apps and a compromise.

The consultant who shares a screen daily

Every call is a live broadcast of your bar. One client's project name in a status item is a bad afternoon. A rule that empties the bar the instant a display mirrors, or the instant your call app takes the front, is worth more than any readout on it.

The laptop user who actually unplugs

Your needs at a desk and your needs on a train are different, and no static configuration serves both. The bar should know which one you are in, without being asked twice.

The person already working with agents

Your assistant reads your code, runs your tests, and opens your pull requests. It has no idea whether your machine is thermally throttled or your VPN dropped. Giving it the menu bar is a small, concrete step toward it knowing the state of the computer it is working on.

If one of these is you, the comparison below is where to look next: every price is read from the maker’s own page and linked, so you can check it yourself.

Compare

How StageMenu compares.

Prices read from each maker’s own page in July 2026, and each one is linked so you can check it.

 StageMenu iStat Menus Bartender Stats Ice
Price$29 once$11.99 to $14.99 once, plus a weather subscription$24 once, plus $15 a year for ProFreeFree
Readouts and icon hiding in one appYesReadouts onlyHiding onlyReadouts onlyHiding only
Rules written as sentencesYesThreshold alertsTriggers, as checkboxesNoNo dynamic rules
Explains its own decisionsYesNoNoNoNo
MCP server for AI agentsYesNoNoNoNo
Weather without a separate subscriptionYesSubscription for the dataNot applicableNo weatherNo weather
Price for a static bar$29$11.99+$24FreeFree
Actively developedYesYes, for about 18 yearsYesYesNo code push since September 2025

Every figure above was read off each app’s own page and is linked in the header. StageMenu is the one that reads and hides in a single app, takes its rules as sentences, explains its own decisions, and answers to an AI agent over MCP.

For agents

Your assistant can run the bar too.

StageMenu ships a Model Context Protocol server, which is the standard way an AI assistant discovers and calls tools. It speaks JSON-RPC over standard input and output with no third-party dependencies, so if you have Xcode's Command Line Tools, the Python 3 they install is enough and there is nothing further to install and no account to create. Eleven tools, grouped below into the three things they let an agent do: read status and the Bluetooth panel; compose the bar by showing a module, hiding a module, flipping one collapse-or-reveal switch for the icons, placing the hide divider, rebuilding StageMenu's own items in order, and connecting or disconnecting a Bluetooth device by name; and list, add, and clear rules. Every one of them refuses bad input rather than guessing.

Read the bar

Which modules are visible, whether the icons are collapsed, which rules are active, whether the app is running, and the Bluetooth panel (StageMenu --remote bluetooth).

Compose the bar

Show or hide any module, collapse or reveal the managed icons, place the hide divider, rebuild StageMenu's own items in order, or connect or disconnect a Bluetooth device (--remote bluetooth-device), all by name rather than by clicking.

Write rules from sentences

Hand it "hide everything when I'm presenting" and it returns the parsed rule, or an error if the sentence was not understood. It never invents one.

Rules are a plain file at ~/Library/Application Support/StageMenu/rules.json, the same file the app evaluates, so anything that can write JSON can drive the bar. Nothing about this surface is a private back door: it is the same typed rules you write yourself.

Under the hood

Built to be boring in the ways that matter.

How hiding works

On macOS 15 and 26 the icon mechanic is an ordinary status item that gets very wide, which is documented AppKit behavior. On macOS 27, where the system draws every status item into one bar, StageMenu asks that bar to step the chosen apps back, and the self-tests confirm it on the running system. Either way hiding needs no permission.

Everything runs inside the app

Every reading is taken inside the app itself, and the optional agent server runs only while an agent is talking to it. Dragging the app to the trash removes the app; your rules and usage-counter files sit in ~/Library/Application Support/StageMenu, and deleting that folder is the rest of it.

Timers that sleep

The clock wakes on the minute boundary it needs, not every second. Metrics and rules timers exist only while those features are on, and they carry a tolerance so macOS can group their wakeups with others.

Redraws that do not happen

If the text to display has not changed, nothing is drawn. Most seconds in a day, a menu-bar readout has nothing new to say.

Alerts you can see

Anything needing attention changes the menu-bar item itself, so you see it at a glance. The one notice it sends, a charge warning when your Mac is plugged in and still losing power, replaces itself and clears on its own once the charge recovers.

Tests that can fail

Every module ships a headless self-test with negative controls, so a broken build is loud. The counts on this page come from those tests, not from a marketing meeting.

Switching

You already own one of these. What changes?

You use iStat Menus

You keep everything you actually look at. The clock format, the world clocks, the calendar glyph, the battery with your AirPods in it: all of that is here, and United States weather arrives without the separate data subscription. What you gain is the other half of the job, because iStat does not hide icons at all. Keep iStat installed while you decide; nothing here interferes with it.

You use Bartender

You keep the divider, the click-to-reveal, and the positions you have arranged, and you drop the Screen Recording requirement for hiding, because this hiding mechanic does not photograph your menu bar to work, plus the $15 a year if you pay for Bartender's Pro features. You also stop maintaining trigger checkboxes, and start writing the same intent as a sentence. If the 2024 sale and the telemetry that followed are why you have not upgraded, that is exactly the itch this scratches.

You use Stats, or Stats plus Ice

You are the hardest person to sell, and you should be: your setup is free, open source, and good. The pitch is that your two apps cannot coordinate, Ice has not shipped code since September 2025, and neither app empties your bar when you start sharing your screen. If that has never cost you anything, stay where you are.

You built a bar in SketchyBar

You already proved the thesis: a menu bar that reacts to context is worth real effort. You wrote shell scripts to get there and you maintain them. StageMenu is the same idea for the days you would rather write a sentence than a config, plus a store of rules any agent can read and write. Your scripts will still be more powerful at the extremes, and that is fine.

StageMenu runs alongside all of them. Nothing is taken over, no other app is disabled, and you can decide after a week of watching both instead of on the strength of this page.

Privacy

It watches your Mac, not you.

What the app sends, and why

The app makes outbound requests for these things: the weather lookup (the National Weather Service inside the United States, Apple WeatherKit through Epiphani's relay elsewhere, each given the coordinates of the place you set), a check for a newer version at launch and every six hours, which can be switched off and carries no account identifier, device identifier, or usage data, and, when you sign in with an Epiphani account, your settings sync. As with any network request, the server on the other end sees standard network metadata such as your address. Usage counters live in a file on your Mac, against a fixed list of feature names. A name outside that list is discarded, so free text cannot enter the file by construction, and the self-test proves it with a negative control.

Hiding needs no screenshot

Hiding icons works through the menu bar itself: a divider item on macOS 15 and 26, and the bar's own concealment on macOS 27. Neither takes a picture of your menu bar. The cross-app icon list is the only feature that touches the Accessibility grant, for reading the items and for pressing the one you pick, and the press goes to the real item rather than through synthetic mouse events.

Permissions are staged and explained

The readouts and the hiding need no permission at all, with one exception you control: showing your events in the calendar glyph asks for Calendar access, in context, the first time you turn it on. Accessibility is requested only when you want the cross-app icon list, the same way, with a link to the exact settings pane. Three optional grants are each asked for in context: Location (the weather, the Wi-Fi network's name and network rules), Screen Recording (real artwork for hidden icons in Settings), and Bluetooth (battery levels for accessories macOS does not report).

Rules are parsed right here on your Mac

Rules are stored as a plain file you can read, edit, or delete yourself.

Pricing

One price, no subscription.

$29 once

The rules layer is included rather than metered, because sentences are parsed on your Mac and cost nothing to run. There is no weather subscription, and no Pro tier holding the good parts back. It is one purchase, not a subscription.

For comparison: iStat Menus is $11.99 to $14.99 plus its weather data, and Bartender is $24 plus $15 a year for its Pro features.

FAQ

The questions people actually ask.

Does it need Screen Recording permission to hide icons?

No. Hiding and revealing needs no permission at all, Screen Recording included. Accessibility is requested only if you want the app to list every icon across all your apps, and it is asked for in context with a link to the exact settings pane. Screen Recording is an optional extra that gives hidden icons their real artwork in Settings.

Why pay when Stats and Ice are free?

Stats is an excellent free monitor and Ice is a capable free hider. If a static bar plus manual hiding is what you want, they are the right answer and you should use them. StageMenu is for the part neither does: a bar that changes itself by rules you write in a sentence, and tells you why. Ice has had no code push since September 2025 and does not offer dynamic rules.

Is $29 really one time?

Yes. One purchase, no subscription, and the rules layer is included rather than metered. Sentences are parsed on your Mac, so there is no per-use cost to pass on to you.

How much CPU and battery does it use?

The clock wakes once a minute rather than once a second, redraws are skipped when the text has not changed, the metrics and rules timers exist only while those features are on and carry a tolerance so macOS can coalesce wakeups, and fast power events arrive by notification instead of polling.

What happens when macOS gets a major update?

On macOS 15 and 26 the icon mechanic uses ordinary status items. On macOS 27 it uses the menu bar's own concealment, switched on only when the running system answers. Every module ships a headless self-test you can run against a new operating system in seconds, including one that asserts every icon state still resolves on the running system.

Does the plain-English parser send anything to the cloud?

No. Sentences are parsed on your Mac and compile to a typed rule. No network call, no API key, no per-use cost.

Is there a weather subscription?

No. Inside the United States weather comes from the National Weather Service, which is public domain. Everywhere else it comes from Apple WeatherKit through Epiphani's own relay. Either way there is no key, no account, and nothing to subscribe to.

What is the MCP server for?

It lets an AI agent read and compose your menu bar. Eleven tools: read status; show a module; hide a module; one collapse-or-reveal switch for the icons; place the hide divider; rebuild StageMenu's own items in order; read the Bluetooth panel; connect or disconnect a Bluetooth device by name; and list, add, and clear the rules you have written from sentences. It speaks JSON-RPC over standard input and output, with no third-party dependencies, so it runs on the Python 3 that comes with the Xcode command line tools.

How is StageMenu distributed?

StageMenu is distributed directly, signed with an Apple Developer ID and notarized by Apple.

Will it be sold to someone else and start collecting data?

It is made by Epiphani Studios, an independent studio. The analytics it keeps are local counters over a fixed list of feature names stored in a file on your Mac; an unrecognized name is discarded, and nothing is uploaded.

Get it

Buy it once and the whole bar is yours to command.

$29 once, no subscription. Join the list. Your Mac makes two routine requests, both yours to stop: the weather lookup, which sends the coordinates of the place you set, and the check for a newer version, which is a plain fetch of the version file. Nothing about your apps or your bar goes with either.

$29, once. macOS 15 or later, Apple Silicon. Developer ID signed and notarized. The current build downloads directly, and the capabilities page lists exactly what ships.