explaingit

go-vgo/robotgo

10,711GoAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A Go library for controlling a desktop computer programmatically, move the mouse, type text, capture the screen, and listen for input events, across Mac, Windows, and Linux.

Mindmap

mindmap
  root((repo))
    What it does
      Mouse and keyboard control
      Screen capture
      Window management
    Use Cases
      Test automation
      Task automation
      AI computer use
    Tech Stack
      Go language
      C native bindings
    Platforms
      Mac and Windows
      Linux X11
      ARM64 and x86
    Extras
      Pro paid variant
      Discord community
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Write a script that automates a repetitive desktop task like filling out a form or moving files through a GUI

USE CASE 2

Build a test suite that drives a desktop application by simulating real mouse clicks and keyboard input

USE CASE 3

Implement an AI agent that can observe the screen and operate a desktop the way a human would

Tech stack

GoC

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a C compiler (GCC or MinGW) and, on Linux, X11 development headers, on Mac you must grant Accessibility and Screen Recording permissions in System Settings.

Released under an open-source license, you can use, modify, and distribute it freely.

In plain English

RobotGo is a Go library that lets you write programs to control a desktop computer automatically. From a Go program, you can move the mouse, click buttons, type text, read pixel colors from the screen, take screenshots, and listen for global keyboard or mouse events. The library works on Mac, Windows, and Linux (X11), and supports both ARM64 and x86 hardware. The typical use cases are test automation (writing scripts that drive an application the way a human would), repetitive task automation (moving files, filling forms, batch-processing anything that has a graphical interface), and more recently AI-driven computer use (letting an AI agent observe and operate a desktop the same way a person does). The project ships examples for each category of control: mouse movement and clicking, keyboard input including Unicode characters, screen capture, bitmap comparison, process listing, and window management. Before you can compile a project that uses RobotGo you need Go and a C compiler installed, because the library wraps native system code. On Linux you also need the X11 development headers and, depending on which features you use, a few additional packages for clipboard access, PNG handling, and input hooks. The README includes the exact install commands for Ubuntu and Fedora. On Mac you need Xcode Command Line Tools and you have to grant the app Accessibility and Screen Recording permissions in System Settings. On Windows you need MinGW or a compatible GCC build. Installation follows the standard Go module approach. You import the package path and Go fetches it. There is a paid Pro variant called RobotGo-Pro that adds support for JavaScript, Python, and Lua bindings, Wayland on Linux, technical support, and newer features not in the open-source version. The repository is maintained by the go-vgo organization and released under an open-source license. Docs are available on pkg.go.dev. There is a Discord server for questions and community discussion.

Copy-paste prompts

Prompt 1
Using the robotgo Go library, write a program that watches for a specific keyboard shortcut, then moves the mouse to a hardcoded screen position and clicks.
Prompt 2
With robotgo, write a Go script that takes a screenshot, saves it to a file, and then reads the color of a specific pixel to verify a UI element is visible.
Prompt 3
I want to automate a desktop GUI app using robotgo in Go. Show me how to find the app window, bring it to focus, type some text into a field, and press Enter.
Prompt 4
Using robotgo, write a Go program that listens for global mouse click events and logs the screen coordinates of each click to a file.
Prompt 5
Show me how to set up a Go project on Ubuntu that uses robotgo, including installing the required X11 development headers and compiling a simple mouse-move example.
Open on GitHub → Explain another repo

← go-vgo on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.