Skip to content
CodesWhatPublic

About

Keeps your Mac awake. A native macOS menu bar app.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Dilated app icon

Dilated

Keeps your Mac awake. A native macOS 26 menu bar app for Apple Silicon.

Timed holds, triggers, a CLI for agents, and an opt-in closed-lid mode.

Version 1.0.0-beta.13 macOS 26 or later Apple Silicon Latest release Coverage License MIT


Important

1.0.0-beta.13 is a public beta. Closed-lid mode is experimental. If Dilated quits or stops responding during a closed-lid session, normal sleep comes back on its own. Reboot recovery hasn't been verified on hardware yet. Report problems on GitHub.

Contents


Documentation

Resource Link
Website dilated.app
Download dilated.app/download/file
Installation and removal docs/INSTALLATION.md
Automation (CLI, URLs, AppleScript, Shortcuts, triggers) docs/AUTOMATION.md
Architecture docs/ARCHITECTURE.md
Release procedure docs/RELEASING.md
Third-party notices docs/THIRD-PARTY.md
Releases github.com/CodesWhat/dilated/releases

Quick Start

Dilated needs macOS 26 or later on Apple Silicon. The current release is 1.0.0-beta.13, a public beta.

  1. Download the signed, notarized DMG from dilated.app.
  2. Open the DMG, drag Dilated to Applications and open it.
  3. Pick Keep awake for from the menu bar item.

Prefer Homebrew? brew install --cask codeswhat/tap/dilated installs the same build.

A Mac App Store version isn't available yet. The direct download above is the current build.

Closed-lid mode needs a narrow sudo rule that you install once with an administrator password. The installation guide covers setup, crash recovery, updates and removal.


Why Dilated

Sometimes a Mac needs to stay awake: a long build, a download, a backup, an agent working through a task. Dilated does that from the menu bar, and the website has an interactive preview of the menu. You can hold for a set time or until you stop it, let a trigger do it when a condition is true, or call it from a script.

Battery floor and Low Power Mode guards can end a hold before it drains your battery, and Stop releases everything and pauses automation until you resume it. It's a beta, and closed-lid mode is the part with the least hardware testing.


Features

Area What it does
Holds and timers Timed and indefinite awake holds from the menu. Type 2h30 or until 5pm in the menu, CLI or Shortcuts. Downloads can drive a hold too: choose While a file downloads… or While a folder downloads…, with 5 to 3600 seconds of inactivity before it ends.
Display sleep Choose whether the display may sleep during a hold.
Guards A battery floor (ignored on AC by default, configurable in Settings → Battery & Safety) and Low Power Mode guards. Start Anyway overrides the floor for one hold. Closed-lid has its own safety limits.
Menu bar Four bundled glyphs, or your own static PNG icons (up to 512 × 512 pixels and 2 MB, separate idle image optional). Optional compact, clock or end-time text, with seconds shown or hidden, 12/24-hour choice and small or standard size. Indefinite holds show ∞.
Triggers Named rules that keep the Mac awake while all their conditions match. Conditions: running or frontmost apps, processes, schedules, power, displays, network identity, Wi-Fi SSIDs, mounted volumes, USB and paired Bluetooth devices, selected audio output, CPU load, idle time and aggregate network or disk throughput. Dwell and grace delays. Edit weekly schedules with the grid or precise time fields.
Agent setup Install, check and remove Claude Code, Codex and OpenCode hooks in Settings. Active turns use renewable holds; Stop pauses automation until Resume. Process-and-CPU presets cover tools without hooks.
Preferences file Export timer and appearance choices, then preview them before applying on another Mac. Local safety policy, automation, files, active holds and Stop state stay unchanged.
Why Awake Shows Dilated’s awake reasons and the processes asking macOS to stay awake. Refreshes when opened; other apps’ assertions are read-only.
Automation URL scheme, AppleScript, four Shortcuts actions and a dilated CLI. The CLI covers on, off, status, run -- <command> and renewable agent holds (hold, release). Configurable global shortcuts.
Drive Alive Opt-in. Writes a small hidden file to selected volumes at an interval you choose (30 to 3600 seconds) so they don't idle. It doesn't wake a sleeping Mac.
Closed-lid mode Keeps the Mac running with the lid closed, through a sudo rule that lets Dilated run only pmset -a disablesleep 0 and 1. Admin accounts only. Experimental. A closed-lid trigger has to be armed each app run.
Feedback Optional notification banners and sounds, both off by default. Local history and statistics.

