Founding offerNapless Pro is $8 for the first 50 customers, then $24. Pay once, yours for life on 3 Macs.Get Napless Pro

For IT

Napless for IT administrators

Updated

Napless reads managed preferences from configuration profiles, so any MDM that can deliver a com.apple.ManagedClient.preferences payload can manage it. The preference domain is run.bundl.napless.

How managed settings behave

  • A forced setting is enforced inside the app, and the control shows Managed by your organization.
  • Profiles override local values. When both a device and a user profile force a key, the user profile may only make the device value stricter.
  • You can turn off each of these Napless Pro features for the whole fleet with one key: NAPDisableAgentHooks, NAPDisableChatPresence, NAPDisableRemoteAlerts and NAPDisableTimeMachineTrigger. NAPDisableTrial turns off trial activation in Napless 1.2.12 and earlier; from 1.2.13 there is no trial.
  • Heat protection (NAPStopWhenHot) is on by default. Forcing it on keeps anyone from turning it off.
  • To confirm on a managed Mac that macOS is honoring a keep-awake, verify keep-awake with pmset -g assertions.

Sample configuration profile

Save as a .mobileconfig and install with Profiles, or upload it to your MDM. This example forces heat protection on and sets the battery floor to 30 percent.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>PayloadContent</key>
			<dict>
				<key>run.bundl.napless</key>
				<dict>
					<key>Forced</key>
					<array>
						<dict>
							<key>mcx_preference_settings</key>
							<dict>
								<key>NAPStopWhenHot</key>
								<true/>
								<key>run.bundl.napless.BatteryCapacityThresholdEnabled</key>
								<true/>
								<key>run.bundl.napless.BatteryCapacityThreshold</key>
								<real>30</real>
							</dict>
						</dict>
					</array>
				</dict>
			</dict>
			<key>PayloadDisplayName</key>
			<string>Napless Managed Preferences</string>
			<key>PayloadIdentifier</key>
			<string>run.bundl.napless.managed</string>
			<key>PayloadType</key>
			<string>com.apple.ManagedClient.preferences</string>
			<key>PayloadUUID</key>
			<string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
		</dict>
	</array>
	<key>PayloadDisplayName</key>
	<string>Napless</string>
	<key>PayloadIdentifier</key>
	<string>run.bundl.napless.profile</string>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>B2C3D4E5-F678-90AB-CDEF-1234567890AB</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

Managed keys

Key Type Stricter value What it does
run.bundl.napless.ActivateOnLaunch bool n/a Start keeping awake when the app launches; default false.
run.bundl.napless.AllowDisplaySleep bool true is stricter Allow display to sleep; default true.
run.bundl.napless.MenuBarIconHighlightDisabled bool n/a Disable menu bar icon highlighting.
run.bundl.napless.IsQuitOnTimerExpirationEnabled bool n/a Quit Napless when the timer ends.
run.bundl.napless.DeactivateOnUserSwitchEnabled bool true is stricter End the manual session on user switch.
run.bundl.napless.BatteryCapacityThresholdEnabled bool true is stricter Enable battery protection; default false.
run.bundl.napless.LowPowerModeMonitoringEnabled bool true is stricter Stop keeping your Mac awake in Low Power Mode.
run.bundl.napless.ClickToKeepAwake bool n/a Click the menu bar icon to toggle keep-awake.
run.bundl.napless.BatteryCapacityThreshold double higher is stricter Battery protection floor in percent; minimum 10, default 20.
run.bundl.napless.Triggers data n/a Whole JSON trigger configuration: isEnabled, appBundleIdentifiers, frontmostOnlyBundleIdentifiers, whenOnPowerAdapter, whenExternalDisplayConnected, networkThresholdBytesPerSecond, cpuThresholdPercent, wifiNetworkNames, schedule (weekdays, startMinute, endMinute), sustainSeconds, duringCalls, whileAudioPlaying, diskThresholdBytesPerSecond, onlyWhileOnPower, whileTimeMachineBacksUp, duringCalendarEvents, whileVolumeMounted, whileUSBDeviceConnected, whilePresenting, whileDownloading, whileVPNConnected, whileProcessesRun, whileLocalServer, whileRemoteLogin. Also accepts a JSON string.
run.bundl.napless.ShowTimeLeftInMenuBar bool n/a Show time left in the menu bar; default true.
run.bundl.napless.ShowReasonInMenuBar bool n/a Show what is keeping the Mac awake next to the menu bar icon: the app’s own icon when Napless knows the app (Claude, Zoom…), otherwise a symbol (agent, call, download…); default true.
run.bundl.napless.GlobalShortcut data n/a Property-list dictionary containing the global shortcut key code and modifiers.
run.bundl.napless.FocusMode string n/a Focus filter mode.
run.bundl.napless.TimeInterval int n/a Default manual duration in seconds; zero means indefinite.
run.bundl.napless.NotifyWhenCommandsFinish bool n/a Notify when a napless run or napless wait command exits after a minute or more; default true.
run.bundl.napless.NotifyOnUnexpectedSleep bool n/a Notify when the Mac sleeps while Napless is keeping it awake; default false.
run.bundl.napless.WeeklySummary bool n/a Post one weekly keep-awake summary notification on Monday; default false.
run.bundl.napless.SessionPresets data n/a Saved keep-awake presets (name, duration, display choice).
run.bundl.napless.RemoteAlerts data n/a Telegram and Slack alert settings; secrets stay in the Keychain.
NAPDisableChatPresence bool true is stricter Disable chat presence.
NAPDisableAgentHooks bool true is stricter Disable agent hooks and holds.
NAPDisableTimeMachineTrigger bool true is stricter Disable the Time Machine trigger.
NAPDisableRemoteAlerts bool true is stricter Disable alerts to Telegram and Slack.
NAPDisableTrial bool true is stricter Disable trial activation.
NAPStopWhenHot bool true is stricter Stop when thermal state is serious or critical; default true.
NAPRestartTimerOnActivity bool n/a Restart duration timers on real user activity; default false.

Help

Questions about deploying Napless: support@napless.io.

All Napless guides