<h1 align="center"pixelactions</h1
<p align="center" <bConsume human-verified coordinates, perform the interaction, confirm it landed</b<br/ <iClick, type, chord, drag, scroll — from a chained CLI, a flow file, or a line protocol any language can drive</i </p
<p align="center" <a href="https://github.com/nolindnaidoo/pixelactions/actions/workflows/ci.yml" <img src="https://github.com/nolindnaidoo/pixelactions/actions/workflows/ci.yml/badge.svg" alt="Build Status" / </a <img src="https://img.shields.io/badge/rustc-1.88+-93450a.svg" alt="MSRV: Rust 1.88+" / <a href="https://github.com/nolindnaidoo/pixelactions/blob/main/LICENSE" <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT" / </a <a href="https://pixelactions.dev" <img src="https://img.shields.io/badge/web-pixelactions.dev-00A0FF.svg" alt="pixelactions.dev" / </a </p
pixelcoords freezes your screen, lets you mark labeled regions, and writes pixel-exact coordinates with crops, drift re-location, and point verification. pixelactions reads that session and acts on it — referencing regions by label, never by raw coordinate, so a run survives the UI moving.
find → act → assertNo account, no network surface, no daemon — one small native binary that runs, acts, and exits. MIT-licensed, because the aim was to build the best executor in this category and give it away.
Status
Early, and macOS only. The loop works end to end: resolve a label to its click point, re-locate it against a fresh capture, act, and confirm. Windows and X11 are next; no crate or binaries are published yet.
Install
Prebuilt binaries will be on the releases page once published — download, unpack, run. Or build it with cargo:
cargo install pixelactionsRust 1.88+ for the cargo route. pixelactions drives the pixelcoords binary for capture-time work — install both:
cargo install pixelcoords pixelactionsmacOS asks for an Accessibility grant on first run. The grant attaches to the terminal that launches pixelactions, not the binary — pixelactions doctor --probe proves the grant instead of assuming it.
Three ways to drive it
One binary, three surfaces, ranked. Most people want the first. Here is the same task in each — fill a field and confirm the result.
1. Command line
pixelactions run --session ~/captures/checkout \
click:email type:"a@b.com" key:enter verify:success --yes