The automation reference has every command, trigger condition and safety rule.

Beta.13 adds a macOS 26 Control Center Keep Awake toggle. On starts a 15-minute hold; Off stops all holds and pauses automation. Choose Resume automation in Dilated before using On again.


Privacy and Permissions

  • Location is requested only to match the Wi-Fi network names you choose for triggers. Dilated doesn't request or record your geographic location.
  • Bluetooth is used only to match paired devices you choose for triggers. It doesn't scan for nearby devices or change their connections.
  • Closed-lid mode needs the sudo rule at /private/etc/sudoers.d/dilated. Remove it any time with dilated lid-permission remove or sudo rm /private/etc/sudoers.d/dilated. If Dilated crashes, a watchdog restores sleep within seconds. A reboot without relaunching Dilated can leave sleep disabled until it next opens.
  • Notifications are requested only when you enable banners.
  • Files are accessed only through your selection, for example a download watch or a Drive Alive volume.

History and statistics stay on your Mac. The only network use in the app code is Sparkle's update check against dilated.app. There's no analytics code in it.


Roadmap

1.0.0 GA is gated on the hardware recovery checks listed in the installation guide: sudo rule revocation and integrity, app crash recovery, reboot recovery, helper migration and the closed-lid transitions.


Build and Contribute

Build the local app with bash scripts/build-app.sh, then open build/Dilated.app. This is a development build, not a notarized release. The script uses ad-hoc signing by default, and DILATED_SIGN_IDENTITY can select an installed signing identity. Xcode and XcodeGen are required. Real Shortcuts execution needs a developer-signed build on the tested Mac. An ad-hoc build can show up in the action catalog but fail to run.

bash scripts/build-app.sh debug --verify stops the running dev copy, rebuilds it, launches it and reports its PID. It refuses alternate output paths and waits for other Dilated copies to be quit first. Add --logs to stream app logs for five minutes after launch.

Set up the commit hooks once per clone:

brew install lefthook gitleaks && lefthook install

Run the checks with bash scripts/verify.sh. You need Xcode, XcodeGen, Python 3, Ruby and Node.js 24. It runs Swift tests, release packaging checks (including an isolated app build and launch), website tests, and formatting and syntax checks. CI uses the same entry point. After building the bundle, python3 scripts/smoke-test.py runs the bounded app and CLI integration check with disposable state.

The package app product and internal executable are named DilatedApp so they don't collide with the dilated CLI on case-insensitive macOS filesystems. The app users see is Dilated.


Support

Dilated is free and open source. If it saves you time, you can support it on GitHub Sponsors or donate directly.


Community and Support

Open an issue for bugs. Include the Dilated and macOS versions and steps to reproduce. Report security problems through GitHub's private vulnerability reporting, not in a public issue.


Star History


CodesWhat Ecosystem

ToolRole
dilatedKeeps your Mac awake. Menu bar app with triggers and a CLI
mouthtypeLocal dictation for Mac. Hold Fn, speak, release to paste
drydockContainer update monitoring, web UI and notification engine
portwingRemote Docker agent, secure socket-level access from Drydock or standalone
sockguardDocker socket proxy, default-deny allowlist filter protecting the socket

Dilated and Mouthtype are the two desktop apps here. The other three tools are for Docker hosts.


License

Dilated is licensed under MIT. Dependencies have their own terms, recorded in docs/THIRD-PARTY.md.

CodesWhat: small, sharp tools from one developer and a lot of agents.

About

Keeps your Mac awake. A native macOS menu bar app.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages