awlevin/typesafe-computer-use on GitHub
- Stars
- 935
- Forks
- 75
- Language
- Python
- License
- MIT
- Last push
- 23 Sep 2026
Read from GitHub on . Counts change daily.
Reported by the author
- Cost/decision
- $0.0002, 155x
cost per decision $0.0002 $0.032 155x cheaper
github.com - Latency
- 0.13-0.38s
model latency 0.13 to 0.38 s 5.2 s 14x to 40x faster
github.com - Per 12-step task
- $0.003
cost per 12-step task $0.003 $0.40 to $0.90 130x to 300x cheaper
github.com
typesafe-computer-use drives a Mac toward a goal typed in plain English, such as finding the checkout page for the cheapest tickets to an upcoming event. It reads the screen with OCR, which turns on-screen text into machine-readable labels, then asks Jev which action to take next from that reading. A writing model such as Claude only gets called when a text field needs free text, or when Jev’s classifier has stopped and the screen needs a fresh read.
Aaron Levin built the project around Jev’s role as a choice model: given up to 255 options, it returns a full probability distribution and a calibrated confidence score in a few hundred milliseconds, with no output tokens to pay for. Most steps in a desktop task do not need open-ended reasoning, just one choice from a short list, made quickly.
Levin measured Jev against Claude Opus 5 on the same screenshot and goal, one decision each. Jev came in at $0.0002 per decision versus $0.032 for Opus, about 155 times cheaper, and 0.13 to 0.38 seconds of model latency versus 5.2 seconds, 14 to 40 times faster. Across a full 12-step task, Jev cost about $0.003 versus $0.40 to $0.90 for the frontier model. Levin notes a real limit here: Opus could read event dates off the screen and compare them unaided, while the classifier needed that date parsing built in as separate, deterministic code. The project is in beta and drives the real mouse and keyboard, so Levin recommends starting with a dry run.
How it uses Jev
def system_one(self, **request):
with self._calls.record(CLASSIFIER):
return self._client.system_one(**request)
class MeteredWriter:
"""The Anthropic client, counting each request. `messages.create` is the only call the package makes."""
def __init__(self, client, calls: Calls):
self._client = client
self._calls = calls
self.messages = SimpleNamespace(create=self._create)
def _create(self, **request):
with self._calls.record(WRITER):View in typesafe_computer_use/calls.py



