ao-desktop-dev
Launch, restart, or troubleshoot the real AO Electron desktop app from this repository; run a checkout against isolated or real…
First run of Orchestrator Bot: find every computer that runs AO, save them as AO hosts, add a remote AO host that has no Grok Bot desktop app, and turn on optional routines. On a computer without Orchestrator.inc it helps install it and get it ready: a coding agent, a first
$ npx -y skills add OrchestratorInc/agent-orchestrator --skill ao-setup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ao-setupContext preview
The summary Claude sees to decide when to auto-load this skill.
First run of Orchestrator Bot: find every computer that runs AO, save them as AO hosts, add a remote AO host that has no Grok Bot desktop app, and turn on optional routines. On a computer without Orchestrator.inc it helps install it and get it ready: a coding agent, a first
name: ao-setup description: >- First run of Orchestrator Bot: find every computer that runs AO, save them as AO hosts, add a remote AO host that has no Grok Bot desktop app, and turn on optional routines. On a computer without Orchestrator.inc it helps install it and get it ready: a coding agent, a first project and the first orchestrator. Use on the first chat, when memory has no "AO hosts" note, or when the user says "set up AO", "add a host", "add remote host", "check my AO setup" or "install Orchestrator".
Follow the ao-rules skill. Detection is read-only. Nothing is written until the user says yes.
Open with one line: "Give me a few seconds to look for AO on your computers."
1. ListMachines. Use desktops only. If none is connected, say: "Install the Grok Bot desktop app on the computer where you run Orchestrator.inc (or want to), sign in, and tell me when it shows up," then stop. 2. On each connected desktop, in parallel, run this read-only probe with the `aoapi` helper from ao-rules: run "Probe" below. 3. Each desktop where the probe prints a `projects=` line is a **local** AO host; an empty list means it still needs "First run". For any other result, see "Missing pieces". On a Windows desktop, don't run the probe: say once "These skills need macOS or Linux; Windows isn't supported yet," and skip it.
f(){ <aoapi helper>; echo "ao=$(command -v ao >/dev/null && ao version 2>/dev/null | head -1 || echo missing)"
if [ "$(uname -s)" = Darwin ] && [ "$(command -v python3)" = /usr/bin/python3 ] && ! xcode-select -p >/dev/null 2>&1; then echo "python=missing"
else echo "python=$(command -v python3 >/dev/null && python3 -c 'import sys;print("%d.%d"%sys.version_info[:2])' || echo missing)"; fi
[ "$(uname -s)" = Darwin ] && A=$(find /Applications "$HOME/Applications" -maxdepth 1 -name '*Orchestrator*.app' 2>/dev/null | head -1) && echo "app=${A:-missing}"
if P=$(aoapi GET projects 2>/dev/null); then
echo "$P" | python3 -c 'import json,sys; d=json.load(sys.stdin); p=d.get("projects",d) if isinstance(d,dict) else d; print("projects=" + ", ".join(x.get("id","?") for x in p))'
aoapi GET 'sessions?active=true' | python3 -c 'import json,sys; print("live_sessions=%d" % len(json.load(sys.stdin)["sessions"]))'
else echo "daemon=not running"; fi; }; fUse the probe result for each computer. Install or open anything only after the user's yes.
| Probe shows | Next step | |---|---| | `python=missing` | Fix this first: every step needs it. macOS: `xcode-select --install` (the user confirms the system dialog). Linux: give the package manager line for python3 | | `daemon=not running` and `app=missing` (macOS) | Say: "Orchestrator.inc isn't installed on <computer>. Want me to install it? It's about a 300 MB download." On yes, run "Install on a Mac" | | `daemon=not running` and `app=<path>` | On yes, open it with `open "<path>"`, then "Wait for the app" | | `daemon=not running` on Linux | If Orchestrator.inc is installed, ask the user to open it and say **check again**. Otherwise give the download for the user's distribution: [AppImage](https://github.com/OrchestratorInc/agent-orchestrator/releases/latest/download/agent-orchestrator-linux-x64.AppImage), [.deb](https://github.com/OrchestratorInc/agent-orchestrator/releases/latest/download/agent-orchestrator-linux-x64.deb) or [.rpm](https://github.com/OrchestratorInc/agent-orchestrator/releases/latest/download/agent-orchestrator-linux-x64.rpm). The user installs and opens it, then says **check again** | | `projects=` with nothing after it | Run "First run" | | `ao=missing` with projects listed | Everything works except starting a review, screenshots and automations, which use the `ao` CLI. Say so once |
**check again** runs the probe on that computer again and goes on from its result.
**Wait for the app:** run the probe every 15 seconds, for up to 2 minutes, until it prints a `projects=` line. Still `daemon=not running` after that: ask the user to look at the Orchestrator.inc window and say **check again** when it's open.
After a yes, on that computer. The download takes a few minutes, so the install runs in the background, in its own session so it keeps going after this command returns, and writes its progress to `~/.ao-grok/install.log`. It picks the build for the Mac's chip, checks the app's code signature (Orchestrator.inc's Developer ID team `X9LNSP8MC2`), copies it to Applications (or `~/Applications` if that isn't writable) and opens it:
f(){ mkdir -p ~/.ao-grok && cat > ~/.ao-grok/install-orchestrator.sh <<'EOF'
a=$([ "$(sysctl -n hw.optional.arm64 2>/dev/null)" = 1 ] && echo arm64 || echo x64); d=$(mktemp -d)
echo "downloading the $a build"
curl -fsSL -o "$d/o.dmg" "https://github.com/OrchestratorInc/agent-orchestrator/releases/latest/download/agent-orchestrator-darwin-$a.dmg" || { echo DOWNLOAD_FAILED; rm -rf "$d"; exit 1; }
m=$(hdiutil attach -nobrowse -readonly "$d/o.dmg" | awk -F'\t' '/\/Volumes\//{print $NF}' | tail -1)
[ -n "$m" ] || { echo INSTALL_FAILED; rm -rf "$d"; exit 1; }
app=$(find "$m" -maxdepth 1 -name '*.app' 2>/dev/null | head -1)
done_(){ [ -n "$m" ] && hdiutil detach -quiet "$m"; rm -rf "$d"; }
if [ -z "$app" ] || ! codesign --verify --deep --strict "$app" 2>/dev/null || ! codesign -dv "$app" 2>&1 | grep -q 'TeamIdentifier=X9LNSP8MC2'; then echo BAD_SIGNATURE; done_; exit 1; fi
dest=/Applications
cp -R "$app" "$dest/" 2>/dev/null || { dest="$HOME/Applications"; mkdir -p "$dest" && cp -R "$app" "$dest/"; } || { echo INSTALL_FAILED; done_; exit 1; }
done_
open "$dest/${app##*/}" && echo "INSTALLED $dest/${app##*/}" || echo "INSTALLED_NOT_OPENED $dest/${app##*/}"
EOF
nohup python3 -c 'import os,sys; os.setsid(); os.execvp("sh", ["sh", sys.argv[1]])' ~/.ao-grok/install-orchestrator.sh > ~/.ao-grok/install.log 2>&1 & echo STARTED; }; fTell the user it has started. Then check `tail -1 ~/.ao-grok/install.log` ev
Plan, run and supervise fleets of agents from task to merged PR. Desktop (macOS, Windows, Linux) + iPhone & Android apps. Supports Claude Code, Codex & 35+ coding agents.
Launch, restart, or troubleshoot the real AO Electron desktop app from this repository; run a checkout against isolated or real…
Help clarify human bug reports, search for duplicates, and gather diagnostic evidence separately from a concise issue draft.
Direct actions on one AO session or PR: stop or interrupt, resume, merge a PR, start a review, screenshot a session's browser,…
Find AO sessions that wait on the user, show each question or approval as tap-to-answer options, and send the answer back to that…
Talk to a project's AO orchestrator: pass the user's request to it, wait for its reply and relay it. The default route for…
Shared rules and the connection helper for every ao-* skill (run Orchestrator from chat). Read before running any ao-* skill.