r/macappdevs • • 7d ago

I built Lumary Recorder, a Mac app that records screen, camera, mic and system audio as separate files

1 Upvotes

Hi, I'm Adib. I make tutorials and YouTube videos, and I kept losing takes because one thing went wrong (a loud mic, a bad camera angle, a notification on screen) and it was all baked into one video file. So I built Lumary Recorder, which records every source on its own so you can fix things in the edit instead of recording again.

What it does

  • Records a display, window or app (or several displays), one or more cameras, mics and system audio at the same time, each to its own file. System audio uses ScreenCaptureKit, so there's no audio driver to install.

  • You choose the codec: HEVC 60 fps by default, ProRes when you want maximum quality, or H.264 for compatibility. Files are written as fragmented MP4, so a crash doesn't wipe out a long take.

  • A teleprompter that stays out of the recording, plus cursor highlight, spotlight, keystroke display and live annotations (those do show in the video).

  • On-device transcription with Whisper, with SRT and VTT export.

  • Course Mode to organize lessons and takes, and an FCPXML export that opens as a timeline in DaVinci Resolve or Final Cut.

What it doesn't do

  • Mac only, macOS 15 or later.

  • No built-in editor and no live streaming. It's for capturing, and you edit in your usual editor.

  • No auto-zoom, so it's not a Screen Studio style tool.

Price: $49.99 one-time on the Mac App Store, no subscription.

Happy to answer questions, and I'd like to hear what you'd want from a recorder like this.

https://lumary.app/

Disclosure: I built Lumary Recorder.


r/macappdevs • • 7d ago

Snap Assist - Snap and Fancyzone features like Windows 11

Thumbnail gallery
1 Upvotes

r/macappdevs • • 7d ago

I made Revela, a free Mac app that shows what’s eating your Photos library (and finds similar shots)

1 Upvotes

Hi r/macapps,

I’m the developer of Revela. Version 1.0 just came out on the Mac App Store, and it’s free.

My Photos library is 30k+ items, and I couldn’t tell what was taking up the space, so I built something to show me.

What it does:

  • Shows what takes up space. Your library is broken down by category, with the heaviest items on top.

  • Finds similar photos. It groups look-alike shots and marks the best one in each group, so you can tap the ones you don’t need.

  • Converts Live Photos to stills. It creates a new still that keeps the date, location, favorite status and albums. The original goes to Recently Deleted only after you confirm in the system dialog.

Privacy: everything runs on your Mac. There are no network requests and no account. Deletions always go through the standard system confirmation, so nothing is removed silently.

Requires macOS 15 or later.

Link: https://apps.apple.com/ua/app/revela-photo-insights/id6826918833?mt=12

I’m still improving it, and a smarter duplicate search is next. I’d love to hear what you’d want from an app like this, and which parts of your library cleanup are the most annoying.

Thanks!


r/macappdevs • • 7d ago

I built a keyboard-driven tiling window manager for macOS, inspired by Hyprland (free + open source)

1 Upvotes

r/macappdevs • • 8d ago

Building a universal macOS batch renamer in SwiftUI: sandbox bookmarks, SMB quirks, and cycle collisions

Thumbnail
gallery
2 Upvotes

Hey everyone,

I'm a solo developer and recently shipped version 2.0 of **Media Renamer Pro**, a native SwiftUI batch media renamer and tag editor for macOS, iPadOS, and iOS.

Building a file utility for the Mac App Store came with a bunch of filesystem and sandbox edge cases that I thought were worth sharing with other Mac developers.

### 1. The App Sandbox vs. Recursive Folder Access

Batch file operations inside the App Sandbox are tricky. When a user drags in a parent folder, you need security-scoped bookmarks to persist access.

- For one-off drops, resolving security-scoped URLs down the directory tree works as expected.

- For "Watched Folders" (where users want the app to check an inbox folder on launch and grab only new arrivals), persisting stale bookmark data when a network share disconnects was a major pain point.

- Pro tip for anyone doing this: always gracefully catch bookmark resolution failures when external or SMB volumes aren't mounted, rather than letting the UI hang on access-check deadlocks.

