
macOS · Epiphani Studios
Your menu bar is the stage. StageMenu decides who is on it: the readouts you glance at, the icons you manage, and rules you write in a sentence, all in one app.
The problem
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.
A monitor and a hider, bought separately, updated separately, neither aware of the other.
What you configured on a Tuesday is what you get in a client presentation on Friday.
Fully conditional bars exist. They are configured in Lua and shell scripts.
Proof
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.
Ten are negative controls: gibberish and half-sentences must produce nothing, a dip must reset a sustained timer, a switched-off rule must never fire.
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.
Four 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
Clock, weather, battery, CPU, memory, disk, network. Each is its own item, so you drag them where you like and they stay there.
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.
"Hide everything when I'm presenting." That becomes a real rule with a condition and an action, parsed on your Mac. A sentence it cannot parse gives you nothing rather than a rule you did not mean.
The menu shows what is in force right now and the reason: "hiding the icons: presenting." Nothing changes silently.
Features
The readouts you glance at, the icons you command, and rules you write in a sentence: your whole bar, working together.
Your exact format, world clocks, and a crisp calendar mark with a month grid and your events.
From the National Weather Service. No key, no account, and no weather subscription. United States only today.
Your Mac plus connected Bluetooth accessories, read from the same sources the system itself uses.
No background helper, no daemon left running behind your back, and no runtime bundled with the app. (The optional agent server described below is a Python script, and it runs only while an agent is talking to it.)
Hiding and revealing through the divider need no permission at all, and nothing here ever needs Screen Recording. The cross-app icon list is the one feature that uses Accessibility: both reading the items to build the list and pressing one to open its real menu. The app asks for the grant at that point and not before. Nothing about your screen is ever captured.
Power state, presenting, the app in front, the hour, or a metric held above a threshold. It explains every decision it makes.
Seven 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.
Everyday
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.
On battery, the heavy readouts step aside and battery moves front and center. Plug in at your desk and the full set comes back.
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.
When your editor is in front the bar can clear itself, then come back the moment you switch away.
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 seven tools the agent surface exposes.
After nine, a rule can drop the work readouts and leave the clock and the weather.
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
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.
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.
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.
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 none of these is you, and a static bar has never bothered you, the honest recommendation is in the comparison below: take the free tools and keep your $29.
Compare
Prices read from each maker's own page in July 2026. Several rows below are wins for other products, because a comparison that never loses is not worth reading.
| 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 Pro | Free | Free |
| Readouts and icon hiding in one app | Yes | Readouts only | Hiding only | Readouts only | Hiding only |
| Rules written as sentences | Yes | Threshold alerts | Triggers, as checkboxes | No | No dynamic rules |
| Explains its own decisions | Yes | No | No | No | No |
| MCP server for AI agents | Yes | No | No | No | No |
| Weather without a separate subscription | Yes, US only | Subscription for the data | Not applicable | No weather | No weather |
| Depth of sensors and fan control | Planned | Ahead of us today | Not applicable | Ahead of us today | Not applicable |
| A good static bar for nothing | $29 | $11.99+ | $24 | Free, and genuinely good | Free |
| Weather coverage | United States only | Worldwide | Not applicable | Not applicable | Not applicable |
| Open source | No | No | No | Yes, under the Massachusetts Institute of Technology ("MIT") License | Yes, under the GNU General Public License ("GPL") |
| Actively developed | Yes | Yes, for about 18 years | Yes | Yes | No code push since September 2025 |
If a static bar is all you need, Stats plus Ice is a genuinely good free answer, and we would rather say that here than have you discover it after paying. StageMenu is for the part they do not do.
For agents
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. Seven tools, grouped below into the three things they let an agent do: read status; show a module, hide a module, and one collapse-or-reveal switch for the icons; and list, add, and clear rules. Every one of them refuses bad input rather than guessing.
Which modules are visible, whether the icons are collapsed, which rules are active, and whether the app is running.
Show or hide any module, collapse or reveal the managed icons, all by name rather than by clicking.
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/Barchestra/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
The icon mechanic is an ordinary status item that gets very wide. That is the whole trick: it uses documented AppKit behavior rather than private interfaces or window-server tricks, so there is less of the app sitting on undocumented ground when macOS changes.
Every reading comes from public system calls inside the app itself, and the optional agent server runs only while an agent is talking to it. Nothing is installed as root and no daemon is left behind. Dragging the app to the trash removes the app; your rules and usage-counter files sit in ~/Library/Application Support/Barchestra, and deleting that folder is the rest of it.
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.
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.
Anything needing attention changes the menu-bar item itself. Notifications are not used as a channel, so there is no silent failure hiding behind a permission you never granted.
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 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, though iStat's worldwide coverage is one thing you would give up outside the country. What you gain is the other half of the job, because iStat does not hide icons at all. What you give up today is depth of thermal detail, and that is a real loss until the sensor work ships. Keep iStat installed while you decide; nothing here interferes with it.
You keep the divider, the click-to-reveal, and the positions you have arranged, and you drop the Screen Recording permission, 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 are the hardest person to sell, and you should be: your setup is free, open source, and good. Stats has broader sensor coverage than StageMenu does today. The honest 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 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
The app makes outbound requests for two things and no others: the weather lookup described below, and a check for a newer version at launch and every six hours, which carries no account identifier, device identifier, or usage data and can be switched off. As with any network request, the server on the other end sees standard network metadata such as your address. Nothing else leaves. 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 icons uses a divider item, not 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.
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.
Rules are parsed locally and stored as a plain file you can read, edit, or delete yourself.
Pricing
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
No. Hiding and revealing uses a divider status item that expands past the width of the screen, which needs no permission at all. 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.
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.
Yes, and the number itself is the planned launch price. 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.
No measured figure is published yet, so here is the design instead. 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.
The icon mechanic uses ordinary status items rather than private APIs or window-server tricks, so less of it sits on undocumented ground. 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.
No. Sentences are parsed on your Mac and compile to a typed rule. No network call, no API key, no per-use cost. A sentence it does not understand produces nothing rather than a guessed rule.
No. Weather comes from the United States National Weather Service, which is public domain and needs no key and no account. The honest tradeoff is that it is US-only today.
It lets an AI agent read and compose your menu bar. Seven tools: read status; show a module; hide a module; one collapse-or-reveal switch for the icons; 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.
Reading hardware sensors through Apple's IOKit framework is incompatible with the App Store sandbox. StageMenu is distributed directly, signed with an Apple Developer ID and notarized by Apple.
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.
Limits
Weather is United States only, because it uses the National Weather Service rather than a paid provider.
Readouts cover processor, memory, network, disk, battery, weather, and the clock. Fan speed and per-sensor temperatures are outside that set.
Hidden icons are listed, not redrawn in a second bar. Redrawing them would require Screen Recording permission, which this design deliberately avoids.
The plain-English parser covers documented sentence patterns, not arbitrary language. It refuses what it does not understand rather than guessing, and a fully on-device language model is the planned upgrade behind the same interface.
Notifications are not used as an alert channel. The menu-bar item itself carries anything needing your attention.
macOS 14 or later, Apple Silicon. There is no Windows version, because the macOS menu bar is the product.
Get it
A single purchase when it opens, with no subscription, no screen recording, and no second app to clean up after the first. Two things leave your Mac, both of them yours to stop: the weather lookup, where the location you set in Settings goes to the National Weather Service once to resolve its forecast grid and after that only that grid is requested, and the check for a newer version, which is a plain fetch of the version file. Nothing about your machine, your apps, or your bar goes with either.
Planned price $29, once. macOS 14 or later, Apple Silicon. Developer ID signed and notarized. The build is available by request, and the capabilities page lists exactly what ships.
StageMenu is one app, bought once, that arranges itself from a sentence and tells you why.