GUIClaw

ไฝœ่€… Fzkujiโœ“ ๅทฒ้ชŒ่ฏ

๐Ÿฆž Vision-based desktop automation skills for OpenClaw agents on macOS. See, learn, click โ€” any app.

6
Stars
1
Forks
Python
่ฏญ่จ€
2026/8/24
ๆทปๅŠ ๆ—ถ้—ด

โš ๏ธ ็ฌฌไธ‰ๆ–น่ฝฏไปถๅฃฐๆ˜Ž

ๆœฌ Skill ไธบ็ฌฌไธ‰ๆ–นๅผ€ๆบ่ฝฏไปถ๏ผŒ็‹ฌ็ซ‹ๆ‰˜็ฎกไบŽ GitHubใ€‚SkillTip ไป…ไธบไฟกๆฏ็›ฎๅฝ•๏ผŒไธๆŽงๅˆถๆˆ–็ปดๆŠคๅบ•ๅฑ‚ไป“ๅบ“ใ€‚ๆ‰€ๆ˜พ็คบ็š„ๅฎ‰ๅ…จๆฃ€ๆŸฅไธบ่‡ชๅŠจๅŒ–ไธ”่Œƒๅ›ดๆœ‰้™๏ผŒๅฎ‰่ฃ…ๅ‰่ฏท่‡ช่กŒๅฎกๆŸฅๆบ็ ใ€‚

้˜…่ฏปๆœๅŠกๆกๆฌพ

ๅฎ‰่ฃ…

ๆทปๅŠ ๅˆฐไฝ ็š„ Claude Code skills ็›ฎๅฝ•๏ผš

# Add to your Claude Code skills
git clone https://github.com/Fzkuji/GUIClaw

ๅฟซ้€Ÿๅ…ฅ้—จ

ไฝฟ็”จ GUIClaw ็ญ‰ Skills ็š„ๆŒ‡ๅ—ใ€‚

ๅฎ‰ๅ…จๆŠฅๅ‘Š

ๅทฒ้ชŒ่ฏ

ไธŠๆฌกๆ‰ซๆ๏ผšโ€”

{
  "status": "PASSED",
  "issues": []
}

README.md

GUI Agent Harness

Autonomous GUI agent โ€” give it a task, it operates the desktop.
Visual memory โ€ข One-shot UI learning โ€ข Any LLM provider โ€ข Local or VM


๐Ÿ‡บ๐Ÿ‡ธ English ยท ๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡


News

  • [2026-06-05] ๐Ÿ† UI-Vision 68.64% โ€” GPT-5.5, 5,479 samples across basic/functional/spatial splits. Results โ†’
  • [2026-06-05] ๐Ÿ† MMBench-GUI-L2 91.52% โ€” GPT-5.5, 3,594 samples. Results โ†’
  • [2026-06-05] ๐Ÿ† ScreenSpot Pro 87.9% โ€” GPT-5.5, 1,581 samples across 23 apps. Results โ†’
  • [2026-06-02] ๐Ÿ† ScreenSpot v2 96.78% โ€” GPT-5.5, 1,272 samples. Results โ†’
  • [2026-04-18] ๐Ÿ“ฆ OpenProgram โ€” Renamed from Agentic Programming. GitHub
  • [2026-04-14] ๐Ÿ† OSWorld Multi-Apps 79.8% โ€” 72.6/91 evaluated. Results โ†’
  • [2026-04-07] ๐Ÿค– Agent-native architecture โ€” Unified GUI perception + agent actions under single decision loop.
  • [2026-03-30] ๐Ÿ“ ImageContext โ€” Scale-independent coordinate system, fixes crop bugs.
  • [2026-03-29] ๐ŸŽฌ v0.3 โ€” Unified Actions โ€” gui_action.py single entry point, auto platform detection.
  • [2026-03-23] ๐Ÿ† OSWorld Chrome 93.5% โ€” 43/46 one attempt, 45/46 two attempts. Results โ†’
  • [2026-03-10] ๐Ÿš€ Initial release โ€” GPA-GUI-Detector + Apple Vision OCR + template matching.

What is GUI Agent Harness?

A CLI tool that turns any LLM into a GUI automation agent. Give it a natural-language task, it operates the desktop autonomously โ€” screenshots, clicks, types, verifies, and repeats until the task is done.

gui-agent --work-dir /private/tmp/gui-agent-desktop "Install the Orchis GNOME theme"
gui-agent --work-dir /private/tmp/gui-agent-vm --vm http://172.16.82.132:5000 "Open GitHub in Chrome and Python docs"

