Show HN: Atticus – Hold-to-talk voice assistant for macOS that runs on Claude -p
Atticus is an MIT-licensed macOS 26+ hold-to-talk voice assistant that uses Apple's on-device speech transcription and runs AI requests through Claude Code on an existing Claude Pro/Max plan, so no API key is needed. Simple commands skip the model entirely (apps open in 0.08 s), actions it has seen once are learned as zero-cost shortcuts, and a "remember…" memory persists across asks. It also sets up no-AI background watchers (polling every 5 s) and holds itself to a budget of a median under $0.002 and 6 s per AI ask, with a system prompt under 10,000 characters.
What it claims
Atticus is a menu-bar voice assistant for macOS 26+. You hold ⌃⌥Space, speak, and release. It can move windows, find files, read the screen, and act inside apps. Requests that need a model go through claude -p (Claude Code) on a Pro or Max plan. The project holds itself to a measured budget for AI asks: a median under $0.002 and 6 s over the last 50 asks. The page reports $0.00095 and 5.0 s as of Oct 10, 2026. Instant commands use no AI and cost $0.
How it works
The app is split into a few parts:
Atticus.swifthandles the hotkey, speech, overlay and onboarding window.atticus.pyis the "brain": fast commands, the system prompt, and helpers for windows, web and screen.ui/*.htmlholds the overlay, onboarding and Settings screens.
Each request is gated on Apple's final transcript:
- AI reasoning may start during a pause, but its tools wait for the final transcript.
- Learned shortcuts also wait for confirmed words.
- Built-in instant commands can fire mid-sentence, but only if Instant commands and Act while I'm talking are enabled (Settings → Intelligence).
- If speech finalization stalls, you get the partial text to review instead of an automatic send.
flowchart TD
A[Speech released] --> B{Built-in instant command?}
B -->|yes| C[Run now, no AI]
B -->|no| D[Wait for final transcript]
D --> E{Learned shortcut?}
E -->|yes| F[Run, no AI]
E -->|no| G[claude -p with tools]
D -.slow.-> H[Partial text for review]Watchers ("tell me when Codex is done", "watch this page until it says shipped") use AI only to set up and to act at the end. While waiting, they poll locally every 5 s. Coding agents such as Codex are watched through their own log, not the screen.
How to use it
Requirements:
- macOS 26 or later
- A Claude Pro or Max plan and Claude Code (setup installs Claude Code if it is missing)
- Apple's command line tools
- Optionally, Peekaboo, which is needed for clicking inside apps
xcode-select --install
curl -fsSL https://raw.githubusercontent.com/SaarthurR/atticus-mac/main/install.sh | bashThe installer puts the source in ~/.atticus and builds ~/Applications/Atticus.app. The app starts at login and auto-updates by default; you can turn this off in Settings → About & Updates. For development, clone the repo and run ./build.sh after each change.
Tests and budget check:
python3 atticus.py --selftest
python3 -m unittest discover -s tests -v
~/Applications/Atticus.app/Contents/MacOS/Atticus --selftest
python3 atticus.py --budget
python3 -m http.server 8765 --bind 127.0.0.1 # then open /tests/ui.html (mock bridge, no Mac actions or AI calls)Uninstall:
launchctl bootout gui/$(id -u)/com.atticus.appThen delete ~/Applications/Atticus.app, ~/.atticus, ~/.config/atticus (settings and history) and ~/Library/LaunchAgents/com.atticus.app.plist.
Limits
- macOS 26 only, because it depends on Apple's new on-device speech.
- Paid Claude plan required. Usage runs against your plan rather than an API key.
- Watchers need a visible window. The watched window must stay open on the current desktop; being covered is fine.
- No in-app clicking without Peekaboo.
- Toggle mode does not auto-send long recordings. Recordings over 60 s go to a review screen.
- Telemetry statements differ. The README says a daily random ID is sent to PostHog (opt out in Settings → Account & Access → Count me as a user). The contributor notes say telemetry is disabled unless
ATTICUS_POSTHOG_KEYis set and that no key is embedded in the source. Check which applies to the build you install. - Default install has no pinning. Installing via
curl | bashwith auto-update means you run whatever is onmain. Pin a commit if that matters to you. - Licence: MIT. The bundled
ui/orbs.js(from thinking-orbs, by Jakub Antalik) is also MIT.
Organisations named here
- Anthropic
- Apple
- PostHog
- OpenAI
- Claude Code
Technologies named here
- Atticus
- Claude
- Claude Code
- Peekaboo
- Codex
- PostHog
- thinking-orbs
- Apple on-device speech
- JavaScript
- macOS
- Python
- Swift
Techniques named here
- Instant commands
- Learned shortcuts
- Persistent memory
- Zero-cost watching
- Speculative reasoning before confirmation
Related in agents



