For IT

Napless for IT administrators

Updated September 30, 2026

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.
  • Napless Pro features can be turned off for the whole fleet with one key each: NAPDisableAgentHooks, NAPDisableChatPresence and NAPDisableTimeMachineTrigger. NAPDisableTrial turns off trial activation.
  • Heat protection (NAPStopWhenHot) is on by default. Forcing it on keeps anyone from turning it off.

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 — Start keeping awake when the app launches; default false.
run.bundl.napless.AllowDisplaySleep bool true is stricter Allow the display to sleep; default true.
run.bundl.napless.MenuBarIconHighlightDisabled bool — Disable menu bar icon highlighting.
run.bundl.napless.IsQuitOnTimerExpirationEnabled bool — Quit when a timed session expires.
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 awake in Low Power Mode.
run.bundl.napless.ClickToKeepAwake bool — 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 — Whole JSON trigger configuration: isEnabled, appBundleIdentifiers, frontmostOnlyBundleIdentifiers, whenOnPowerAdapter, whenExternalDisplayConnected, networkThresholdBytesPerSecond, cpuThresholdPercent, wifiNetworkNames, schedule (weekdays, startMinute, endMinute), sustainSeconds, duringCalls, whileAudioPlaying, diskThresholdBytesPerSecond, onlyWhileOnPower, whileTimeMachineBacksUp. Also accepts a JSON string.
run.bundl.napless.ShowTimeLeftInMenuBar bool — Show remaining duration in the menu bar; default true.
run.bundl.napless.GlobalShortcut data — Property-list dictionary containing the global shortcut key code and modifiers.
run.bundl.napless.FocusMode string — Focus filter mode.
run.bundl.napless.TimeInterval int — Default manual duration in seconds; zero means indefinite.
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.
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 — Restart duration timers on real user activity; default false.

Help

Questions about deploying Napless: support@napless.io.