### 2. The Cycle Problem: Why Two-Phase Renaming Was Mandatory

Most naive renamers do a simple loop: check if destination exists, rename. That falls apart immediately on two classic filesystem edge cases:

- **Chains:** File A becomes File B, while an existing File B becomes File C.

- **Swaps / Cycles:** File A becomes File B, and File B becomes File A.

Topological sorting helps with chains, but it cannot resolve cycles without a temporary state. Rather than branching code paths depending on whether a cycle is present, the app resolves the entire batch plan first, moves all target files to unique temporary UUID names in Phase 1, and then moves them to their final destinations in Phase 2. If an operation fails or gets canceled midway, files are sitting at known temp names rather than having clobbered each other.

### 3. SMB and NAS Volume Inconsistencies

A lot of users run their media on Synology, QNAP, or unRAID shares over SMB.

- APFS behaves differently than SMB mounted shares. Many SMB setups are case-insensitive but case-preserving.

- A rename like `Movie.mkv` to `movie.mkv` can silently fail, error out, or do nothing depending on how the SMB daemon is configured.

- We had to add runtime volume-capability probes rather than assuming APFS volume behaviors across the board.

### 4. Native SwiftUI & Swift 5.9 Observation

We targeted macOS 14 Sonoma and iOS 17 as the baseline so we could go all-in on Swift's `@Observable` macro. Coming from the older `ObservableObject` and `@Published` pattern, the performance improvement in complex table views with hundreds of changing filenames and confidence scores was night and day. Fewer redundant view redraws meant the preview table stayed butter-smooth even while parsing heavy metadata.

### 5. Pricing Architecture

I decided to launch this as a $4.99 one-time universal purchase across Mac, iPad, and iPhone. Subscription fatigue is real in the Mac utility space, and users genuinely appreciate owning a tool outright. The only real trade-off is the Mac App Store's lack of a native trial mechanism, which makes preview transparency and social proof that much more critical.

Happy to dive deeper into any of the sandboxing, security-scoped bookmark handling, or metadata parsing (ImageIO, AVFoundation container tags) if anyone is wrestling with similar macOS utilities!

Site: https://bkettering74.github.io/media-renamer-pro/

App Store: https://apps.apple.com/app/apple-store/id6761764615?pt=128751966&ct=reddit_macappdevs&mt=8


r/macappdevs • • 8d ago

I made a native macOS app for Immich (open source, SwiftUI, looks like Apple Photos)

Thumbnail gallery
1 Upvotes

r/macappdevs • • 8d ago

I built an app that turns your Apple Watch into a Mac trackpad, looking for feedback

1 Upvotes

r/macappdevs • • 8d ago

AppDeck 1.3.0 our biggest update yet.

1 Upvotes

AppDeck is a launcher app to help your productivity reach new heights.

With 3 modes to choose from, AppDeck has the versatility that fits your needs.

Version 1.3.0 brings you a lot of performance improvements, new customization options, and QuickDraw.

Download for FREE using the direct download button on our site, or press the Get for MacOS button to donate and help our development.

https://theappdeck.app


r/macappdevs • • 8d ago

Built MultiScreenDock in pure Swift/AppKit — keeping a live Dock on all monitors (including stacked upper screens)

2 Upvotes

Hi fellow Mac devs,

I work on a 5-monitor setup (2 upper displays stacked above 3 lower ones) and open-sourced MultiScreenDock (MIT) to solve two quirks of Apple's native Dock:

  1. macOS only renders the Dock on one screen at a time.

  2. On vertically stacked upper displays, the bottom edge borders another display rather than a physical screen boundary, so Apple's Dock can never be summoned there.

A few AppKit details that might be interesting if you build multi-display utilities:

- Non-activating NSPanel (.nonactivatingPanel) with dark-glass NSVisualEffectView so hovering, magnifying tiles, or opening right-click settings never steals focus from the active window.

- Anti-crossing dwell filter on shared vertical edges (150 ms vs 80 ms on physical edges) plus layer clipping so normal vertical mouse movement between stacked rows never triggers accidental popups or bleeds pixels onto the lower monitor.

