Skip to content

Back to the catalog

Show HN: Atticus – Hold-to-talk voice assistant for macOS that runs on Claude -p
github.comrepo

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.

TL;DR Open-source macOS voice assistant that routes complex asks through Claude Code (`claude -p`), with free instant commands, learned shortcuts, memory and strict cost/latency budgets.
Document

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.swift handles the hotkey, speech, overlay and onboarding window.
  • atticus.py is the "brain": fast commands, the system prompt, and helpers for windows, web and screen.
  • ui/*.html holds 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 | bash

The 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.app

Then 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_KEY is 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 | bash with auto-update means you run whatever is on main. 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