TL;DR
- Thirteen coding agents wired in, with no default picked for you
- 367 self-documenting commands an agent can discover as JSON
- Agent spend in the status bar, crashes routed to your default agent
Install takes tens of seconds. Then you log in and your webcam works. So does the microphone. So does Bluetooth.
If you have run Linux on a laptop before, you know how unusual that sentence is.
And when something genuinely does not work, you do not go hunting a forum thread from 2019. You ask the agent that is already running in the OS. The fingerprint reader on this machine needed a driver sorted out; that got fixed in a conversation, not an evening.
Omarchy is Arch plus Hyprland, assembled by DHH, and it calls itself "the malleable OS for the age of agents". MIT licensed, 43,800 stars. That is not a tagline bolted on afterwards. The agent is wired into the keybindings, the menu, the status bar and the crash handler. This article is written from a machine running 4.0.4, inside a terminal multiplexer that Omarchy ships, driving three coding agents at once.
Thirteen agents, no favourite
Omarchy wires in thirteen coding agents: Claude Code, Codex, OpenCode, Gemini, GitHub Copilot, Crush, Grok, Cursor CLI, Pi, Oh My Pi, OpenClaw, Hermes and Muse Code.
They are lazy launchers. Nothing downloads until you first run one, so the install stays small and you are not carrying nine tools you will never open.
The part worth noticing: it does not pick a favourite. You choose a default and change it later with one command. The OS treats "which agent" the way it treats "which browser".
That is a deliberate choice, and the source says so out loud. The code that reads your default agent carries this comment:
Silent when unset rather than defaulting: Omarchy picks no agent for you, so the menu leaves every entry unchecked until one is chosen.
No default, no nudge, no preinstalled winner. For a distro shipped by a company with opinions about everything, that restraint is notable.
omarchy agent # launch the default agent
omarchy agent --pick # choose a different one for this run
omarchy agent prompt "fix the failing test"
There is a keybinding and a menu entry for the same thing. Launch from either and it drops you into your work directory rather than your home directory, because agents refuse to remember trust for $HOME and nobody wants to re-approve a session every morning.
That is the texture of this whole system. Small decisions, already made, in the direction of the thing actually working.
Your token spend, in the status bar
This is the feature that has no equivalent anywhere else.
The bar has an agents panel. It shows what your agents are costing you.
Behind it sits a collector per provider, omarchy-agent-usage-claude and siblings for codex and fireworks. The Claude one pulls local transcript stats out of ~/.claude/projects, falls back to the stats cache and history on machines without transcripts, picks up pi, omp and opencode sessions that ran on an Anthropic provider, and fetches the authoritative rate limits from Anthropic's own usage endpoint. All of it lands in a single JSON record.
The panel reads that one record and nothing else. It never touches a disk format or an endpoint itself.
The result is an operating system that treats your agent bill as a first-class desktop reading, next to battery and volume. Once you have had it, working without it feels like coding with the clock hidden.
When something crashes, the agent looks at it
A process dies. You get a notification that says "Process crashed". You click it.
Omarchy hands the core dump to your default coding agent:
omarchy agent crash 1516893
It gathers the facts, then points the agent at a diagnose-crash skill that holds the actual method. Two consequences fall out of that design. The method lives in one place, so it is edited once. And it works with whichever agent you made default, because the skill carries the knowledge rather than the launcher.
You can also run it by hand against any PID in coredumpctl list.
A desktop that routes segfaults to an AI agent instead of to a log file nobody opens is a genuinely new idea about what an OS is for.
One keybinding, about 320 things
Press Super and Space.
The menu that opens carries roughly 320 entries: 90 things to install, 65 to set up, 59 to remove again, 46 triggers, 27 updates, 20 style changes, a learn section and a system section.
The AI submenu alone installs Ollama, LM Studio, ChatGPT Desktop, Hermes Desktop, OpenClaw, Perplexity, a Grok bot and dictation. Every one has a matching remove entry, so trying something costs you nothing permanent.
The learn section is a nice touch: keybindings, Omarchy itself, Hyprland, Arch, Neovim, Bash, Tmux, Herdr and the community. A distro that ships its own manual as a menu entry expects you to go deeper.
Some of it is just considerate. SUPER + SHIFT + D opens a Docker TUI. Obsidian is already there. So is clang 22. And Neovim 0.12.5 arrives preconfigured as LazyVim, with the TypeScript and mini-starter extras already enabled. That is an opinion, not a neutral default, and it is the right call: a working editor on first boot beats a blank init.lua and a weekend.
This is the part that will matter most if you work with agents.
Everything in Omarchy is reachable through one omarchy command that dispatches to a group and an action, like omarchy theme set or omarchy toggle nightlight. Ask it to describe itself and you get this:
omarchy commands --json
That returns 367 commands across 63 groups. Every single one carries a one-line summary. 104 ship worked examples. 83 are flagged requires_sudo up front, so a caller knows which ones need a password before it tries.
Read it as what it is: a tool manifest for the operating system. An agent does not have to guess at your system, scrape help text or pattern-match against a forum post. It asks once and gets a structured list of everything it is allowed to do, with the arguments.
The trick behind it is pleasingly low-tech. Each command is a shell script with its own metadata in comments at the top:
# omarchy:summary=Launch the default coding agent in a terminal
# omarchy:args=[--inline] [--pick]
# omarchy:examples=omarchy agent | omarchy agent --inline
Write the script, annotate it, and it shows up in the manifest. No registry, no schema file to keep in sync.
There is an agent group in there too, with four commands:
| Command | What it does |
omarchy agent | Launch your default agent in a terminal (--pick to choose, --inline to stay put) |
omarchy agent prompt | Launch it with a prompt already loaded |
omarchy agent crash | Point it at a crashed process |
omarchy agent usage update | Regenerate the usage data behind the bar widget |
The token counter in your bar is not a special case. It reads a file that a documented command writes.
Local models, one command away
The install menu offers Ollama for the command line and LM Studio if you want a GUI. Pull a model and it runs on your hardware.
ollama pull llama3.2:3b
There are one-command installers for hosted AI apps too, including Hermes, ChatGPT, OpenClaw and T3 Code, each with a matching remove command. Install, try, remove, no residue.
Omarchy also packages Herdr, the terminal multiplexer built for coding agents. That is how this article got written: Herdr holding a workspace per project, Claude Code in one pane, a codex agent in another, passing work between them. Both tools arrived with the OS.
OpenCode is in the box as well.
The plugin ecosystem is the real story
The bar is extensible, and omarchyplugins.com is filling up fast.
Here is what that looks like in practice. These six are running on the machine this was written on, all written locally, all doing jobs no distro would ever ship by default:
| Plugin | What it does |
omavoice | Hold F10 and talk to a local agent. Whisper hears you, Kokoro answers, both on this machine. No API key, and nothing spoken leaves the box. |
omagihu | GitHub radar: what is waiting on you, what is in flight, where local work is at risk |
omabudget | Local-first personal finance, stored on this machine and nowhere else |
sitesentinel | Watches sites from this machine: reachability, certificate, DNS, domain renewal |
perfex-pulse | Outstanding receivables from a Perfex CRM, with a hard on/off switch for polling |
demarchy | Decred staking, node and Bison Relay status |
Look at omavoice again. Hold a key, speak, and a local agent answers out loud, with the speech recognition and the voice both running on your own hardware. No key, no cloud, no transcript leaving the machine.
That is a thing one person built on a weekend because the OS made the bar scriptable and the agent made the writing fast.
Everything is changeable, and the agent does the changing
Want the bar to show something else? A different keybinding, a new menu entry, a plugin that watches a thing you care about? Ask the agent that is already running in the OS.
That works because Omarchy hands the agent a manual. There is a 294 line skill file in the system, plus six topic guides covering Hyprland, the shell and its plugins, theming, capture, hooks and contributing. Together they tell any agent how this machine is put together.
The useful part is not the tour, it is the guardrails. The skill states plainly that /usr/share/omarchy/ is package-owned, that local edits there get wiped on the next update, and that reading it is encouraged while writing to it is not. User changes belong in ~/.config/. To customise a built-in bar widget you do not edit the stock one, you run:
omarchy plugin clone omarchy.workspaces
That gives you your own copy under ~/.config/omarchy/plugins/, switches the bar to it, and survives updates. Saving a file in there hot-reloads the plugin. Saving shell.json hot-reloads the bar layout. No restart in the loop.
The skill even has a rule for how an agent should ask for privileges: use sudo when there is a terminal to type a password into, and pkexec when the caller is a background process or an agent with nowhere to prompt. Somebody sat down and thought about the case where the thing running the command cannot see a keyboard.
And if you want the system to react on its own, there are hooks: drop a script into ~/.config/omarchy/hooks/theme-set.d/ and it runs on every theme change, with the theme name as $1. The same pattern exists for post-boot, post-update, battery-low, font-set and pre-refresh-pacman.
So the agent is not rummaging through your dotfiles hoping for the best. It was handed the map, the rules and the safe edit locations.
Who should run this
If you work with coding agents daily, this is the most considered environment anyone has built for that. The agents are already there, the spend is visible, the crashes route somewhere useful, and the bar bends to whatever you need.
If you want local models, Ollama and LM Studio are one menu entry away and the hardware support means the machine is actually usable while they run.
And if you have ever wanted your desktop to do something specific and given up because the config was a weekend you did not have, that excuse is gone.
Sources and further reading
Ten minutes: install it on a spare machine and log in. Check the webcam, the microphone and Bluetooth before you touch a single config file. Then press the agent keybinding and ask it to change something about the desktop you are looking at. That loop, start to finish, is the thing worth trying.
Tested on: Omarchy 4.0.4, kernel 7.2.5-3-omarchy, with herdr 0.8.2-1, Ollama running llama3.2:3b and 1b locally, claude, codex, opencode, copilot, crush, grok, pi and omp installed, plus Neovim 0.12.5-1 (LazyVim), Obsidian 1.13.7-2, clang 22 and fprintd 1.94.5-2 from the base system. This article was written on that machine, using the agent tooling it describes.
Date tested: 2026-10-02