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,NAPDisableChatPresenceandNAPDisableTimeMachineTrigger.NAPDisableTrialturns 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.