MRRDock reads Stripe, RevenueCat, Paddle, Lemon Squeezy, Polar, Dodo Payments and Gumroad, adds them up, and keeps the total one glance away. Free, open source, and your API keys never leave your Mac.
brew install --cask simonsruggi/tap/mrrdockIf you sell software, your revenue is scattered. The SaaS is on Stripe, the iOS apps report through RevenueCat, the desktop app went through Paddle because of VAT, the templates sit on Lemon Squeezy. Answering “how am I doing this month?” means four logins and a mental sum that ignores the fact three of them bill in dollars.
MRRDock does that sum every fifteen minutes and leaves the answer in the menu bar.
Figures in the screenshots are demo data.
Seven platforms plus any HTTPS endpoint of your own, in any combination. Two Stripe accounts and three RevenueCat projects add up like anything else.
Every source converted into your display currency with live rates. Amounts that can’t be converted are shown separately, never silently dropped.
24H, 7D, 1Y or a custom range, with the “vs 30 days ago” delta. History is backfilled from your provider’s own MRR series.
MRR · MRR + 30-day change · ARR · 28-day revenue · active subscriptions · one source at a time · icon only.
Replaces every figure with ••• for screen sharing or a café, revealed with one click.
MRR milestones (“just crossed €5,000”) and an optional daily summary at 22:00.
A source that errors keeps its last known figure with a badge instead of dropping the total to zero.
Native SwiftUI, universal binary, signed with a Developer ID, notarized by Apple, updated in place through a signed feed.
| Platform | MRR | Active subs | Trials | 28-day revenue |
|---|---|---|---|---|
| Stripe | ✔ | ✔ | ✔ | optional |
| RevenueCat | ✔ | ✔ | ✔ | ✔ |
| Paddle Billing | ✔ | ✔ | ✔ | — |
| Lemon Squeezy | ✔ | ✔ | ✔ | — |
| Polar | ✔ | ✔ | — | ✔ |
| Dodo Payments | ✔ | ✔ | — | — |
| Gumroad | — | — | — | ✔ |
| Custom HTTPS endpoint | ✔ | ✔ | ✔ | ✔ |
Every key is used read-only: MRRDock issues GET requests and nothing else. The custom endpoint is how you cover Superwall, App Store Connect, Google Play or an internal billing table — return a small JSON object and it counts like any other source.
API keys live in the macOS Keychain, never in the app’s JSON, never in logs.
The app talks to your payment platforms directly. There is nothing in between to trust.
No login, no analytics, no crash reporting. Nobody, including the author, can see your revenue.
MIT licensed, no package dependencies, 37 tests. Read the provider code before you paste a Stripe key into it.
Every MRR tracker for the Mac menu bar makes a different trade. Here is where MRRDock sits, so you can pick the right one rather than the first one.
| MRRDock | CatBar | IndieBar | Baremetrics / ChartMogul | |
|---|---|---|---|---|
| Price | Free, MIT | Freemium, Pro subscription | Paid, one-time | Paid monthly, per MRR tier |
| Source code | Open | Closed | Closed | Closed |
| Platforms read | Stripe, RevenueCat, Paddle, Lemon Squeezy, Polar, Dodo, Gumroad, custom | RevenueCat | Stripe, RevenueCat, GA4 | Stripe, plus whatever the plan includes |
| Several accounts per platform | Yes | — | — | Depends on plan |
| Where the data goes | Nowhere: Mac → platform API | Mac → RevenueCat API | Mac → platform APIs | Your billing data on their servers |
| Cohorts, LTV, churn | — | — | — | Yes, that’s the point |
| Lives in | Menu bar | Menu bar | Menu bar | Browser |
Read it this way: MRRDock is for shipping on more than one platform and wanting one number. CatBar is the more polished single-platform app if RevenueCat is all you use. Baremetrics and ChartMogul are for cohorts, LTV and forecasting — MRRDock answers one question, “what is my MRR right now?”, and deliberately stops there.
For every recurring line item MRRDock knows the price, the interval, the quantity and any percentage discount:
monthly = unit_price × quantity × (intervals_per_month ÷ interval_count) × (1 − discount)
intervals_per_month is 30.4375 for daily, 4.348 for weekly, 1 for monthly and 1/12 for yearly — the average Gregorian month, so twelve monthly plans and one yearly plan reconcile to the cent instead of drifting apart.
| Case | What MRRDock does |
|---|---|
| Free trial | Counted in Trials, contributes 0 to MRR |
| Yearly plan | Divided by 12 |
| Seats / quantity | Multiplied |
| Percentage coupon | Applied |
| Fixed-amount coupon | Not applied — prorating it needs data these APIs don’t return |
| Usage-based / metered price | Not guessed. Flagged as “could not be priced”, so an understated total is visible |
| ARR | Exactly MRR × 12, nothing smoothed behind your back |
The full table, including taxes and past-due handling, is in the README.
Yes. MIT licensed, no paid tier, no limit on the number of sources. If it saves you a browser tab a day, sponsoring keeps it going.
No. There is no MRRDock server. The app calls your payment platforms directly and stores settings and history in ~/Library/Application Support/MRRDock/.
The key is stored in the macOS Keychain and only sent to Stripe over HTTPS — but you don’t have to give it a full key: create a restricted key limited to reading subscriptions, or use the custom endpoint and keep the real key on your own server.
For the MRR figure itself, yes: MRRDock reads the same subscriptions from the same platforms and costs nothing. For cohort analysis, LTV and churn forecasting, no — those products do work a menu bar popover shouldn’t.
Yes, that is the main reason it exists. Add one source per account or project, in any mix, and the menu bar shows the converted total.
Not as first-class sources yet: Superwall has no public revenue API, and Apple and Google expose downloadable reports rather than a metrics endpoint. All three work through the custom HTTPS endpoint today, and native support is on the roadmap.
Stripe’s dashboard applies its own rules to proration, taxes and fixed-amount coupons. MRRDock states its rules openly, so any difference is explainable rather than mysterious.
macOS 14 Sonoma and later, Apple Silicon and Intel, as one universal binary.
No. MRRDock is a native macOS menu bar app written in SwiftUI. The provider code is plain Swift and reusable, but there is no cross-platform build.
brew install --cask simonsruggi/tap/mrrdock
Or download the zip, unzip and drag the app to /Applications. It is signed with a Developer ID and notarized, so it opens with a double-click. Auto-updates are built in.
Prefer to build it yourself?
git clone https://github.com/simonsruggi/MRRDock.git
cd MRRDock
./build-app.sh
No package dependencies — nothing to vendor, nothing to audit but the app itself.