Built on OpenProgram โ€” the runtime handles provider abstraction, context management, and structured LLM calls. The harness adds GUI perception (YOLO detection, OCR, template matching) and action execution (mouse, keyboard, clipboard).

Grounding Pipeline: Iterative Zoom

At the core of the harness is a dedicated GUI element grounding pipeline. Given a screenshot and a natural-language description of a target element, it outputs precise click coordinates through progressive refinement.

Screenshot + Target description
         โ”‚
         โ–ผ
  Phase 1: Detection          GPA-GUI-Detector (YOLO) + OCR โ†’ all visible UI elements
         โ”‚
         โ–ผ
  Phase 2: Candidate Match    Template-match against stored visual memory
         โ”‚
         โ–ผ
  Phase 3: LLM Grounding      VLM sees full screen + component list โ†’ identifies target region
         โ”‚
         โ–ผ
  Phase 4: Iterative Zoom     Crop โ†’ upscale โ†’ re-ground โ†’ verify, repeat up to 8 rounds
         โ”‚
         โ–ผ
     Precise (x, y)

Key design decisions:

  • Multi-source perception โ€” YOLO detection + OCR + visual memory templates provide rich spatial context to the VLM, so it reasons over labeled components rather than raw pixels alone.
  • Progressive refinement โ€” Instead of one-shot coordinate prediction, the pipeline iteratively crops and zooms into candidate regions. Each round gives the VLM a higher-resolution view of a smaller area.
  • Verifier gate โ€” After each zoom level, a separate verification step checks whether the predicted point actually lands on the target. False predictions are rejected before they become wrong clicks.
  • Cacheable prompt layout โ€” Fixed rules are hoisted into a cacheable prefix; only the task, component list, and image change per call. This maximizes prompt cache hit rate across the 8-round pipeline.
  • Configurable scale strategy โ€” preserve mode keeps large images at native resolution (no information loss from downscaling small targets); fill mode matches legacy behavior for controlled comparisons.

Benchmark Results

BenchmarkSamplesAccuracyPaper BestDelta
MMBench-GUI-L2 (full)3,59491.52%74.25% (UI-TARS-72B-DPO)+17.3
MMBench-GUI-L2 (basic)1,78794.89%โ€”โ€”
MMBench-GUI-L2 (advanced)1,80788.17%โ€”โ€”
ScreenSpot Pro (full)1,58187.9%โ€”โ€”
ScreenSpot v21,27296.78%โ€”โ€”
UI-Vision (full)5,47968.64%โ€”โ€”
UI-Vision (basic)1,77273.1%โ€”โ€”
UI-Vision (functional)1,77267.0%โ€”โ€”
UI-Vision (spatial)1,93566.0%โ€”โ€”

Full per-platform breakdown: benchmarks/mmbench_gui_l2/ | benchmarks/screenspot_pro/

Agent Loop: Observe โ†’ Verify โ†’ Plan โ†’ Dispatch

For full task automation (beyond grounding), the harness runs a 4-phase loop:

  • Observe (Python) โ€” Screenshot + YOLO detection + OCR + template match. Identifies visible UI state.
  • Verify (LLM) โ€” Checks whether the previous action succeeded.
  • Plan (LLM) โ€” Sees the screenshot, detected components, and verification result. Chooses one action.
  • Dispatch (Python) โ€” Executes the action. For clicks, delegates to the iterative zoom grounding pipeline.

All phases are @agentic_function calls with structured feedback between steps.

Visual Memory

UI components are detected once, labeled by a VLM, and stored as templates. On subsequent encounters, template matching replaces expensive re-detection (~5x faster, ~60x fewer tokens). States are modeled as sets of visible components, matched by Jaccard similarity. Components auto-forget after 15 consecutive misses.

OSWorld Results

Multi-Apps: 79.8% (72.6/91) | Chrome: 93.5% (43/46)

DomainTasksPassedAccuracy
Chrome464393.5%
Multi-Apps916379.8%

Full OSWorld results โ†’

Quick Start

1. Install

The GUI agent is a normal OpenProgram program: programs live in openprogram/programs/agentic_functions/, and anything cloned into that folder auto-registers on the next start. So you install the OpenProgram host, then clone this repo into that folder and run its installer โ€” the same pattern any harness (including your own) uses to plug into OpenProgram.

Step 1 โ€” Install the OpenProgram host

macOS / Linux

git clone https://github.com/Fzkuji/OpenProgram && cd OpenProgram
./scripts/install.sh

Windows (PowerShell)

git clone https://github.com/Fzkuji/OpenProgram; cd OpenProgram
.\scripts\install.ps1

