dnscrypt-proxy on macOS: should launchd ProcessType be Standard? Boot readiness improved from 117s to 42s #7166
Unanswered
corbon95
asked this question in
Everyday usage
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Output of
brew configOutput of
brew doctorDescription of issue
Summary
After a macOS reboot, my local DNS chain was unavailable while the Homebrew dnscrypt-proxy service was starting. In one before/after comparison, changing only the generated launchd plist's ProcessType from Background to Standard reduced the time from kernel boot to the first successful Cloudflare upstream health check from 117 seconds to 42 seconds.
I am posting in Discussions first because this is a limited observation on one machine, not a demonstrated general regression. I have not run brew update as part of this comparison, and brew doctor currently reports the deprecated/disabled formulae listed above. I cannot truthfully complete all the reproducible-bug issue checklist items yet.
Environment and setup
The dnscrypt-proxy formula explicitly contains:
Before/after measurements
Both boots were on 2026-11-02. All times below are elapsed from kern.boottime, not from login, desktop appearance, or Wi-Fi readiness.
During the Background capture, UDP queries to both 127.0.0.1:53 and 127.0.0.1:5053 timed out, and a TCP query through dnsmasq returned REFUSED. Direct dnscrypt-proxy queries began succeeding just after the upstream became ready. At the subsequent public-resolver checks, ordinary Cloudflare DNS, both configured bootstrap resolvers, and direct Cloudflare DoH requests were working.
With Standard, the diagnostic run after reboot found all local UDP/TCP and A/AAAA checks successful. Local queries completed in approximately 6-22 ms.
The post-change startup log also shows a short, explicit wait for networking:
The earlier boot had its first application log line and 'Network connectivity detected' at 17:47:38, followed by '[cloudflare] OK' at 17:47:49; kern.boottime was 17:45:52. Therefore, most of that boot's delay occurred before the first application log line, rather than inside the configured 60-second network probe.
Configuration and the change tested
The only intentional configuration change between these two measured boots was:
The service was unloaded/reloaded to read the new plist, and then the Mac was rebooted for the after measurement. launchctl print reported 'spawn type = daemon (3)' after the change, and the plist still contained Standard after reboot.
Relevant dnscrypt-proxy global settings were unchanged (the usual public-resolvers source block is omitted here):
Public forwarding in dnsmasq used port=53, listen-address=127.0.0.1, no-resolv, and server=127.0.0.1#5053.
Questions
Is Background the intended launchd classification for dnscrypt-proxy when the machine's DNS depends on it? Would process_type :standard be appropriate for this formula, or is there a reason to retain Background?
What additional measurements would be useful to distinguish launchd resource-priority effects from other boot-time factors?
There is only one measured boot per setting so far. This comparison does not establish causation, exclude different boot workloads, or show that every macOS system is affected. I have previously used dnscrypt-proxy on Linux without noticing a comparable startup delay, but I do not have a directly comparable Linux measurement to include.
AI disclosure: this initial post was drafted with OpenAI Codex (GPT-6) from the diagnostic results collected on this Mac. Full diagnostic archives, private DNS zones, and unrelated network details are not included.
All reactions