unix_computer_use
Local and remote desktop observation/input tools with coordinate normalization (local macOS/Linux by default; optional OSWorld HTTP and SSH Mac backends).
Skill by razzant
Chalk Labs
Need help deploying unix_computer_use?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/razzant-unix-computer-use
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: browser-automation, workflow-automation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/unix-computer-use
What's inside
- Skill name
unix_computer_use- Description
- Local and remote desktop observation/input tools with coordinate normalization (local macOS/Linux by default; optional OSWorld HTTP and SSH Mac backends).
- License
- MIT
- Instructions
- 123 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- name: only lowercase letters, digits and single hyphens allowed
Files (2)
- SKILL.md
- plugin.py
SKILL.md (first lines)
# Unix Computer Use This bundled extension exposes a reviewable computer-use substrate for local macOS/Linux desktops and explicitly configured remote targets. **All actions are for supervised, low-risk workflows under human or benchmark observation.** It is offered and on by default on macOS and Linux (`os`); Windows desktops use `windows_computer_use`. A previously enabled Unix remote skill stays available on Windows through later OFF/ON. Actor-less legacy ON is retained too: manual and early automatic choices cannot be distinguished. This adds no local Windows backend. Tools: - `capabilities` reports the platform, display-session type, who is in front (local and remote), the OS grants the local process holds (prompt-free preflights on macOS: Accessibility, Screen Recording, input events; `permission_state_verified` is true only when they ran; a remote machine's grants are not probed), whether `app=` targeting works in this session and what it is resolved from, and the detected screenshot/input backends plus the active connection. - `list_connections`, `add_connection`, `test_connection`, `activate_connection`, and `use_local` manage the local/remote connection registry in skill state. - `screenshot` captures the main display (or, on macOS with `app=`, the display holding that application's front window), downscales the image to fit WXGA (1280x800, configurable) and persists the exact image-to-input coordinate transform, including the display's origin. `display.selected_by` says how the display was chosen: `default`, `app`, or `fallback` when the named window could not be located (`app_window_unread` says why) and the main display was captured instead; the result then carries no `app`. Linux and the remotes capture their one screen and ignore `app=` (the result says so). Pass coordinates read off the returned image directly to the input tools — they are remapped automatically. The result carries the typed `auto_attach_image` field, so the host attaches the image to the conversation in the same round; an engine that cannot take images receives the path instead (host behaviour), so the text facts in every other tool are the way to check without a picture. - `click` (left/right/middle, double/triple), the thin aliases `double_click`/`triple_click` (models call these names unprompted), `move`, `left_click_drag`, `mouse_down`/`mouse_up`, `cursor_position`, `type_text`, `key`, `hold_key`, `scroll`, and `wait` execute input through platform tools when available. Pointer coordinates pass through one normalizer that accepts the malformations models actually emit (the pair packed into `x` with `y` absent or duplicated) and fails loudly on anything ambiguous. - `activate_app` brings a running application to the front (name, bundle id / WM_CLASS, or `pid:<n>` as `window_list` prints it; resolved from the running list, never launched) and reports who is in front afterwards. - `window_list` lists running applications with their windows: who is in front, titles, bounds, pid, and on macOS whether the application has its own scripting commands (`scriptable`); `app=` filters, `limit` caps the rows. - `ax_tree` reads one window as text through the Accessibility API, bounded: the frontmost application's window, or `app=`'s without bringing it forward. - `remote_exec` runs a shell command on the active remote backend only; it refuses on local backend. Use ordinary Ouroboros shell/file tools for local work. Acting in a named application (`app=`): - `click`, `double_click`, `triple_click`, `left_click_drag`, `mouse_down`, `type_text`, `key`, `hold_key` and `scroll` take an optional `app`: a running application's name (case-insensitive), its bundle id or WM_CLASS, or `pid:<n>` copied from `window_list`; on X11 and OSWorld also a window's exact title or its `0x…` id. Resolution is exact: no prefix or substring guessing (on X11 and OSWorld a substring hit is returned as a candidate, so the exact name can be given; macOS and SSH answer with the running list; the one looser form is the WM_CLASS rule in the X11 row below, where `wmctrl` joins instance and class with a dot). On X11 and OSWorld the target is a set of windows: the one window for a title or id, every window of that WM_CLASS for a class (a process may host several classes, as LibreOffice's Writer and Calc do), every window of the process for `pid:`; "in front" means the active window is one of them. The tool resolves the name against the running list without launching anything, brings the application forward when it is not already in front, reads who is in front again, and only then sends the input. Two matches are a refusal that lists the candidates; an application that is not running is a refusal that lists the running applications; one that did not come to the front (macOS 14+ may refuse activation from a background process) is a refusal that names who is in front; a front that could not be read after the switch is the refusal `front_unread`. A refusal sends nothing and carries no effect mark (a switch it observed first keeps its own, `activation_done`). An empty `app` (what a voice model sends for an unused optional field) means "untargeted": the input goes to whatever is in front, as before. - A `key` sequence (`'down down return'`) brings the target forward once and, before every later step, reads the front again: when the named application (or window) has left the front (a `cmd+tab` in the sequence, the owner switching away, a sibling window of the same process coming forward for a title-named target, a window of the class that was not listed with a class-named target, such as a dialog a step opened) the remaining steps are not sent (`target_lost`, `steps_done` says how many ran); a switch that ran before a step that could not be sent keeps its mark (`activation_done`). Without `app=` every step goes to whatever is in front at that moment, and the receipt names each step's recipient when they differ (`steps_delivered_to`, `"unknown"` for a step whose front could not be read). On a sequence that stopped, `dispatched` is the fact for the step that failed (`steps_done` counts the steps that ran before it; a step whose remote call did not answer is `null`, and the note says so, never "not sent"). A tool's registered budget covers one input's worst case (`type_text` 180 s, the other inputs 90 s, `move` and `mouse_up` 60 s), not a long sequence: when the host's budget ends a call, no receipt comes back. - `move` and `mouse_up` never change which application is in front: a drag must end where it started. - Keyboard focus follows the switch and stays there, as if the owner had clicked the application; nothing moves it back. Do this only when the owner asked for an action in that application (owner decision 27.10.2026). - Where an application has its own commands (macOS: `scriptable: true` in `window_list`; AppleScript/JXA through `run_command`/`run_script`, e.g. `osascript -e 'tell application id "com.apple.iWork.Keynote" to show next'` while a presentation plays, or `set current slide of front document to slide 2` in the editor), prefer them: they do not depend on which window is in front and they can read the state back (`slide number of current slide`). A keystroke is the right instrument only where no such command exists, and the key that means "next" differs per application and per mode (Keynote advances on Right Arrow while presenting, Down Arrow in the editor's navigator). Coordinate contract: - Input tools accept coordinates in the LAST screenshot's image space and remap them through the stored transform (scale and display origin); `raw=true` bypasses remapping.
From razzant/ouroboros, MIT.
More from razzant/ouroboros
- 0.826score
telegram
razzant
Owner-only Telegram text bridge and Mini App gateway for the existing Ouroboros interface.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.824score
ui_design
razzant
Design or change anything people look at (app UI, widget, mockup, HTML page or report, chart, icon) so it fits the existing system, uses real content and…
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.824score
design_demo
razzant
Put a visual choice before a person as one self-contained page: one scene at their real size, variants swapped in place, A recommended, short plain questions…
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.819score
windows_computer_use
razzant
Windows desktop reading and element actions through the UI Automation text tree (roles, labels, states, coordinates) - no screenshots, no coordinate clicks.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.809score
author_ui_kit
razzant
Optional installed UI controls in a module and an independent page.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.809score
error_tracker
razzant
Example.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.700score
Device voice
razzant
Read Ouroboros replies aloud using the voices available on your device.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.700score
Browser speech
razzant
Free dictation using your browser's speech recognition.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.631score
ouroboros
razzant
Open-source desktop and CLI agent that keeps its identity, memory and history across tasks and can modify the code it runs on.
AgentAFreshness: A★ 1.6K
Compare and alternatives
Featured in
Signals
- Stars
- 1,581
- Forks
- 681
- Open issues
- 270
- Last commit (this folder)
- Oct 21, 2026 (10 days ago)
- Last release
- Oct 23, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/razzant/ouroboros
- Website
- ouroboros-agent.ai/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from razzant
- 0.826score
telegram
razzant
Owner-only Telegram text bridge and Mini App gateway for the existing Ouroboros interface.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.824score
ui_design
razzant
Design or change anything people look at (app UI, widget, mockup, HTML page or report, chart, icon) so it fits the existing system, uses real content and…
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.824score
design_demo
razzant
Put a visual choice before a person as one self-contained page: one scene at their real size, variants swapped in place, A recommended, short plain questions…
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.819score
windows_computer_use
razzant
Windows desktop reading and element actions through the UI Automation text tree (roles, labels, states, coordinates) - no screenshots, no coordinate clicks.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.809score
author_ui_kit
razzant
Optional installed UI controls in a module and an independent page.
SkillAFreshness: A★ 1.6KClaude Code +9 - 0.809score
error_tracker
razzant
Example.
SkillAFreshness: A★ 1.6KClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get unix_computer_use running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
unix_computer_use skill. Agent Mart. https://agentmart.dev/skills/razzant-unix-computer-use (last updated 2026-10-24)