Step 2 โ€” Add the GUI agent

The quickest path is OpenProgram's program installer (the first-run wizard offers the same choice):

openprogram programs install gui     # clones this repo + installs its deps
                                     # (PyTorch: CPU wheel auto-selected on
                                     # GPU-less Linux, CUDA on NVIDIA boxes)

For explicit control over the torch variant and the asset setup (detector weight, OCR models, system tools), clone this repo into the agentics folder and run its own installer instead:

macOS / Linux

cd openprogram/programs/agentic_functions
git clone https://github.com/Fzkuji/GUI-Agent-Harness
cd GUI-Agent-Harness
./scripts/install.sh            # auto-detects an NVIDIA GPU; --cpu / --cuda cuXXX to force

Windows (PowerShell)

cd openprogram\programs\agentic_functions
git clone https://github.com/Fzkuji/GUI-Agent-Harness
cd GUI-Agent-Harness
.\scripts\install.ps1           # auto-detects an NVIDIA GPU; -Cpu / -Cuda cuXXX to force

It's one command, but the heavy lifting is platform-specific โ€” here's exactly what it sets up on each OS, so nothing is left for you to chase down:

macOSWindowsLinux
PyTorchuniversal MPS/CPU wheelNVIDIA-CUDA auto-detected, else CPUNVIDIA-CUDA auto-detected, else CPU
OCR engineApple Vision + EasyOCR fallbackEasyOCR en+ch_sim (~300 MB)EasyOCR en+ch_sim (~300 MB)
DetectorGPA-GUI-Detector weight โ†’ ~/GPA-GUI-Detector/model.ptโ†’ %USERPROFILE%\GPA-GUI-Detector\model.ptโ†’ ~/GPA-GUI-Detector/model.pt
System toolsXcode CLT (Swift, for Apple Vision)none โ€” Win32 + PowerShell clipboard built-inxclip (required) + wmctrl/xdotool/scrot, via apt/dnf/pacman
Manual stepgrant the terminal Screen Recording + Accessibilitynonenone

macOS only: the agent cannot screenshot or click until you grant your terminal Screen Recording and Accessibility under System Settings โ†’ Privacy & Security. Apple Vision OCR also needs the Xcode command-line tools (xcode-select --install); the installer requests them, and EasyOCR is installed as a cross-platform fallback either way.