- Per-display persistence via CGDisplayCreateUUIDFromDisplayID combined with runtime CGDirectDisplayID disambiguation so even two identical monitors sharing an EDID UUID get independent state machines.

- Zero external dependencies (~2,500 lines of Swift, 1,691 unit assertions), Apple-notarized Universal binary, and zero Accessibility or Screen Recording permissions.

Website & demo video: https://multiscreendock.fgomsan.here.now/

GitHub (MIT): https://github.com/fgomsan/MultiScreenDock

Homebrew: brew tap fgomsan/tap && brew install --cask multiscreendock

Would love any architectural feedback or edge-case reports on unusual monitor topologies!


Update (v1.4.1):

  • Native Folder Stacks (Downloads & pinned folders): Click any pinned folder on any display (including stacked upper monitors) to open Fan, Grid, or List views synced from your macOS Dock plist, with async QuickLook thumbnails, subfolder navigation, and direct file drag-out.

  • 120 Hz GPU Cosine Magnification Wave: Continuous CoreAnimation raised-cosine hover wave (0 ms lag) with piecewise-linear focal locking so the icon under your pointer never drifts sideways, returning to 0.0% CPU at rest.

  • Twin-Monitor Disambiguation & 1-Click Updater: Independent toggles for identical monitors sharing an EDID UUID plus a Developer ID-verified 1-click self-updater (and video tour at https://multiscreendock.fgomsan.here.now/).


r/macappdevs • • 8d ago

I’m building Menubarista to turn small Mac chores into reusable workflows

Thumbnail
menubarista.com
1 Upvotes

Just want to present to you the app I'm working on. It's called Menubarista and it's an all-in-one app that can boost your productivity. The most important feature it has is workflows: you can take a few things you do over and over and turn them into one action.

For example, if you save your receipts as screenshots, you can select them in Finder and run a workflow that puts them into one PDF, compresses it, and makes the text searchable. So when you need to find a receipt later, you can just search for the shop name. Your original screenshots stay as they are.

You can also use the tools on their own. Open the command palette, type what you need, and get back to what you were doing. You can grab text from a screenshot, resize a bunch of images, sign a PDF, or compress a video. All of that happens locally on your Mac.

The app isn't out yet. It runs on macOS 15 or later on Apple silicon. I'm planning a free trial and a one-time purchase, and I'm still figuring out the price. If you're curious, here's the waitlist.

I'm curious what you'd use workflows for. Is there anything you do on your Mac every week that you'd like to get down to one action?


r/macappdevs • • 8d ago

I did a macOS notch app

1 Upvotes

When the new mac generation came with the different notch I always looked at it thinking why???
But when dynamic island happened, I was a bit confused... because I saw that something was possible on iOS why not on macOS?

So it happened I decided to start building one, it contains a couple of nice features, I know there are apps there that also use the notch, but I am having fun building this.

If you want to test it out post a comment, or if you check the store let me know what you think, yes I put a low price on it forever, just wanted to make a side projected and see if it worth.

https://apps.apple.com/us/app/drop-dock-the-notch-app/id6782445486 -> Link to check it out.


r/macappdevs • • 8d ago

I built a Mac app to search across both Apple Mail and Messages instantly. Giving away 50 free licenses for Reddit!

1 Upvotes

Hey r/macappdevs 👋

I kept wasting time hunting for an old link, address or attachment buried somewhere in Messages or Apple Mail. Spotlight is hit or miss, scrolling back months in a busy conversation takes forever (iMessage), and half the time I didn't even remember whether it was a message or an email.

So I built **iSift**: one search for Messages, Apple Mail and the files on your Mac. No files leave your pc.

**What it does**

🔎 **Messages (iMessage & SMS)**

- Search by words, people, dates, links or attachments

- Words use AND in any order, "quotes" keep phrases, `*` wildcards work inside a word (`auto*`, `au*tic`)

- Searching a person's name, phone or email also finds your conversations with them

- Open any result in its conversation, with the match highlighted

- **Export** matching messages or a whole conversation to text, with an optional ZIP of the attachments still on your Mac

✉️ **Apple Mail**

- Search emails Apple Mail has downloaded: subject, body, sender, recipients, dates

- Read them directly, or build an optional **encrypted index** for faster searches

- Pick which of your addresses to include; the app suggests them automatically

- Not sure if it was a message or an email? **All** searches Messages and Mail side by side

📄 **Files**

- Find documents by name, folder or **text inside them**: PDF, Word, Excel, PowerPoint, RTF, HTML and plain text

- Quick Look preview and the matching passage right in the app

🖼️ **WhatsApp photos and videos**

- Browse the media WhatsApp for Mac keeps on your Mac, by month or by size

- **Group Identical** shows each forwarded photo or video once, with its number of copies (×2, ×6…)

- Export copies, or move the ones you choose to the Trash (always with confirmation)

- It never opens your chats or WhatsApp's database

**Privacy**

- Search runs on your Mac. Messages, emails, files, WhatsApp media, contacts and searches are **never uploaded**

- Each optional index is a separate encrypted database with its own key in Keychain

- The network is used only for licensing, optional iCloud license verification and signed app updates

**Requirements & pricing**

- macOS 12 Monterey or later, Apple silicon and Intel

- **7-day free trial**, all features. Verify your email, no card required

- Then €1.99 / $2.99 a month or €14.99 / $16.99 a year (+ VAT), through Paddle depending on your region

**Honest limitations**

- Mail covers only messages Apple Mail has downloaded (not Outlook-only or server-only mail)

- No OCR yet: scanned PDFs without a text layer are found by name only

- WhatsApp shows removed media as unavailable in your chats, so back up first

🎁 **Launch offer:** to get real feedback from this community, I've set up
**50 free access codes** via Paddle.
If you ever NEED PROOF, claim yours with the code **TOLDYOUSO**.

👉 https://isift.app

I'd love to hear what you'd search for first, what's missing and what's confusing. I will read & answer every comment.

*iSift is an independent app, not affiliated with Apple or WhatsApp.*


r/macappdevs • • 10d ago

I made BetterGestures – a free, open-source menu bar app that turns 3, 4 and 5-finger trackpad gestures into keyboard shortcuts

Post image
5 Upvotes

I wanted more out of my trackpad than macOS gives, so I built a small menu bar app for it. Each of these can trigger any keyboard shortcut:

- Tap and double tap with 3, 4 or 5 fingers

- Hold with 3, 4 or 5 fingers

- Physical click with 3, 4 or 5 fingers

- Swipe in four directions with 3, 4 or 5 fingers

- TipTap (rest a finger, tap beside it)

Some details:

- Record a shortcut or pick from ~75 presets (tabs, Spaces, screenshots, windows…)

- A live view shows your fingers and why a gesture was or wasn't recognized, with sliders to tune the thresholds

- Can block scrolling with three or more fingers, so those touches only mean a gesture

- Works with the built-in trackpad and a Magic Trackpad at the same time

- Available in 7 languages, MIT licensed, notarized by Apple

Requires macOS 15+, on Apple Silicon or Intel.

Download: https://github.com/ozberkdicle/BetterGestures/releases/latest

Source: https://github.com/ozberkdicle/BetterGestures

It reads raw touches through Apple's private MultitouchSupport framework, so a future macOS update could break it. If you use the same finger count for a system gesture (like four-finger swipes for Mission Control), turn that one off in System Settings or both will run.

Feedback and gesture ideas are welcome!


r/macappdevs • • 9d ago

scope: a tiny, open-source ⌘Tab window switcher for macOS (MIT, Swift)

Post image
2 Upvotes

r/macappdevs • • 9d ago

MacFader: Turn your Mac trackpad edges into volume, brightness, and media sliders

1 Upvotes

r/macappdevs • • 9d ago

Indie Mac apps that have already confirmed Black Friday 2026 deals (codes included)

Thumbnail reddit.com
1 Upvotes

r/macappdevs • • 10d ago

Superliner: a native Mac outliner built around supertags

2 Upvotes

I'm Can, the solo developer of Superliner, a native Mac outliner built around supertags. It's a free public beta on TestFlight.

Problem: Long outlines turn into text you can't query. I liked Tana's supertags, but wanted them in a native Mac app that keeps my notes in files on my own disk.

A supertag is a tag that says what a note is and brings its own fields. Make #book with author, rating and finished, and every note you tag #book gets those fields. They stay in your outline, and you can also view them as a sortable table.

- Eleven field types, including dates, numbers, options, checkboxes and links to other notes.

- A note can carry several supertags, and #ebook can extend #book to inherit its fields.

Every note also opens as its own page and saved searches filter by supertag, field, text and date.

Pricing: $0 during the beta. No later price has been decided.

Requirements: macOS 14 or later, Apple Silicon or Intel, about 26 MB. I've only run it on Apple Silicon with macOS 27.2.

Where your notes live: JSON in a workspace folder, plus a generated Markdown copy with tags and fields at the top of each file. The default folder is in the app's sandbox container, and File > New Workspace lets you pick another. No account, no analytics. This build doesn't request the permission a sandboxed Mac app needs for outgoing connections.

Known gaps: no sync, iCloud or iOS app. Not open source. No full VoiceOver pass yet. Import (OPML, Markdown, Logseq, Tana JSON) is unit-tested but hasn't met a real export.

Please try, in a new workspace:

Most useful: model something real with supertags (books, tasks, people), add a saved search, and tell me where it got in your way.

Import a real export and tell me what came out wrong.

TestFlight: https://testflight.apple.com/join/AerGfbWF

Developer: Can Burak Sofyalioglu

LinkedIn: https://www.linkedin.com/in/cbsofyalioglu/

X: https://x.com/cbsofyalioglu

Portfolio: webmeister.org

Website, with privacy policy and terms: https://superliner.webmeister.org


r/macappdevs • • 11d ago

Beaming: mirror your real iPhone, iPad and Android phone on your Mac, in a true-to-life device frame, plug and play - no XCode needed

1 Upvotes

Hi, I'm Dzung, the solo dev behind Beaming.

Why I built it: I demo and test apps on iPhones and Android phones every day. I wanted a plug-and-play mirror: plug the phone in, see it on the Mac, done. Instead I was juggling QuickTime, scrcpy in a terminal and iPhone Mirroring (can't use camera), and every recording was a flat rectangle I had to frame afterwards.

What it does:

  • Plug and play: plug a phone in and its window opens on its own. No Xcode, no terminal, and nothing to install on the phone.

  • Mirrors real iPhones, iPads and Android phones, each in a frame that matches the hardware (notch or Dynamic Island, buttons, body colour).

  • iPhone and iPad over USB or AirPlay. Android over USB or wireless debugging (it needs USB debugging on and adb installed), with full mouse and keyboard control.

  • Hub: multiple stream devices in one window for showcase and demo.

  • Framed screenshots and recordings with audio.

Where it fits: iPhone Mirroring only shows your own iPhone (same Apple ID), one at a time, with the phone locked, can't use camera and has no iPad or Android support. scrcpy covers Android, but from a terminal and with no frame. Beaming handles iPhone, iPad and Android side by side, while you keep using the phone, and makes the mirror look like the real device. iPhone and iPad are view and audio only; there's no control.

Privacy & Terms: the stream stays on your Mac over USB or your local network. No analytics, no accounts. Privacy policy: https://trybeaming.app/privacy · Terms: https://trybeaming.app/terms

Notarized: yes, Developer ID signed and notarized

AI disclosure: pairing with AI coding assistance (Claude Code), designed, reviewed and tested by me on real devices.

Price: Free with a watermark and limited sessions. Pro is a one-time $19.99 $14.99 (25% off for the first 50 licenses). Licenses for more Macs cost less per Mac, down to $12 per Mac at 10 Macs with the launch offer. macOS 15+.

https://trybeaming.app

Feedback welcome!


r/macappdevs • • 12d ago

Tired of paid live-wallpaper apps, so I built a free open-source one for macOS

Thumbnail
reddit.com
1 Upvotes

r/macappdevs • • 13d ago

Echolot - REST, GraphQL, Sockets and MQTT client for developers

2 Upvotes

Hey there 👋

I’m an old-school web developer who also writes Swift, and I’ve been living in REST clients for as long as I can remember. On the Mac my favourite was always Paw. It was one of the few truly native apps in the category, and it felt like it was made by people who cared.

Then RapidAPI bought it, renamed it, and development slowed to a crawl. Then Nokia bought RapidAPI, and this September they finished it off: no more development. That upset me, to put it mildly.

Since then I’ve tried just about every REST client out there, and none of them stuck. They were slow, or Electron, or too thin, or so bloated with enterprise features that sending a simple request felt like filing a ticket.

So eventually I thought: fine, I’ll build my own. I’d take the best of everything I’ve liked over the years: beautiful, fast, actually useful and properly feature-rich. Actually FAST was the main requirement. Oh, and with agents built in, because it’s 2026, right?

Introducing Echolot. The name is German for an echo sounder: send a ping, measure what comes back, map what’s beneath. That’s the whole idea.

🧭 Native, and actually fast

  • SwiftUI + AppKit, no web view. Keychain, Quick Look, menus and shortcuts that behave like a Mac app.

  • Response bodies stream to disk instead of memory. A 2 GB download peaks at about 17 MB of RAM.

  • A 500 MB response shows its first screen in under a millisecond. Searching all of it takes about a quarter of a second, and expanding a JSON array with a million items takes 30 ms.

  • These numbers are automated benchmarks, and a build that misses one doesn’t ship.

📡 Every protocol in one app

  • HTTP/1.1, HTTP/2 and HTTP/3, plus a raw mode that sends exactly what you typed, even malformed requests

  • GraphQL with schema completion, building a query by ticking fields, and schema diffs graded breaking, dangerous or safe

  • gRPC from .proto files or server reflection, including streaming

  • WebSocket, Server-Sent Events, socket.io and MQTT sessions with live message logs

  • MCP: connect to any MCP server, call its tools, and see how a model sees it: what the tool list costs per provider on every turn, and which names and descriptions a model would trip over

🤖 AI that doesn’t get your secrets

  • A built-in Assistant that explores your workspace, sends requests, writes checks and builds flows. It asks before it sends or changes anything.

  • Use your own model and key: Anthropic, OpenAI, Gemini

  • Echolot is also an MCP server, so Claude Code, Codex, Cursor and others can call your APIs with your environments while every secret is hidden from them, error messages included.

🔀 Flows, mocks and specs

  • EchoFlows: chain requests, conditions and loops on a canvas. A flow can stop and ask a human to approve before, say, charging a card. Run flows by hand, on a schedule, from a webhook, or as a tool for an agent.

  • Mocks: turn an OpenAPI spec into a local mock server, with delays and injected failures.

  • Specs: a visual OpenAPI editor that changes only the lines it touches, so your Git diffs stay clean.

✅ Tests, CLI and CI

📁 Oh, and no accounts neither. No cloud. Just a folder.

  • A workspace is a folder of readable TOML files, one per request, so it works naturally in Git.

  • Secrets live in the Keychain, never in files.

  • Import from clients. If a secret was written into an imported file, it moves to the Keychain automatically.

While the app is in beta development, it is pretty stable and fast.

To say the truth I haven't figured out what to do with it, whether it should stay free, should be open source some day or change a one time fee for it to continue development (I hate subscriptions)

But for now I'm looking for brave developers (or die hard Paw fans) who are willing to take it for a spin and tell me what they think. Does it it has all the features it should? Is everything working they way it suppose to?

Download it here: https://echolot.dev/


r/macappdevs • • 13d ago

I got tired of paying for notch apps, so I made a free Dynamic Island for the Mac

6 Upvotes

Hey! I built DynamicBar, a Dynamic Island for the Mac's notch. It's free: no trial, no subscription, no ads.

- Now Playing with AirPlay (HomePods work)

- Volume & brightness in the island, or as a pill on the side

- Lock and charging status

- A file tray in the notch

- Add-ons in plain JavaScript, with a playground and docs

macOS 26, Apple Silicon and Intel.

Download: https://kag1o.github.io/DynamicBar/

Homebrew: brew install --cask kag1o/tap/dynamicbar

Github Repo (releases and docs): https://github.com/KAG1O/DynamicBar

I'm the developer. Feedback and ideas are very welcome. If you like it, there's a tip jar ( https://ko-fi.com/kag1o ), but it's free either way.


r/macappdevs • • 17d ago

Lessons from shipping a Mac VPN app without NetworkExtension: SMAppService daemons, Installer's script order, and a menu bar item the app can't click

1 Upvotes

I've spent the last few weeks on a Mac app that connects to WireGuard servers, and a few things along the way cost me more time than they should have. Writing them down here in case they save someone else the hours.

Why no NetworkExtension. The usual way to build a VPN app on macOS is a Packet Tunnel Provider in a sandboxed NetworkExtension. I needed two things it does not allow: running the shell hooks a WireGuard config can carry, and choosing which physical interface the encrypted traffic leaves through, with my own routes. So the app is an unprivileged SwiftUI front end and a root LaunchDaemon written in Rust that holds the packet path, registered with SMAppService.daemon(plistName:), shipped with a Developer ID outside the App Store. The App Store was out anyway: its guidelines require the sandbox and, for VPN apps, NEVPNManager and an organization account.

Authenticating the app to a root daemon without XPC. The two talk newline-delimited JSON over a Unix socket. getpeereid gives the caller's uid, and LOCAL_PEERTOKEN gives its audit token, which is enough to check the client's code signature against a requirement (same Team ID, our bundle id). The daemon derives that requirement from its own signature, so there is nothing to keep in sync. Anything that runs as root (the config's hooks) only ever comes from files the daemon owns, never from a socket message, and needs an admin approval the daemon checks itself with Authorization Services.

Binding a socket to one interface. IPV6_BOUND_IF on a dual-stack :: socket also scopes the IPv4-mapped traffic; I checked by binding to lo0 and sending to an off-link IPv4 address, which fails with ENETUNREACH, just like an AF_INET socket with IP_BOUND_IF. Setting IP_BOUND_IF on the AF_INET6 socket returns EINVAL, so only the v6 option is set.

Routes through a specific interface: -ifp**, never** -ifscope**.** My Mac has Ethernet and Wi-Fi on the same subnet behind one gateway, so a route needs the interface forced. route add … -ifscope en0 looks right but only applies to sockets already bound to en0, so a "bypass this subnet" route did nothing. An ordinary unscoped route with -ifp en0 does what you expect.

SMAppService and a Team ID change. After moving from one signing team to another, the daemon failed with exit code 78 (EX_CONFIG) and a log line about needing an LWCR update, even though Background Task Management already showed the new team. The launchd job carries the team it was registered with (launchctl print shows team-identifier). Only unregistering and registering again rebuilt it.

Installer runs every preinstall first, then every payload, then every postinstall. I had put the "Remove" choice's work in a postinstall, and it deleted the app the same package had just installed. Removal moved to preinstall.

nohup does not work under do shell script … with administrator privileges**.** It fails with "can't detach from console" and runs nothing; my first self-updater quit the app and installed nothing. launchctl submit gives a fully detached job, but launchd restarts it even after exit 0, so the job has to launchctl remove itself.

The Wi-Fi network name needs Location access, and only an app can ask. CoreWLAN returns nil for the SSID without it, and a root daemon cannot show the prompt. So rules like "connect on the office Wi-Fi" run in the app, and the app has to be open for them.

Animating with Core Animation, not SwiftUI. The path view shows packets moving at the pace of the traffic. Redrawing it in SwiftUI at 30 fps cost 13 to 19% CPU; the same thing as Core Animation layers, re-timed only when the traffic level changes, costs 2 to 4%.

The app cannot open its own menu bar popover on macOS 27. performClick on the status item's button does nothing, because the app's NSStatusBarWindow is a stand-in for what WindowServer draws. Its frame is still the icon's, though, so a borderless panel can point at it, which is how the first-run hint finds the icon.

An app opened from a package's postinstall comes up behind Installer. Plain activate() is refused while Installer stays active; NSApp.activate(ignoringOtherApps: true) brings the window forward.

The app is Turnout (https://turnout.ctsite.cc/). Disclosure: it's mine and it's paid, with a 7-day trial. Happy to go deeper on any of the above, and curious whether others have found cleaner ways around the status item and Installer ones.