A native macOS menu bar app for two supported kinds of public status pages, plus a built-in AI benchmark snapshot view.
MenuStatus has two primary views:
- Supported Status Pages: parse public status pages built on Atlassian Statuspage and incident.io
- AI Stupid Level: check benchmark snapshots including global index, model ranking, vendor comparison, recommendations, alerts, and degradations
Download Latest DMG · Release Notes · Build From Source
MenuStatus is not a generic parser for arbitrary status sites. It currently supports two status-page platforms only:
Built-in providers include OpenAI and Anthropic. You can also add compatible URLs from services built on those same two formats, such as GitHub, Cloudflare, 1Password, Proton, and similar providers.
From the menu bar you can:
- switch between providers quickly
- inspect grouped components and uptime bars
- view active incidents and recent history
- jump to the official provider status page when you need full context
MenuStatus also includes an AI Stupid Level view for quick benchmark snapshots from aistupidlevel.info.
It surfaces:
- global index and trend
- model ranking
- vendor comparison
- recommendations
- alerts
- degradations
This gives the app a second primary workflow alongside service-status tracking: checking whether model quality and reliability appear to be slipping.
| Area | Support |
|---|---|
| Status pages | Atlassian Statuspage, incident.io |
| Built-in providers | OpenAI, Anthropic |
| Custom providers | Compatible URLs using those same two formats |
| AI benchmark view | AI Stupid Level |
- Atlassian Statuspage pages
- incident.io pages
- built-in OpenAI and Anthropic providers
- compatible custom URLs using those same two page formats
- arbitrary custom status websites outside those formats
- providers with fully custom status UIs that do not expose compatible Atlassian Statuspage or incident.io structures
- Latest builds are published on GitHub Releases
- Requires macOS 14.0+
- The repository includes a GitHub Actions workflow that builds a Release
.app, packages it as a.dmg, and uploads it to Releases - Signed release builds can use Sparkle and GitHub Pages appcast updates when signing/notarization is configured
If Apple signing and notarization secrets are not configured yet, the workflow can still publish an unsigned .dmg so the release path remains testable end to end.
MenuStatus reads public HTTPS status endpoints and public AI benchmark data. No API keys, no accounts, and no telemetry are required for the core experience.
- macOS 14.0+
- Xcode 15+ command line tools
- Tuist
./run-menubar.shTo stop:
./stop-menubar.sh# Generate Xcode project
TUIST_SKIP_UPDATE_CHECK=1 tuist generate --no-open
# Build
TUIST_SKIP_UPDATE_CHECK=1 tuist xcodebuild build \
-scheme MenuStatus -configuration Debug -derivedDataPath .build
# Test
TUIST_SKIP_UPDATE_CHECK=1 tuist xcodebuild test \
-scheme MenuStatus -configuration Debug -derivedDataPath .buildPush a version tag and GitHub Actions will build a Release .app, package it as a .dmg, and upload it to GitHub Releases:
git tag v0.1.0
git push origin v0.1.0The workflow is defined in .github/workflows/release.yml and uses package-app.sh.
By default the script uses hdiutil so it works reliably in CI. If you want a styled Finder layout locally and already have create-dmg installed, run USE_CREATE_DMG=1 ./package-app.sh 0.1.0.
Optional GitHub repository secrets for signed/notarized builds:
APPLE_CERTIFICATE_P12_BASE64: Base64-encoded Developer ID Application certificate (.p12)APPLE_CERTIFICATE_PASSWORD: Password for the.p12APPLE_SIGNING_IDENTITY: Signing identity, for exampleDeveloper ID Application: Your Name (TEAMID)APPLE_ID: Apple ID email used for notarizationAPPLE_APP_SPECIFIC_PASSWORD: App-specific password for that Apple IDAPPLE_TEAM_ID: Apple Developer team ID
ProviderConfigStore ──providers──► StatusStore ──@Observable──► SwiftUI Views
│
StatusClient ──fetch & parse───────────┘
│
SettingsStore
(UserDefaults)
AIStupidLevelClient ──fetch──────────► AIStupidLevelStore ──@Observable──► AIStupidLevelPageView
| Layer | Responsibility |
|---|---|
Status Models (StatusModels.swift) |
Provider configs, incidents, component uptime, presentation types |
Provider Config (ProviderConfigStore.swift) |
Runtime provider list, persistence, auto-detection |
Status Client (StatusClient.swift) |
Network requests and HTML parsing for Atlassian Statuspage and incident.io |
Status Store (StatusStore.swift) |
Observable state, polling, history derivation, grouped sections |
AI Stupid Level Client (AIStupidLevelClient.swift) |
Benchmark, alerts, recommendations, degradations, and model-detail fetches |
AI Stupid Level Store (AIStupidLevelStore.swift) |
Observable benchmark state, caching, polling, and hover prefetching |
| Views | MenuBarExtra, provider tabs, uptime rows, benchmark panels, settings |
Generated .xcodeproj / .xcworkspace and build outputs (.build/, Derived/) are gitignored.
Licensed under AGPL-3.0.





