Apple's current macOS runs on just four Intel Macs. Every other Intel MacBook, iMac and Mac mini is already off the current release. Omarchy is a free Linux desktop that installs on those machines in place of macOS, and it is built so that an AI coding agent can change it for you: press a key, say what you want, and see the change live. This page covers what that means for a business, what you give up, which Macs work, and — for the developers — exactly how the agent gets its hands on the system. The workstation leaf makes the broader case; this one is the practical tour.
Omarchy came out of 37signals, the company behind Basecamp and HEY. It's a complete, opinionated desktop on Arch Linux: a tiling window manager, a launcher, themes, and a curated set of apps. On a Mac it replaces macOS entirely.
Intel Macs from 2013 to 2020 that no longer get macOS feature updates become fast, current developer machines. The Omarchy team measured a 36% performance gain on a 2019 MacBook Pro just by switching. No licence cost.
One keypress opens your AI coding agent with permission to change the desktop. “Move the clock left,” “bind the screenshot tool to F13,” “make it darker after sunset” — and the screen updates as it saves.
Every setting is a readable Lua or shell file, the system and your changes live in separate folders, and your folder can go into Git. Rebuilding a machine becomes a clone and an afternoon.
macOS goes. Omarchy only supports being the sole operating system; the install wipes the drive. You can restore macOS later through Apple's Internet Recovery, but there is no dual boot. Apple's Secure Boot goes off, which removes the T2 chip's boot protection. And anything tied to macOS — Apple's MDM, iMessage, Final Cut, Microsoft Office desktop apps — stays behind. This is a developer workstation, not a drop-in replacement for a general staff laptop.
The installer detects Mac hardware and applies the fixes each generation needs. What works depends on the security chip in the machine.
| Mac | Status | What the installer does |
|---|---|---|
| T2 Macs (2018–2020: MacBook Pro, MacBook Air, Mac mini, iMac 2020, iMac Pro) | Supported | Installs a patched linux-t2 kernel, T2 audio config, Apple's Broadcom Wi-Fi and Bluetooth firmware, and fan control (t2fanrd). Touch Bar runs on built-in support. |
| Older Intel Macs (2013–2017) | Supported | Broadcom Wi-Fi drivers and firmware, plus the SPI keyboard driver and an NVMe suspend fix on the MacBooks that need them. |
| T1 MacBook Pros (2016 Touch Bar models) | Works, with gaps | Touch Bar and sound don't work. |
| Apple Silicon (M-series) | Not directly supported | The code already names an aarch64-apple platform and separate omarchy-mac packages, but the manual says M-series installs aren't supported yet. |
Getting there takes four steps. Boot into Recovery (hold Cmd-R), open Startup Security Utility, set Secure Boot to “No Security” and allow external boot media. Then restart holding Option, pick the orange EFI Boot drive, and run the normal installer.
Two details developers will appreciate. On T2 Macs the Wi-Fi firmware is only legally available from Apple, so the installer copies it off the Mac's own macOS volume — which means a machine that's already been wiped has to get the firmware from a macOS copy or a recovery image instead. And Broadcom's firmware fumbles the Wi-Fi handshake on networks in WPA2/WPA3 transition mode, so the installer hands the handshake back to software; the symptom it fixes is a correct password being rejected.
Apple displays work too. On a Studio Display or Pro Display XDR, the keyboard brightness keys adjust the monitor when it has focus.
Under the themes and the launcher, Omarchy has a simple shape: one folder it owns and replaces on every update, one folder you own that updates leave alone, and a few hundred small commands joining them. That split is what makes it safe to let an agent loose — the agent edits your folder, never the system's.
/usr/share/omarchyInstalled as the omarchy package. Default Hyprland config in Lua, the shell, about two dozen themes, a hundred-odd dated migrations, the agent skills, and every omarchy-* command. Updates replace it wholesale.
~/.configYour hypr/*.lua overrides, omarchy/ hooks, themes, menu extensions, plugins and which agent you use. Nothing in an update writes here except a migration.
omarchy-* commandsRoughly 440 bash and Python scripts on the path in 4.0. The biggest families install apps, set themes, handle hardware and launch things. Every keybinding and menu item ends up calling one.
omarchy-shellOne Quickshell (QML) process draws the bar, launcher, menus, notifications and lock screen. It also hosts the agents panel that shows your AI usage.
Start at the package and follow the arrows. The main row is what runs when you press a key; above it is where the code comes from; below it is what happens afterwards.
Interactive: pan, zoom, trace. Open full screen ↗
The load order is the design. ~/.config/hypr/hyprland.lua loads Omarchy's bootstrap and defaults first, then your monitors, input, bindings, looknfeel and autostart files. Omarchy can improve its defaults on every update without touching your files, and anything you set overrides them. One flag, omarchy_default_bindings = false, switches off every default keybinding.
Changes are live the moment they're saved. Hyprland 0.56 is configured in Lua, and the bootstrap clears its own modules from Lua's cache on reload — no logout, no restart. That's what makes the agent loop feel instant.
Themes are templates; events have hooks. Setting a theme renders .tpl files with its colours, restyles the shell and apps, then runs anything you've put in ~/.config/omarchy/hooks/theme-set.d/. The same mechanism covers boot, updates, font changes and low battery.
Updates are packages plus migrations. omarchy-update installs the new package, then runs any dated migration scripts that haven't run yet. Migrations are the one place Omarchy deliberately reaches into your folder.
This is what makes Omarchy 4 agent-driven rather than merely agent-friendly. Each step is a short script you can read — and reading them is the best way to understand what you've agreed to.
Interactive: pan, zoom, trace. Open full screen ↗
omarchy default agent claude saves the choice. Omarchy ships without a default; until you pick one, the keybinding opens a picker.omarchy agent starts the agent with its own “don't stop to ask” flag: claude --permission-mode auto, gemini --yolo, copilot --allow-all, opencode --auto and so on. The reasoning, in the script's own comment: an agent launched from a keybinding runs unattended.~/Work exists, the launcher moves there first, because agents won't remember trust for your home folder.omarchy (Hyprland, theming, hooks, plugins) and diagnose-crash — and are linked into the agent's skills folder. The agent arrives knowing that edits go in ~/.config, never in the system folder.omarchy agent crash <pid> collects the crash details and briefs the agent through the crash skill. The shell's agents panel shows usage and rate limits for your chosen agent.One correction to the launch coverage. Omarchy 4 was pitched as offering your agent the details whenever an app crashes. As of 4.0.4, the command and skill exist but nothing triggers them automatically. Treat crash triage as a command you run, not a pop-up you can count on.
Most Omarchy breakage comes from an edit in the wrong place — whoever made it. This is the list worth pinning.
| You want to change | Edit | Never |
|---|---|---|
| Keybindings | ~/.config/hypr/bindings.lua | default/hypr/bindings/* |
| Monitors, input, gaps, animations | ~/.config/hypr/{monitors,input,looknfeel}.lua | The bootstrap or omarchy.lua |
| Startup apps | ~/.config/hypr/autostart.lua | systemd units Omarchy owns |
| React to theme, font, boot or update | ~/.config/omarchy/hooks/<event>.d/ | Patching omarchy-theme-set |
| Menu entries | ~/.config/omarchy/extensions/omarchy-menu.jsonc | The shell QML |
| Bar widgets | A plugin via omarchy plugin add | /usr/share/omarchy/shell |
| Theme colours for another app | ~/.config/omarchy/themed/*.tpl | The generated output files |
| Which agent launches | omarchy default agent <name> | Editing omarchy-agent |
A sign it's working: after a few weeks of agent changes you'll find bindings.lua.bak.<timestamp> files next to the real ones. The agent backs up before it writes. That's good manners, not version control — put ~/.config in Git.
~/.config is in Git and you commit before each session/usr/share/omarchy. That's a bug report, not a fixOld Macs are expensive to replace here. A new MacBook carries import duty and the exchange rate on top of Apple's price. Turning a 2019 MacBook Pro that Apple has stopped updating into a current developer machine defers that spend by years, and keeps a working laptop out of landfill.
The meter in the bar is in dollars. The agents panel sits next to the battery for a reason: every “make my bar look nicer” session draws on a subscription billed in USD. Once you know which file to open (section 06), small changes are cheaper by hand.
Rolling updates on capped data. Updates are package downloads plus migrations. On LTE, update deliberately rather than whenever the indicator nags; with several machines, run a local package mirror.
Your config repo is also your recovery plan. If the Omarchy layer is text in Git, rebuilding after a theft or a dead SSD takes an afternoon rather than a week.
--permission-mode auto is the flag it passes.omarchy default agent can launch, and how each handles approvals.Paths and behaviour checked against Omarchy 4.0 (4.0.4, Hyprland 0.56, Quickshell 0.3) and the project source in October 2026. Counts move between releases; re-check after a major update.