After Step 2, restart the worker (or hit Refresh on the web UI's Functions page): gui_agent is registered and shows up in the web UI and the gui-agent CLI. The first time you run openprogram it walks you through provider setup.

Offline pre-fetch, forcing a CUDA tag, or skipping pieces (--no-weights / --no-ocr / --no-system): docs/install.md.

How OpenProgram detects this harness (and how to build your own)

OpenProgram walks openprogram/programs/agentic_functions/ at startup and loads any cloned repo that satisfies the harness contract:

GUI-Agent-Harness/                   โ† cloned into programs/agentic_functions/
โ”œโ”€โ”€ pyproject.toml                   โ† declares THIS repo's own deps only
โ””โ”€โ”€ gui_harness/                     โ† importable package
    โ”œโ”€โ”€ __init__.py                  โ† kept dependency-light (lazy heavy imports)
    โ””โ”€โ”€ agentics/
        โ””โ”€โ”€ __init__.py              โ† exposes AGENTIC_FUNCTIONS = [gui_agent]

Importing gui_harness.agentics fires the @agentic_function decorators, which self-register the functions. Two rules keep this safe: the top-level __init__ must import cleanly on a machine without the harness's heavy deps (this repo lazy-loads cv2/torch for exactly that reason), and pyproject.toml must NOT declare openprogram as a dependency (the host already provides it). Full contract: docs/installing-harnesses.md.

2. Run

--work-dir is an absolute path the agent may write to; use a native path per OS.

# macOS / Linux โ€” local desktop
gui-agent --work-dir /tmp/gui-agent-firefox --app firefox "Open Firefox, go to google.com"

# Windows (PowerShell) โ€” local desktop
gui-agent --work-dir C:\temp\gui-agent-firefox --app firefox "Open Firefox, go to google.com"

# Any platform โ€” drive a remote VM (e.g. OSWorld)
gui-agent --work-dir /tmp/gui-agent-vm --vm http://VM_IP:5000 "Install the Orchis GNOME theme"

Project Structure

GUI-Agent-Harness/
โ”œโ”€โ”€ gui_harness/
โ”‚   โ”œโ”€โ”€ main.py                   # CLI entry + agent loop
โ”‚   โ”œโ”€โ”€ openprogram_compat.py     # OpenProgram boundary
โ”‚   โ”œโ”€โ”€ action/input.py           # Mouse, keyboard, clipboard
โ”‚   โ”œโ”€โ”€ perception/               # Screenshot, YOLO detection, OCR
โ”‚   โ”œโ”€โ”€ planning/
โ”‚   โ”‚   โ”œโ”€โ”€ component_memory.py   # Visual memory + template matching
โ”‚   โ”‚   โ””โ”€โ”€ screenspot_locator.py # Iterative zoom grounding pipeline
โ”‚   โ””โ”€โ”€ adapters/vm_adapter.py    # Remote VM I/O
โ”œโ”€โ”€ benchmarks/
โ”‚   โ”œโ”€โ”€ screenspot_pro/           # ScreenSpot Pro (1,581 samples, 87.9%)
โ”‚   โ”œโ”€โ”€ screenspot_v2/            # ScreenSpot v2 (1,272 samples, 95.83%)
โ”‚   โ”œโ”€โ”€ mmbench_gui_l2/           # MMBench-GUI-L2 (3,594 samples, 91.52%)
โ”‚   โ”œโ”€โ”€ ui_vision/                # UI-Vision (5,479 samples, 68.64%)
โ”‚   โ””โ”€โ”€ osworld/                  # OSWorld
โ”œโ”€โ”€ memory/                       # Per-app visual templates
โ”œโ”€โ”€ SKILL.md                      # LLM skill definition
โ””โ”€โ”€ pyproject.toml

License

MIT โ€” see LICENSE.

Citation

@misc{fu2026gui-agent-harness,
  author       = {Fu, Zichuan},
  title        = {GUI Agent Harness: Autonomous GUI Automation with Visual Memory},
  year         = {2026},
  publisher    = {GitHub},
  url          = {https://github.com/Fzkuji/GUI-Agent-Harness},
}

Built with OpenProgram

ๅธธ่ง้—ฎ้ข˜

What is GUIClaw?โŒ„

GUIClaw is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Fzkuji. ๐Ÿฆž Vision-based desktop automation skills for OpenClaw agents on macOS. See, learn, click โ€” any app. It has 6 GitHub stars.

Is GUIClaw safe to use?โŒ„

Yes. GUIClaw passed SkillsLLM's automated security scan โ€” a dependency vulnerability audit plus prompt-injection heuristics โ€” with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install GUIClaw?โŒ„

Clone the repository with "git clone https://github.com/Fzkuji/GUIClaw" and add it to your Claude Code skills directory (see the Installation section above). GUIClaw ships a SKILL.md manifest, so compatible agents can discover and load it automatically.

What programming language is GUIClaw written in?โŒ„

GUIClaw is primarily written in Python. It is open-source under Fzkuji on GitHub, so you can review or fork the full source.

Are there alternatives to GUIClaw?โŒ„

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh GUIClaw against similar tools.

่ฏ„่ฎบ (0)

ๆš‚ๆ— ่ฏ„่ฎบ๏ผŒๆˆไธบ็ฌฌไธ€ไธชๅˆ†ไบซๆƒณๆณ•็š„ไบบ๏ผ

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

โญ 242,219โ‘‚ 36,702JavaScript
AI ๆ™บ่ƒฝไฝ“ai-agentsanthropicclaude-code
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

โญ 185,940โ‘‚ 28,768JavaScript
AI ๆ™บ่ƒฝไฝ“ai-agentsanthropicclaude-code
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

โญ 128,868โ‘‚ 8,826Rust
AI ๆ™บ่ƒฝไฝ“claude-codeai-tools
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

โญ 120,031โ‘‚ 19,897Shell
AI ๆ™บ่ƒฝไฝ“
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

ๅผ€ๅ‘่€…่ฟ˜ๅ–œๆฌข

ๅŸบไบŽๅ–œๆฌขๆญค Skill ็š„ๅผ€ๅ‘่€…ๆŠ•็ฅจๅ’Œๆ”ถ่—

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

โญ 242,219โ‘‚ 36,702JavaScript
AI ๆ™บ่ƒฝไฝ“ai-agentsanthropicclaude-code
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

โญ 201,881โ‘‚ 60,308TypeScript
MCP ๆœๅŠกๅ™จapisai-tools
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

โญ 185,940โ‘‚ 28,768JavaScript
AI ๆ™บ่ƒฝไฝ“ai-agentsanthropicclaude-code
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

โญ 128,868โ‘‚ 8,826Rust
AI ๆ™บ่ƒฝไฝ“claude-codeai-tools
ๆŸฅ็œ‹่ฏฆๆƒ… โ†’