Add OpenClaw as a desktop app and a coding agent - #10246
Conversation
|
Reviewed by hand outside the scheduled triage run, on top of the PR's own "verified on a real machine" note. Checked: the diff against Findings:
Second opinion: codex at xhigh reasoning, read-only, independently re-derived the input.lua revert from git history (agreement, not independence-guaranteed) and contributed the other three findings above from its own control-flow analysis, which I verified against the source before including them. One codex claim I checked and rejected: it flagged the launcher's comment naming Verdict: NEEDS AUTHOR. Nothing pushed — this review reports findings rather than fixing them. Waiting on: the author to confirm whether the touchpad-scroll hunk belongs in this PR, and to decide whether the three script-logic findings are worth fixing before merge or as fast-follows. 🤖 Generated by Claude Sonnet 5 in Claude Code. Reviewed by Codex XHigh. |
bfc3543 to
3a4fd9e
Compare
|
Thanks, all four landed in 3a4fd9e.
Focused suites: launcher 8, remove 18, default-agent 34, menu 121, hermes-cli 34, all green. |
6198cfe to
1f0699c
Compare
|
One more change in 1f0699c, from testing removal end to end on a machine that had an older OpenClaw before this: |
1f0699c to
b27389a
Compare
|
b27389a fixes the first-install flow, found by running Install > AI on a machine with no OpenClaw config. Bare |
b27389a to
4eb2c60
Compare
|
Follow-up on the PR head: the classic wizard fixed the browser handoff but exposed a second upstream problem. With |
4eb2c60 to
285de9f
Compare
|
Correction to the previous comment: the watchdog worked but wrapping the wizard in |
|
Re-reviewed at 285de9f (all four previous fixes verified against source, not just taken on the comment's word). Previous findings — all fixed, confirmed against source:
Targeted suite (186 assertions across the five New this round — the new
Second opinion: codex at xhigh reasoning, read-only, ran ShellCheck over all four production scripts (clean) and independently confirmed each of the four original fixes against source — agreement, not independence-guaranteed, on those four. It found the two medium hang/mis-signal defects above from its own control-flow analysis, verified against source before including. The pid-file race I'd flagged as a question going in; codex assessed it as real but narrow, which is the same conclusion I'd reached independently. Verdict: NEEDS AUTHOR. Nothing pushed — this is a report, not a fix. Waiting on: the author, on whether the hang case and the stale-gateway mis-signal in the onboarding wrapper are worth another round before merge, or a fast-follow given how much ground this round already covered. 🤖 Generated by Claude Sonnet 5 in Claude Code. Reviewed by Codex XHigh. |
8abddaf to
9b7bcdb
Compare
|
All five taken in 9b7bcdb. The wrapper is restructured rather than patched, since three of the findings shared a root: the pid file and the separate watcher process.
Onboarding suite is now 8 cases; launcher 8, remove 18, default-agent 34, menu 121, hermes-cli 34, all green. |
|
Re-reviewed at 9b7bcdb (the onboarding wrapper rewrite). 4 of 5 findings from last round are solid; 1 is only partially closed. Solid, confirmed against source:
Partial — [medium] Second opinion: codex at xhigh reasoning, read-only, independently derived the same stale-config timing gap from source (I'd flagged it as a hypothesis going in; codex reached it independently too and pinned the exact lines) and additionally ran a real PTY probe to check the Ctrl-C claim empirically rather than just reading the code — that's new verification, not just agreement. Test suite (189 assertions across the five Verdict: NEEDS AUTHOR, for the one partial item. Nothing pushed. Waiting on: the author, on whether 🤖 Generated by Claude Sonnet 5 in Claude Code. Reviewed by Codex XHigh. |
Chessing234
left a comment
There was a problem hiding this comment.
install path is careful about onboarding vs launch, and the control ui stays on 127.0.0.1. main risk is packaging/deps landing before these helpers — worth a smoke install from a clean machine before merge.
9b7bcdb to
ed5a41d
Compare
|
Both taken in ed5a41d.
One limit worth stating rather than hiding: a repair run whose wizard neither rewrites the config nor brings the gateway up, and then hangs, is left to the user's Ctrl-C. There is no signal that separates "still at a prompt" from "hung" in that case, and guessing would reintroduce the mid-prompt kill this round removed. Onboarding suite is 10 cases; launcher 8, remove 18, default-agent 34, menu 121, hermes-cli 34, all green. |
|
@Chessing234 agreed on the ordering risk. This PR's Install > AI entry runs On the smoke install: the closest run so far was on my own machine, taken through Remove > AI to a state with no package, no units, no config, no desktop entry, and then Install > AI again from the menu, which is where the two onboarding problems fixed above were found. It is not a clean image though. Once #307 has published I will run the flow on a fresh Omarchy VM from the menu and report here before asking for merge. |
|
Re-reviewed at ed5a41d (the stale-config deadline fix). Fixed what it targeted, but the refactor around it opened a related gap. Confirmed fixed: New regression this round — [medium] One codex claim checked and rejected: it flagged the Confirmed accurate: the Ctrl-C comment rewrite matches what the previous round's PTY probe found — bash ignores SIGINT for an async child without job control, so Ctrl-C works via the wrapper's own INT trap forwarding TERM, not directly. Test suite (191 assertions across the five Verdict: NEEDS AUTHOR. Nothing pushed. Waiting on: the author, to apply 🤖 Generated by Claude Sonnet 5 in Claude Code. Reviewed by Codex XHigh. |
ed5a41d to
9ad186e
Compare
|
Valid, and taken in 9ad186e. Your reading of The success check is now Two new tests pin it: a gateway answering with no config leaves a slow wizard to finish on its own, and after setup an orphan answering while the unit never becomes active ends the wait as a failure. I checked the first is a real regression test by running the suite against the previous helper: it fails there and passes now. Onboarding suite is 12 cases; launcher 8, remove 18, default-agent 34, menu 121, hermes-cli 34, all green. |
|
Re-reviewed at 9ad186e (the Confirmed fixed — the pre-config half: Not fully closed — [medium] The two new tests don't catch this because the systemctl stub equates "unit file exists" with "active," which only models installed-vs-absent, not the active-but-not-yet-bound transient the real unit can produce. Second opinion: codex at xhigh reasoning, read-only, found this by reading the actual installed OpenClaw package's systemd unit generator rather than reasoning about Test suite (193 assertions, now 12 onboarding cases) plus the full Verdict: NEEDS AUTHOR. Nothing pushed. Waiting on: the author, on how to make 🤖 Generated by Claude Sonnet 5 in Claude Code. Reviewed by Codex XHigh. |
OpenClaw's desktop experience on Linux is its Control UI, served by the gateway the openclaw package runs, so the Install > AI entry installs the package and a web app launcher that routes through the new omarchy-launch-openclaw: first launch hands off to OpenClaw's own onboarding wizard, later launches start the gateway when needed and open the dashboard's single-use browser handoff URL as an app window. Remove > AI tears the gateway service down through OpenClaw's own gateway uninstall (falling back to systemctl by hand), aborts rather than dropping the package under a gateway that will not stop, and keeps the user's agent in ~/.openclaw. OpenClaw also joins Setup > Defaults > Agent through the same agent_installer seam Hermes carries: its CLI is the pacman package rather than a mise tool, so omarchy-install-openclaw-cli answers --check/--now with pacman, and omarchy-agent runs `openclaw chat`, seeding prompts through --message. The menu mark is a new U+E90C glyph traced from the package's lobster favicon; E90B stays free for the Perplexity mark still in flight on its own branch. The launcher recovers the gateway through `openclaw gateway install --force` (unit not enabled: missing, or an install that died after writing it) or `openclaw gateway start` (enabled but stopped), never `openclaw dashboard --yes`: as of OpenClaw 2026.9.1 that defers to "the owning supervisor" in both cases, and once the gateway is up it copies a one-time browser pairing URL into the clipboard. The dashboard probe is bounded so an app-grid launch cannot hang without a terminal to interrupt it. Removal treats only systemd's own "inactive"/"failed" as a stopped gateway, so an unreachable user manager aborts instead of dropping the package under a live process. All of it verified against a real 2026.9.1 install. Removal also takes down the node-host unit if OpenClaw ever installed one, and asks (default no, only on a terminal) whether ~/.openclaw should go too, with its size: the chats and credentials live there next to hundreds of megabytes of plugin runtimes and cache OpenClaw downloads for itself. Onboarding goes through omarchy-openclaw-onboard rather than bare `openclaw onboard`: as of 2026.9.1 the bare command is the guided flow, which ends by running a foreground gateway and handing off to a browser tab without returning, so the install script never reached the app launch and no service was installed. The helper runs the classic wizard (--flow quickstart --install-daemon --skip-ui) as a background job that keeps the terminal as its stdin, so its prompts render and take input as upstream draws them, and stops it once the gateway answers: upstream leaves the wizard running after its outro (only the TUI branch exits, and the model sign-in holds a socket open). Every quickstart prompt precedes the service install, so that point is safe. A gateway that never comes up after this run applies setup ends the wait as a failure instead of hanging, an already-running OpenClaw is left alone rather than mistaken for this run's success, a gateway answering on the port is only this run's once its process is the unit's own MainPID (an orphan from an earlier run) is not mistaken for the service this run installs, and a signal at the helper takes the wizard down with it.
9ad186e to
5345673
Compare
|
Valid, and taken in 5345673. I confirmed the unit generator sets no
The stubs now model this dimension: Onboarding suite is 12 cases; launcher 8, remove 18, default-agent 34, menu 121, hermes-cli 34, all green. |
|
Re-reviewed at 5345673 (the PID-ownership fix). This one closes it — no defects found this round. Confirmed solid: The reshaped test (unit active with Second opinion: codex at xhigh reasoning, read-only, verdict SHIP/GO — no concrete defects. It independently confirmed Test suite (193 assertions, 12 onboarding cases) plus the full Verdict: SHIP (onboarding wrapper). Nothing pushed — this was a report, as every round has been. Six rounds against this PR now: the touchpad-scroll revert, the hang/timeout gaps, the stale-config and two orphan-gateway races are all fixed and independently verified, each against the actual installed OpenClaw package or a real worker VM rather than assumption. What's still open isn't code in this repo: @Chessing234's packaging-order point (this depends on omacom/omarchy-pkgs#307 landing and publishing first) and the fresh-VM smoke test the author already said they'd run and report here before asking for merge. 🤖 Generated by Claude Sonnet 5 in Claude Code. Reviewed by Codex XHigh. |
Add OpenClaw as a desktop app and a coding agent (cherry picked from commit eb56446) (cherry picked from commit bde2584b5596412142d0a2039d44dd6a25949517)
Add OpenClaw as a desktop app and a coding agent (cherry picked from commit eb56446) (cherry picked from commit bde2584b5596412142d0a2039d44dd6a25949517)
Adds OpenClaw the same way Hermes landed in #7469: an Install > AI entry that sets it up as a desktop app, a Remove > AI counterpart, and a Setup > Defaults > Agent choice that installs it on first pick.
OpenClaw's desktop experience is its Control UI, served by a local gateway that runs as a systemd user unit. So "the app" here is an Omarchy web app pointed at that gateway, with a launcher that gets the gateway there first.
What's in it
omarchy-openclaw-onboard: OpenClaw's setup wizard the way this flow needs it. Bareopenclaw onboardis the guided flow as of 2026.9.1, which ends in a foreground gateway and a browser tab and never returns; the helper runs the classic quickstart wizard with the service install under script(1) and ends it once the gateway answers and its output has gone quiet, since the wizard has no exit of its own without the TUI step.omarchy-launch-openclaw: runs that onboarding in a floating terminal if it never happened, installs or starts the gateway unit when it is missing or stopped, then opens the Control UI through its single-use browser handoff URL.--tui [--message]attaches OpenClaw's terminal UI to the same gateway instead, which is what the default-agent launch uses (openclaw chatwould refuse to start while the gateway owns the state dir).omarchy-install-ai-openclaw/omarchy-remove-ai-openclaw: package, web app entry, and icon; removal tears down every user unit OpenClaw installed (gateway, and the node host if there is one) via upstream's ownuninstall(falling back by hand), aborts if a service will not stop, and then asks, default no, whether~/.openclawshould go too, showing its size: chats and credentials live there next to hundreds of megabytes of plugin runtimes OpenClaw downloads for itself.omarchy-install-openclaw-cliplugs into theagent_installerseam from Add Hermes as a desktop app and a coding agent #7469, soomarchy default agent openclawinstalls the package like Hermes installs its runtime.U+E90Cin the icon font (E90Bis left for Perplexity, in flight on another branch), manual paragraph, and tests: 17 new cases across the menu, launcher, remover, and default-agent suites.Verified on a real machine
Against OpenClaw 2026.9.1 from the companion omarchy-pkgs PR: menus render, launcher brings the Control UI up from unit-absent, unit-stopped, and running states, the app-grid entry does the same,
omarchy agentopens the TUI attached to the gateway, and Remove > AI leaves no unit, entry, or icon behind. Full suite: 3082 ok; the two failures (runtime-smoke-test,ssh-reconnect-test) reproduce on pristine quattro / pass standalone and are untouched here.One upstream note: as of 2026.9.1
openclaw dashboard --yesno longer installs or starts a gateway (and copies a pairing URL into the clipboard once it is up), which is why the launcher drivesopenclaw gateway install/startdirectly.Depends on the package landing in omarchy-pkgs first: omacom/omarchy-pkgs#307.