macbrow
Say a command and it runs as AppleScript, or say a web task and it drives Chrome.
Say a command and it runs as AppleScript, or say a web task and it drives Chrome. Its README opens with a warning about an early version tidying a Desktop rather thoroughly.
# macbrow
Talk to your Mac. Say a command and it runs as AppleScript; say a web task and it drives
your Chrome. Routing takes about 300 ms because a System One model *chooses* instead of
generating.
[](https://youtu.be/cPBlb1neXiI)
*Demo video: [youtu.be/cPBlb1neXiI](https://youtu.be/cPBlb1neXiI)*
> **Experimental. Not for production.** This prototype lets a language model run scripts
> and click around a browser on your machine. An early version, asked to "clean up my
> desktop", moved every file on the Desktop into a folder. The safety policy in
> [`macbrow/policy.py`](macbrow/policy.py) exists because of that. Keep it on, read it
> first, and don't point voice control at a machine whose setup you can't afford to lose.
```
Gradium STT ─► Jev picks a tool + its arguments (one request, ~300 ms) ─► AppleScript ─► Gradium TTS
├─ website task ─► jev-ultrafast drives Chrome, one Jev request per step
├─ unknown action ─► LLM writes a new tool, checked, cached for next time
└─ small talk ─► LLM, one sentence
```
Stack: [Gradium](https://gradium.ai) streaming speech-to-text and text-to-speech for the voice
in and out (via the [Gradium plugin for LiveKit Agents](https://docs.livekit.io/agents/models/tts/gradium/)),
[LiveKit Agents](https://docs.livekit.io/agents/) for the voice loop, [TypeSafe's Jev](https://docs.typesafe.ai)
for every decision, [jev-ultrafast](https://github.com/browser-use/jev-ultrafast) (Browser Use ×
TypeSafe) for the browser, and an LLM (GPT-5-mini via LiveKit Inference, or a local model in
LM Studio) only for writing text.
## Why it's fast: choose, don't generate
A typical computer-use agent runs a loop of *screenshot → LLM reasons → emits an action*.
Each turn is a generation call: seconds of lat