Desktop control CLI for AI agents https://deskctl.dev
Find a file
2026-03-26 09:27:43 -04:00
.github/workflows migrate update manifest job to publish workflow 2026-03-26 09:11:13 -04:00
assets Phase 3: screenshot annotation with bounding boxes and @wN labels 2026-03-24 21:28:10 -04:00
docker docker-compose build 2026-03-25 12:40:14 -04:00
docs rename (#11) 2026-03-26 08:51:15 -04:00
npm/deskctl release: v0.1.7 [skip ci] 2026-03-26 08:53:50 -04:00
site edit docs 2026-03-26 09:27:43 -04:00
skills/deskctl docs: tighten skill install docs and bundle 2026-03-26 09:21:43 -04:00
src change client bin name 2026-03-26 09:21:58 -04:00
tests grouped runtime reads and waits selector modes (#5) 2026-03-25 21:11:30 -04:00
.dockerignore docker-compose build 2026-03-25 12:40:14 -04:00
.gitignore rename (#11) 2026-03-26 08:51:15 -04:00
.pre-commit-config.yaml tests and tooling (#4) 2026-03-25 19:29:59 -04:00
AGENTS.md Phase 6: utility commands, SKILL.md, AGENTS.md, README.md 2026-03-24 21:40:29 -04:00
Cargo.lock release: v0.1.7 [skip ci] 2026-03-26 08:53:50 -04:00
Cargo.toml release: v0.1.7 [skip ci] 2026-03-26 08:53:50 -04:00
CONTRIBUTING.md rename (#11) 2026-03-26 08:51:15 -04:00
flake.lock nix (#7) 2026-03-25 23:18:28 -04:00
flake.nix nix (#7) 2026-03-25 23:18:28 -04:00
LICENCE licence 2026-03-25 19:34:36 -04:00
Makefile rename (#11) 2026-03-26 08:51:15 -04:00
README.md docs: tighten skill install docs and bundle 2026-03-26 09:21:43 -04:00

deskctl

npm release runtime skill

Non-interactive desktop control for AI agents on Linux X11.

Install

npm install -g deskctl
deskctl doctor
deskctl snapshot --annotate

One-shot execution also works:

npx deskctl --help

deskctl installs the command by downloading the matching GitHub Release asset for the supported runtime target.

Installable skill

npx skills add harivansh-afk/deskctl --skill deskctl -g

The installable skill lives in skills/deskctl, follows the standard skills/ repo layout, and installs directly from this GitHub repo via npx skills add .... It is built around the same observe -> wait -> act -> verify loop as the CLI.

Quick example

deskctl doctor
deskctl snapshot --annotate
deskctl wait window --selector 'title=Firefox' --timeout 10
deskctl focus 'title=Firefox'
deskctl type "hello world"

Docs

Other install paths

Nix:

nix run github:harivansh-afk/deskctl -- --help
nix profile install github:harivansh-afk/deskctl

Source build:

cargo build

Support boundary

deskctl currently supports Linux X11. Use --json for stable machine parsing, use window_id for programmatic targeting inside a live session, and use deskctl doctor first when the runtime looks broken.