weavgui
Requirements: You need a vision-capable LLM, and the Claw-style platform must support loading images directly from files into context. We recommend weavbot for this workflow.
Turn any vision-capable LLM into a desktop GUI operator.
weavgui provides a minimal CLI toolkit that closes the loop between seeing and acting: take an annotated screenshot, feed it to a vision model, move the mouse, and repeat — until the model clicks exactly where it needs to.
screenshot (with crosshair) → vision model analyzes image → mouse move / click → screenshot → ...
No browser required. No DOM. No accessibility tree. Just pixels and a feedback loop.
npx skills add https://github.com/yankeguo/weavgui/tree/main/skills/weavgui -a openclaw -y
Installation
uv tool install weavgui
To upgrade an existing installation:
uv tool upgrade weavgui
Quick Start
weavgui --version
weavgui screenshot
weavgui mouse move '(0.05,0.05)'
weavgui mouse moveto '(0.5,0.3)'
weavgui mouse click
weavgui pasteboard write hello world
weavgui pasteboard read
weavgui keystroke command+c
Auto-Screenshot Behavior
Every action command automatically captures a screenshot to screenshot.png in the current working directory after a short delay. No flags needed.
| Command | Auto-screenshot delay |
|---|---|
screenshot |
immediate (no delay) |
mouse move, mouse moveto |
500 ms |
mouse click, doubleclick, rightclick |
2 s |
keystroke |
1 s |
The screenshot always includes cursor markers (crosshair + reference boxes). Read screenshot.png as an image after any command to observe the result.
Coordinate System
Mouse and screenshot-related commands use normalized coordinates:
- Values range from
0.0to1.0 - Origin at top-left:
(0.0, 0.0), bottom-right:(1.0, 1.0) xincreases to the right (fraction of screen width),yincreases downward (fraction of screen height)- Single-display only (primary monitor)
- Resolution-independent: the same coordinates work regardless of screen size or DPI
Command Reference
Global
| Command | Description |
|---|---|
weavgui --version |
Print CLI version |
weavgui -h |
Show help |
screenshot
Capture a screenshot of the primary display and save it as screenshot.png in the current working directory.
weavgui screenshot
The cursor position is always annotated:
- Red crosshair spanning the full screenshot
- Red small box centered on cursor (normalized radius 0.03)
- Green medium box centered on cursor (normalized radius 0.07)
- Blue large box centered on cursor (normalized radius 0.20)
The three boxes serve as positioning references for the next mouse move / mouse moveto command:
| Target location | Suggested delta range |
|---|---|
| Inside the red box | Fine adjustment, ±0.03 |
| Between red and green boxes | Medium adjustment, ±0.03–0.07 |
| Between green and blue boxes | Coarse adjustment, ±0.07–0.20 |
| Outside the blue box | Large move needed — estimate from the full screenshot |
weavgui screenshot
# → saves screenshot.png with cursor markers
# → prints cursor position in normalized coordinates to stdout
mouse
mouse move '(dx,dy)'
Move the cursor by a relative delta in normalized coordinates. The argument uses (dx,dy) format. Fails if the target position would leave the valid range [0.0, 1.0). After moving, waits 500 ms and saves a screenshot to screenshot.png.
weavgui mouse move '(0.05,0.05)'
weavgui mouse move '(-0.05,0.03)'
mouse moveto '(x,y)'
Move the cursor to an absolute normalized position. The argument uses (x,y) format. Fails if the position is outside the valid range [0.0, 1.0). After moving, waits 500 ms and saves a screenshot to screenshot.png.
weavgui mouse moveto '(0.5,0.3)'
mouse click
Left click at the current cursor position. Waits 2 s then saves a screenshot to screenshot.png.
weavgui mouse click
mouse doubleclick
Double left click at the current cursor position. Waits 2 s then saves a screenshot to screenshot.png.
weavgui mouse doubleclick
mouse rightclick
Right click at the current cursor position. Waits 2 s then saves a screenshot to screenshot.png.
weavgui mouse rightclick
pasteboard
pasteboard read
Read text from the system pasteboard and print to stdout.
weavgui pasteboard read
pasteboard write <text...>
Write text to the system pasteboard. Multiple arguments are joined by a single space.
weavgui pasteboard write hello world
keystroke
Simulate keyboard input. Supports single keys and combinations joined with +. Waits 1 s then saves a screenshot to screenshot.png.
weavgui keystroke <keys>
| Input | Meaning |
|---|---|
c |
Press c |
ctrl+c |
Press Ctrl+C |
command+c |
Press Command+C |
shift+a |
Press Shift+A |
alt+f4 |
Press Alt+F4 |
Modifier aliases:
| Alias | Resolves to |
|---|---|
control |
ctrl |
cmd |
command |
option |
alt |
On macOS, single-key combos with command are sent via AppleScript for better reliability.
weavgui keystroke c
weavgui keystroke ctrl+c
weavgui keystroke command+c
Development
Clone the repository and install dependencies:
git clone https://github.com/yankeguo/weavgui.git
cd weavgui
uv sync
Run commands from source:
uv run weavgui --version
uv run weavgui screenshot
Notes
- Mouse and keystroke automation requires Accessibility permission.
- If commands fail on macOS, go to
System Settings > Privacy & Security > Accessibilityand grant access to your terminal application.
License
MIT
Metadata
Release files for weavgui 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| weavgui-0.1.6.tar.gz | 15.4 kB | With provenance | Details for weavgui-0.1.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| weavgui-0.1.6-py3-none-any.whl | Python 3 | none | any | Details for weavgui-0.1.6-py3-none-any.whl |
Total release size: 26.1 kB
Release files / weavgui-0.1.6.tar.gz
| Download URL | weavgui-0.1.6.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2882bfe802eca796e2429c9eb1b3401acac82b63014104f05388097888dfea03
|
|
BLAKE2b-256 checksum How to use checksums |
121b5fe540bc640550b5bb207c538d1974362c4911f38e5576881aa0eca37be5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency logRelease files / weavgui-0.1.6-py3-none-any.whl
| Download URL | weavgui-0.1.6-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79af6396dc3d48ad91071a3f022c45fdc916f4027db694943e39cbc53f89e63b
|
|
BLAKE2b-256 checksum How to use checksums |
71384270becf891e21653747817049d711f01ba8a88c50a12eeecf74e3537232
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency logSecurity for weavgui 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for weavgui-0.1.6.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.