<< All versions

Skill v1.0.1

currentAutomated scan100/100
hcompai/holo-desktop-cli/holo-desktop

+1 new

──Details
PublishedOctober 25, 2026 at 08:34 AM
Content Hashsha256:3e18f5861229530f...
Git SHA20df78383774
Bump Typepatch
Compare with v1.0.0
──Files
Files (1 file, 4.7 KB)
SKILL.md4.7 KBactive
SKILL.md · 49 lines · 4.7 KB

version: "1.0.1" name: holo-desktop description: Sub-agent that drives the user's desktop in the foreground via H Company's Holo VLM, using the real cursor and keyboard. If direct Holo tools are not visible, search for holo_desktop tools.


HoloDesktop CLI

HoloDesktop CLI runs on the user's actual computer. Hosts expose a single tool, holo_desktop(task: str) -> str. Each task sends Holo a single task string; it then runs a screenshot-and-act loop on the user's desktop, moving the real cursor and typing with the real keyboard until the task is done, the step or time budget is hit, or the run is cancelled. The user should not touch the mouse or keyboard while a task runs. It returns a single text answer.

In hosts with lazy tool discovery, the only initially visible tool may be tool search. That is not a blocker: search for holo_desktop.

Holo is blind to the caller. It does not see the conversation, prior tool results, or earlier Holo calls. Everything it knows about the goal, the user, the situation, and what counts as success has to live in the task string. The caller is not a relay: it is the agent that holds context, does any synthesis, and hands Holo the part that requires actually clicking through a GUI. This is why passing the user's request verbatim is the wrong reflex — the user's wording usually elides everything they expect the calling agent to carry: which Slack workspace, who "Sarah" is, what they've been working on, what the answer should look like. Fold that in. The opposite reflex is also wrong: action verbs and message content the user actually supplied should be preserved, because Holo grounds well on natural human imperatives and small rewrites drift intent. Paraphrase by adding context, not by rephrasing the user's words.

Holo's domain is work that happens on the user's machine: operating native apps (Finder, Mail, Calendar, Authy, Slack, Adobe, Obsidian, IDEs, conferencing apps), navigating system UI (Settings, menu bars, dialogs), interacting with the user's logged-in sessions in their own browser profile, and observing what is currently on the screen. It is not the right tool when the answer is already reachable from a web search, an API, or the calling agent's own knowledge; when the job is file-system, shell, or code work that doesn't need a GUI; or when the user wants something written or explained in the conversation rather than done on their machine.

A trivial task (open an app, read a value) usually finishes in well under a minute; a multi-step task in an unfamiliar app can take several. Holo has its own step and time budgets and will return whatever partial result it has if it exhausts them. Treat the call as long-running: do not return a final answer to the user while Holo is still in flight, and be prepared for it to fail — time out, miss a UI element, hit a permission prompt — in which case the right move is usually to refine the task with more specifics and retry, or to surface the failure to the user. One Holo task runs at a time per machine; concurrent calls return busy.

Holo works on the user's real desktop, with their real apps, logins and data. When the action mutates state in a way the user might regret — sending real messages, deleting, paying, changing system settings — confirm with the user first, or reframe the request as observe-and-report rather than asking Holo to change things. When Holo returns, surface its answer to the user as is, unless the task explicitly asked for synthesis with other tool output.

Examples

These show how a casual user message becomes a self-contained task. Only the task string is the caller's responsibility — your host's tool-call mechanism wraps it.

User: "send Sarah an on-my-way message in slack"

holo_desktop task: Open Slack and send a DM to Sarah Chen saying 'on my way'. Return 'sent' once the message appears in the conversation.

User: "what's on my calendar today"

holo_desktop task: Open the Calendar app, navigate to today, and report every event with its time, title, and attendees. Don't create, edit, or delete anything. Return the events as JSON.

User: "grab my AWS code from Authy"

holo_desktop task: Open Authy and read the current 6-digit TOTP for the 'AWS' entry. Return just the 6 digits. Do not copy to clipboard.

User (after a long thread analyzing a paper): "save this somewhere I'll find it"

holo_desktop task: | Open Obsidian and create a new note titled '2026-05-13 — Mamba-3 paper notes' in the /research vault. Paste this content into it, then return 'saved' once the file is on disk:

<the synthesised notes you just produced>

The last example is load-bearing: the caller has already done the analytical work and only hands Holo the GUI side.

← v1.0.0All versions