Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Fast computer automation CLI for AI agents. Control any desktop with screenshots, clicks, typing, scrolling, and more.
| Date | Stars |
|---|---|
| 2026-07-31 | 314 |
| 2026-08-06 | 314 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
5.0
growth rate 0.00%/day
<!-- Purpose: npm package usage and install guide for usecomputer CLI. -->
# usecomputer
`usecomputer` is a desktop automation CLI for AI agents. It works on macOS,
Linux (X11), and Windows.
Screenshot, mouse control (move, click, drag, scroll), and keyboard synthesis
(`type` and `press`) are all available as CLI commands backed by a native Zig
binary — no Node.js runtime required.
## Install
```bash
npm install -g usecomputer
```
## Agent skill
If you use an AI coding agent (OpenCode, Claude Code, etc.), install the
usecomputer skill so the agent knows how to use the CLI correctly:
```bash
npx skills add remorses/usecomputer
```
The skill teaches the agent the screenshot → act → screenshot feedback loop,
coord-map usage, and window-scoped screenshot workflow.
## Requirements
- **macOS** — Accessibility permission enabled for your terminal app
- **Linux** — X11 session with `DISPLAY` set (Wayland via XWayland works too)
- **Windows** — run in an interactive desktop session (automation input is blocked on locked desktop)
## Quick start
```bash
usecomputer mouse position --json
usecomputer mouse move -x 500 -y 500
usecomputer click -x 500 -y 500 --button left --count 1
usecomputer type "hello"
usecomputer press "cmd+s"
```
## Library usage
```ts
import * as usecomputer from 'usecomputer'
const screenshot = await usecomputer.screenshot({
path: './tmp/shot.png',
display: null,
window: null,
region: null,
annotate: null,
})
const coordMap = usecomputer.parseCoordMapOrThrow(screenshot.coordMap)
const point = usecomputer.mapPointFromCoordMap({
point: { x: 400, y: 220 },
coordMap,
})
await usecomputer.click({
point,
button: 'left',
count: 1,
})
```
These exported functions intentionally mirror the native command shapes used by
the Zig N-API module. Optional native fields are passed as `null` when absent.
## OpenAI computer tool example
```ts
import fs from 'node:fs'
import * as usecomputer from 'usecomputer'
async function sendComputerScreenshot() {
const screenshot = await usecomputer.screenshot({
path: './tmp/computer-tool.png',
display: null,
window: null,
region: null,
annotate: null,
})
return {
screenshot,
imageBase64: await fs.promises.readFile(screenshot.path, 'base64'),
}
}
async function runComputerAction(action, coordMap) {
if (action.type === 'click') {
await usecomputer.click({
point: usecomputer.mapPointFromCoordMap({
point: { x: action.x, y: action.y },
coordMap: usecomputer.parseCoordMapOrThrow(coordMap),
}),
button: action.button ?? 'left',
count: 1,
})
return
}
if (action.type === 'double_click') {
await usecomputer.click({
point: usecomputer.mapPointFromCoordMap({
point: { x: action.x, y: action.y },
coordMap: usecomputer.parseCoordMapOrThrow(coordMap),
}),
button: action.button ?? 'left',
count: 2,
})
return
}
if (action.type === 'scroll') {
await usecomputer.scroll({
direction: action.scrollY && action.scrollY < 0 ? 'up' : 'down',
amount: Math.abs(action.scrollY ?? 0),
at: typeof action.x === 'number' && typeof action.y === 'number'
? usecomputer.mapPointFromCoordMap({
point: { x: action.x, y: action.y },
coordMap: usecomputer.parseCoordMapOrThrow(coordMap),
})
: null,
})
return
}
if (action.type === 'keypress') {
await usecomputer.press({
key: action.keys.join('+'),
count: 1,
delayMs: null,
})
return
}
if (action.type === 'type') {
await usecomputer.typeText({
text: action.text,
delayMs: null,
})
}
}
```
## Anthropic computer use example
Anthropic's computer tool uses action names like `left_click`, `double_click`,
`mouse_move`, `key`, `type`, `scroll`, and `screenshot`. `usecomputer`
provides the execution layer for those actions.
```ts
import fs from 'node:fs'
import Anthropic fExcerpt of 16,992 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:afe943640488d3b0, llm:description: 'Fast computer automation CLI for AI agents. Control any desktop with screenshots, clicks, typing, scrolling, and more.' (repo description)
matched fp:afe943640488d3b0, llm:description: 'Fast computer automation CLI for AI agents. Control any desktop with screenshots, clicks, typing, scrolling, and more.' (repo description)
matched fp:afe943640488d3b0, llm:description: 'Fast computer automation CLI for AI agents. Control any desktop with screenshots, clicks, typing, scrolling, and more.' (repo description)