Skip to content

Add llmman to Install > AI and Remove > AI - #438

Open
ericcurtin wants to merge 4 commits into
omacom:quattrofrom
ericcurtin:mac-add-llmman-to-install-ai
Open

ericcurtin wants to merge 4 commits into
omacom:quattrofrom
ericcurtin:mac-add-llmman-to-install-ai

Conversation

@ericcurtin

@ericcurtin ericcurtin commented Sep 13, 2026 •

Copy link
Copy Markdown

Adds llmman beside MLX, LM Studio and Ollama under Install > AI, with a matching Remove > AI entry, following the shape of the Ollama pair. Same change as omacom#11722, carried here because this menu and test file have diverged from upstream's; if you'd rather pick it up through the next sync from omarchy instead, feel free to close this one.

llmman is the piece that points the coding agents Omarchy already ships at a local model: llmman launch claude --model qwen3.8 fetches the tested upstream llama.cpp build for the machine, loads the model and execs Claude Code against it (same for opencode, codex, agy, aider, ...). llmman serve is one endpoint on 127.0.0.1:17434 speaking the Ollama, OpenAI and Anthropic APIs, so anything already talking to Ollama works unchanged; models are plain OCI artifacts pulled straight from Docker Hub or Hugging Face; --provider runs the same agent against a hosted model instead. Upstream publishes an aarch64-unknown-linux-gnu binary, and the PKGBUILD carries arch=('x86_64' 'aarch64').

Depends on the package: omacom/omarchy-pkgs#428 adds llmman-bin.

What's here

  • install.ai.llmman - omarchy-install-app llmman llmman-bin. Dims on omarchy-cmd-present llmman rather than the package, like the Ollama row, since a cargo or curl install provides the same command.
  • remove.ai.llmman - shown on omarchy-pkg-present llmman-bin, the only thing omarchy-pkg-drop can act on.
  • bin/omarchy-remove-ai-llmman - under set -euo pipefail. Stops the detached llmman serve daemon first (it has no stop command; pkill -f 'llmman serve' is upstream's own advice and matches nothing but the daemon), drops the package, then deletes ~/.local/share/llmman (model store, downloaded llama.cpp releases, prompt history), ~/.config/llmman (aliases, provider keys, trust policy), and the two files llmman writes into other agents' homes under its own name: ~/.codex/llmman.config.toml and ~/.gemini/llmman/. Everything else in ~/.codex, ~/.gemini and ~/.hermes stays.
  • manual/17-ai.md - Local LLMs now names three options and says what llmman is for.
  • test/shell.d/remove-ai-test.sh - adds a pkill stub (so the suite never reaches a developer's own daemon) and pins what the remover deletes, what it keeps, that it drops llmman-bin and pkills the daemon, that it refuses without HOME, and that the Remove row keys on the package.

Icon

A Nerd Font glyph (nf-md-server) rather than a new mark in the Omarchy icon font: upstream's only artwork is a raster manatee with no monochrome SVG.

Validation

In archlinux:base-devel: remove-ai-test.sh (17 ok, including the 6 new), menu-test.sh (121 ok), bin-style-test.sh, desktop-entry-launch-test.sh and ./test/cli (119 ok, so the new command's metadata lints) all pass.

llmman runs the coding agents Omarchy already ships against a model on
this machine: `llmman launch claude --model qwen3.8` fetches the tested
upstream llama.cpp build for the GPU, loads the model and execs the
agent. Its daemon speaks the Ollama, OpenAI and Anthropic APIs on one
endpoint, models are plain OCI artifacts from Docker Hub or Hugging
Face, and --provider points the same commands at a hosted model. It
belongs next to LM Studio, Ollama and MLX as another way to run local
models, and upstream ships an aarch64 Linux binary.

The package is omarchy-pkgs' llmman-bin (omacom/omarchy-pkgs#428). The
Install row dims on the command rather than the package, like Ollama's,
because a cargo or curl install provides the same command; the Remove
row keys on the package, which is the only thing omarchy-pkg-drop can
act on.

The remover stops the detached `llmman serve` daemon first (it has no
stop command; pkill on its command line is upstream's own advice), drops
the package, then deletes the store, config and the two files llmman
writes into other agents' homes under its own name. The agents' own
state beside them stays, and the tests pin that boundary.

Same change as omacom#11722, carried here because this menu has
diverged from upstream's.
@malik-na malik-na added the lvl 0 Core userspace: display, audio, video, graphics, memory, storage, battery, keyboard, network, BT. label Sep 18, 2026
@laihenyi

Copy link
Copy Markdown

Independent review (AI-assisted, Claude). Read the remover, the menu rows and the test; ran the QA set in an Ubuntu 24.04 arm64 container.

Dependency status

Both prerequisites are still open: omacom/omarchy-pkgs#428 (llmman-bin) and the upstream twin omacom#11722. Until the package exists in the repo the install.ai.llmman row fails at omarchy-install-app, and this repo's menu normally follows upstream, so this looks like a cherry-pick-later / defer candidate rather than something to merge ahead of upstream. The author already offered to close in favour of the next sync, which seems like the cleanest outcome.

Code

  • Menu rows mirror the Ollama pair: install dims on the command, remove keys on the package. Consistent.
  • omarchy-remove-ai-llmman is fine as written. Two small points:
    1. The "refuses without HOME" guarantee only kicks in at the rm -rf, because pkill and omarchy-pkg-drop run first. With HOME unset the package is already gone before set -u aborts. If the intent is "touch nothing without HOME", add : "${HOME:?HOME must be set}" at the top; the test would then also assert the drop did not happen.
    2. pkill -TERM -f 'llmman serve' matches any command line containing that substring, not only the daemon (an editor opened on a file called llmman serve.md, for example). Practically negligible, but pkill -x -f 'llmman serve'-style anchoring or matching on the binary path would make it exact.
  • The pkill stub in the test is a good call; without it the suite would signal a developer's real daemon.

Local verification (Ubuntu 24.04 arm64 container)

  • Syntax loop and shellcheck on the changed files: only a pre-existing SC2115 in the test, nothing new
  • bin/omarchy commands --check: 470 commands pass
  • test/shell.d/remove-ai-test.sh: 17 checks pass

@malik-na malik-na added the US label Sep 20, 2026
@ericcurtin

Copy link
Copy Markdown
Author

@maralcbr @ryanrhughes PTAL when you get a chance. It needs omacom/omarchy-pkgs#428. Thank you!

Signed-off-by: Eric Curtin <eric.curtin@docker.com>
@ericcurtin

Copy link
Copy Markdown
Author

Thank you @laihenyi, the HOME check now runs first in 5ad6c35 (same fix on omacom#11722). I left the pkill pattern as is.

Signed-off-by: Eric Curtin <eric.curtin@docker.com>
Signed-off-by: Eric Curtin <eric.curtin@docker.com>
@ericcurtin

Copy link
Copy Markdown
Author

@dhh @joshuaswarren PTAL when you get a chance. It needs omacom/omarchy-pkgs#428. If useful, please also try https://github.com/llmmanorg/llmman. Thank you!

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lvl 0 Core userspace: display, audio, video, graphics, memory, storage, battery, keyboard, network, BT. US

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants