Three small Mac app. One brain. One face.
| App | Do what |
|---|---|
| MacAwake | Mac try sleep. You say no. Pick how long. |
| MacClean | Wipe keyboard without Mac typing garbage. Keyboard sleep, trackpad sleep, you clean. |
| MacMirror | Menu bar mirror. Check face fast. Snap picture. |
All three live here together. One repo. Fix one thing, all three get fix.
Free forever. No price, no accounts, no subscription, no telemetry backend selling anything. Source is public; licence is PolyForm Noncommercial — use it, share it, no charge, commercial use except by permission.
Before, three separate repo. Same code copied three time. Copy drift. Drift rot:
- Two of three app did not build
- One CI red since April, nobody see
- One app had four test file that never ran once — look like test, test nothing
- Same file,
LinkOpening.swift, in all three. Zero line differ. Three copy, no reason
One repo kill that. Shared code live one place: packages/MacKit.
Need: macOS 14+, Xcode 26+, XcodeGen.
brew install xcodegenBuild one app:
cd apps/MacAwake
xcodegen generate
open MacAwake.xcodeprojTest shared brain, fast, no Xcode:
cd packages/MacKit && swift testThat run in under one second. No app launch. Use it while you work.
mac-suite/
├── apps/
│ ├── MacAwake/ app, tests
│ ├── MacClean/
│ └── MacMirror/
├── packages/
│ ├── MacKit/ shared base — design, shell, seams
│ └── FitWindow/ window sizing helper
└── docs/
└── design.md read this before you touch UI
project.yml is truth. .xcodeproj is generated — never hand-edit, never commit.
Info.plist also generated by XcodeGen. Put key in project.yml under info.properties. Hand edit get wiped.
Apps are not signed. Apple charge $99/year for that. Not paid yet.
So Mac shout when you open. This normal. To make Mac quiet:
xattr -rd com.apple.quarantine /Applications/MacAwake.appOnly run that on app you trust. You built this one, so you trust it.
Homebrew removed unsigned app from main tap on 1 September 2026, and killed --no-quarantine flag in Homebrew 5.1. So install come from own tap plus GitHub Release DMG. Command above still needed.
Day the $99 get paid: CI already has notarize step waiting, switched off. Add three GitHub Secret, step wake up, no code change, xattr step goes away forever.
Right now: nothing leave your Mac. Zero. No network call, no counter, no ping.
TelemetryClient seam exist in MacKit with do-nothing implementation. When real one built, this README and a proper privacy policy get written before it ship, and it get an off switch.
Do not read Classroom Quick Downloader privacy policy and think it apply here. Different product, different promise.
Three old repo folded in here, all commit kept. Old tip pinned forever:
git log history/MacAwake-import
git log history/MacClean-import
git log history/MacMirror-importPoint before the merge tagged pre-unification in each old repo.
To read old history of moved file, ask at old path:
git log history/MacAwake-import -- KeepAwake/App/KeepAwakeController.swiftgit log --follow on new path will not chain back past the merge. Subtree import cost. Commits all there, just ask them the old way.
See LICENSE.md.