# Let an AI agent drive your Mac for a fiftieth of a cent per step with TypeSafe Computer Use

> Source: <https://dev.to/dedupedai/let-an-ai-agent-drive-your-mac-for-a-fiftieth-of-a-cent-per-step-with-typesafe-computer-use-1ag>
> Published: 2026-11-04 04:10:51+00:00

Computer-use agents built on frontier models work, but every step ships a screenshot to a big model and waits several seconds for a plan. A twelve-step task can cost close to a dollar. Most of those steps do not need a plan at all: they need one choice from a short list of buttons.

[awlevin/typesafe-computer-use](https://github.com/awlevin/typesafe-computer-use), called jev for short, is built on that observation. Per the README it drives a Mac toward a goal you type in plain English for about a fiftieth of a cent per step. It reads the screen deterministically, asks a small classifier which action comes next, and only calls a writing model when a text field genuinely needs free text or the classifier has stopped and the screen needs reading.

This post covers what it is good for, the install, and a safe first run.

The README measures one decision on the same screenshot and goal against Claude Opus 5 given a bare screenshot:

|  | jev | frontier model, bare screenshot | 
|---|---|---|
| cost per decision | $0.0002 | $0.032 | 
| cost per 12-step task | $0.003 | $0.40 to $0.90 | 
| model latency | 0.13 to 0.38 s | 5.2 s | 
| full step with capture and OCR | about 1.5 s | about 5.5 s | 

It is honest about the catch: the big model read event dates off the pixels and compared them unaided, while the classifier needed date parsing written in code. Every piece of reasoning a frontier model does for free has to be rebuilt as deterministic state.

You need macOS 14 or newer, Python 3.12 or newer and [uv](https://docs.astral.sh/uv/). Windows 10 and 11 are experimental.

```
git clone https://github.com/awlevin/typesafe-computer-use
cd typesafe-computer-use
uv sync
cp .env.example .env     # fill in the keys
```

The `.env` variables:

`TYPESAFE_API_KEY` (required): used for every decision.`ANTHROPIC_API_KEY` (optional): used for typing free text, writer-proposed URLs and the final answer. The README documents pointing the writer at another model instead, including LM Studio, Ollama or any OpenAI-compatible server.`CLICKER_EMAIL` (optional): enables the `type_email` action.`CLICKER_BROWSER` (optional): defaults to Google Chrome.
Then grant your terminal **Screen Recording** and **Accessibility** in System Settings, Privacy & Security. Without the first, captures are just wallpaper. Without the second, clicks are silently dropped and `--act` refuses to start.

It drives your real mouse and keyboard, so start without `--act`:

```
uv run clicker "open the Playground"                 # dry run: one step, prints what it would do
uv run clicker-inspect "any goal"                    # capture and open the annotated screen + payload
```

Clear the terminal before you run it. The terminal is on screen, so its text becomes OCR input.

```
uv run clicker "open the Playground" --act           # up to 100 steps
uv run clicker "log in" --act --steps 20 --delay 3   # longer and slower
uv run clicker "log in" --act --handoffs 0           # the classifier alone
```

To stop a live run, press Ctrl-C or slam the mouse into the top-left corner of the screen. The loop also stops on `done`, low confidence, a stall or the step limit. Every run writes a `runs/<timestamp>/` folder, so a stalled run can be replayed offline, and the README says a run folder attached to a bug report is the most useful thing you can send.

The projects collected on the [TypeSafe Computer Use page](https://dedupedai.com/use-cases/awlevin-typesafe-computer-use/?utm_source=devto&utm_medium=article&utm_campaign=howto_typesafe_cu) show it as a base layer:

If your task lives entirely in a browser, Browser Use's [Jev Ultrafast](https://dedupedai.com/use-cases/browser-use-jev-ultrafast/?utm_source=devto&utm_medium=article&utm_campaign=howto_typesafe_cu) applies the same classifier idea to a numbered table of page elements, and jev itself has a browser backend that reads the DOM over Chrome DevTools with no OCR and no screen permission.

`--steps` value and, for anything risky, the documented Linux sandbox in a container.
Source repo: [awlevin/typesafe-computer-use](https://github.com/awlevin/typesafe-computer-use). License: MIT.

Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: [https://dedupedai.com/ship-pack/?utm_source=devto&utm_medium=article&utm_campaign=shippack](https://dedupedai.com/ship-pack/?utm_source=devto&utm_medium=article&utm_campaign=shippack)
