A native macOS app that tracks your workday across monitors and Windows VMs, then uses an on-device AI model to generate per-client summaries with billable hours and the key technical steps you performed — by default, no activity data or AI inference ever leaves your Mac. (On macOS 27 you can optionally let Apple's Private Cloud Compute write summaries; it is off until you explicitly approve it, and screen content never goes there.)
- macOS 26 (Tahoe) or later. macOS 27 adds a larger on-device context window (summaries of busy days need fewer passes), screen descriptions written by the on-device model, and the optional Private Cloud Compute provider.
- To build it yourself: Xcode 26+, and Go 1.22+ if you also want to build the Windows companion agent.
- Multi-signal activity tracking — window title and app name as the reliable baseline, plus two optional enrichment tiers for apps whose title alone doesn't say what you're actually doing: a browser's current URL and on-page labels, and periodic on-screen text via OCR.
- Accurate presence — app and window switches are recorded the moment they happen, not at the next poll. Scrolling, clicking and calls count as being present; locking the screen, the screen saver, or sleep stop the clock immediately.
- Windows VM tracking — a small companion agent runs inside a Windows VM (VMware Fusion or UTM) and reports its own foreground app/window back over your Mac's local VM network, so time spent working inside the VM counts too.
- AI-generated client summaries — on-device model, no cloud calls, producing a written overview plus a structured, nestable outline of technical steps, optionally written in two languages at once. Billable hours always round up to the next 15 minutes, never down. Export as Markdown or PDF, or copy straight to the clipboard.
- Privacy for screen content — passwords, API keys, tokens, card numbers, IBANs and similar are stripped from on-screen text before anything is stored; nothing is read at all while a password field has focus, in a password manager, or in a private browser window; and captured text is deleted after a retention period you set (60 days by default).
- Custom summary templates — decide which sections a summary should have (e.g. a section with "steps" in its name automatically gets the nestable outline format instead of a plain paragraph), with a live preview as you edit.
- Summary history — regenerating a summary snapshots the previous version first, so nothing is ever silently lost.
- Client matching that explains itself — every match traces back to a plain pattern (contains/regex/VM name) you can see and edit; ambiguous cases (several client names visible at once, e.g. an RDP manager) are left for a human rather than guessed at.
- Review — a handful of cards instead of a row per window: auto-matches grouped by client and by the pattern behind them, unmatched windows grouped by app. Confirm or ignore a whole card, a pattern, or a single window; correcting or assigning offers to save a matching pattern. What you decide is remembered (and listed under Remembered…, where it can be forgotten), so recurring windows stop coming back, and every action can be undone. Windows that shouldn't be tracked at all can be excluded one by one, per group, per app, per website, or for everything you've ticked; exclusions are listed under Remembered… as well as in Settings.
- History — a calendar of every past day, with that day's activity timeline and per-client hour breakdown at a glance.
- Client-linked to-dos — jot one down from the menu bar with an optional client and due date, or manage the full list from the main window: inline notes, drag-and-drop reordering, and a Finder-style column header to sort by name, client, or date whenever you need a different view.
- Menu bar quick-pick — optionally lock in which client you're working for right now, as a secondary signal alongside automatic detection (off by default; turn it on in Settings → General).
- Your data stays yours — export everything to a single file to move to another Mac, or let old raw activity events archive off automatically after however long you choose to keep them.
- Update checker — checks this repo's releases on launch and every 24 hours, plus on demand. Never auto-installs; only ever offers a link to the release.
Grab the latest .dmg from the Releases page,
open it, and drag MoonScribe into Applications.
No release available yet, or you'd rather build it yourself?
git clone https://github.com/fbrd-dev/MoonScribe.git
cd MoonScribe
./build_app.shThis produces dist/MoonScribe.app — drag it to /Applications and launch it
(right-click → Open the first time, since a self-built copy isn't notarized).
The onboarding flow that runs on first launch covers all of this, but for reference:
- Accessibility permission — needed to read window titles, not just app names.
- Screen Content Enrichment (optional) — needs Screen Recording permission if enabled; can be turned on/off later in Settings → General.
- Local Network permission — macOS will ask the first time MoonScribe starts its local server for the Windows VM agent to talk to.
- Windows VM agent — deployed from Settings → VM Agent, either automatically
(VMware Fusion via
vmrun, UTM viautmctl— needs their respective guest agents running inside the VM) or via a one-time copy-paste PowerShell command as a fallback that always works.
DEVELOPMENT.md covers versioning and releases, signing and
notarization, the Windows agent, and some of the less obvious design decisions — worth
a look if you're curious how it works under the hood or want to contribute.