Comet app icon

Comet

Hold a shortcut, speak, the cleaned text drops into the app you're already using. Lives in the menu bar. Local-first by default. Free.

What it is

A small macOS menu-bar app for voice dictation. Hold the configured shortcut, speak, release. Audio is normalised, sent to your chosen speech-to-text service, optionally cleaned up by an LLM, and pasted into the frontmost app — chat, composer, terminal, code editor, ticket field, anywhere.

Recommended

One free API key from Groq

The simplest setup. A single API key from Groq powers both speech recognition and cleanup. Groq's free tier is generous and usually covers daily dictation use without spending a cent.

  1. Sign up at console.groq.com/keys — no credit card needed.
  2. Create an API key, copy it to clipboard.
  3. In Comet: Settings → Providers → paste under Recommended setup.
  4. Click Use Groq for speech + cleanup. Done.

Comet uses Groq's whisper-large-v3 for speech and llama-3.3-70b-versatile for cleanup. No model picking required — the defaults are tuned for dictation already.

Or just use Apple Dictation

Prefer zero cloud? Settings → Providers → Use Apple Dictation. Apple's on-device speech recognition runs locally with no API keys and your audio never leaves the Mac.

The trade-off: the cleanup model is off in this mode, so filler words, run-ons, and self-corrections paste verbatim with light punctuation only. Pick this if privacy matters more than polish.

Other options: OpenAI, Anthropic, Deepgram, ElevenLabs, and AWS Bedrock are all supported under Settings → Providers → Other providers → expand Advanced configuration. Mix-and-match speech and cleanup providers independently if you have specific preferences.

The cleanup prompt is the point

The default cleanup prompt is intentionally strict. The LLM is a text post-processor, not an assistant. It must never act on the transcript content even when the transcript reads like a question or an instruction — because the transcript is dictation destined for somewhere else, not a message to the model.

Filler words go. Punctuation appears. Numbers and units normalise sensibly. Proper nouns are preserved. Lists only format when there are three or more items with clear enumeration. No markdown unless you dictate it. The prompt is editable — open Settings → Prompts to override it.

First-time setup

Comet is currently distributed unsigned (an Apple Developer ID is on the way). That means a one-time Terminal step is required before the app will launch — five minutes total, then it's set-and-forget.

  1. Download. Grab the latest .dmg from GitHub Releases.
  2. Drag to Applications. Open the .dmg, drag Comet.app into the /Applications shortcut. Eject the .dmg afterwards.
  3. Strip the Gatekeeper quarantine.macOS attaches a quarantine flag to anything downloaded from the internet. Until the app is signed with an Apple Developer ID, Gatekeeper refuses to launch it. Open Terminal (Spotlight → "Terminal") and paste this exact line, then hit Return:
    xattr -dr com.apple.quarantine "/Applications/Comet.app"
    One command, one time per install. The terminal returns no output on success.
  4. Launch from Applications.Press ⌘+Space, type "Comet", hit Return. The mic icon appears in your menu bar — there's no Dock icon because it's a menu-bar app.
  5. Grant Microphone access. Click the menu-bar mic icon → click Start Dictation. macOS will prompt for microphone access. Click Allow.
  6. Grant Accessibility access. Open Settings → GeneralPermissions → click Grant Access next to Accessibility. macOS opens System Settings → Privacy & Security → Accessibility. Toggle Comet on. Switch back to Comet. If the badge still says Missing, click Recheck on the same row — that forces a fresh permission read.
  7. Test it. Hold the default shortcut (the Fn key) and speak. Release. The cleaned text pastes into whichever app currently has focus. Change the shortcut anytime in Settings → General → Recording Shortcuts.

If something doesn't work

The app has a Troubleshooting card built into Settings → Setup that handles every common case (Accessibility not picked up, Keychain prompts, post-update Gatekeeper blocks). For Terminal-first solutions:

Reset all permissions and start fresh

Wipes Accessibility + Microphone grants for Comet. Quit the app first, run the commands, then relaunch and re-grant when prompted:

tccutil reset Accessibility team.yourorbit.OrbitDictation
tccutil reset Microphone team.yourorbit.OrbitDictation

Verify the binary signature

Should report Signature=adhoc and flags=0x2(adhoc). If you see linker-signed, your build is older than v0.1.15 and won't survive macOS permission checks — re-download the latest from Releases.

codesign -dv --verbose=4 "/Applications/Comet.app" 2>&1 | grep -E "Signature|flags"

After every Sparkle auto-update

The new build has a new binary identity, so macOS will re-prompt for Gatekeeper bypass and may not carry forward Accessibility / Microphone grants. The in-app helper dialog gives you a one-click Copy & open Terminal button after each update — run the command, then re-grant the permissions if needed. This stops happening permanently once we ship signed builds.

Who it's for

  • Anyone who types more than they want to type.
  • Drafters who think out loud — the cleanup prompt strips filler and self-corrections without losing voice.
  • Engineers dictating into chat, prompt boxes, code comments, PR descriptions — developer terms capitalise correctly, dictated punctuation lands as the actual character.
  • Anyone who's been burned by dictation models that try to "be helpful" instead of just transcribing what was said.

What's different from Whispur

Comet is an MIT-licensed fork of Whispur. Internal Swift modules and class names stay aligned with upstream so improvements can flow back and forth cleanly. The factual differences:

Cleanup pipeline

  • Strict cleanup prompt with explicit person-matching, length-cap, paragraph-break, list-trigger, and grammar-correctness rules. Whispur's default is lighter and more conversational; ours treats the LLM as a text post-processor that must never act on the transcript content even when it reads like an instruction.
  • Dynamic max_tokens cap based on input length, plus an output-length sanity check that falls back to the raw transcript when the LLM produces > 1.5× word expansion. Whispur uses Sparkle's default 2048 with no expansion guardrail.

Output format

  • Rich-text list paste: when the cleanup output contains list lines, Comet writes both plain and RTF representations to the clipboard. Mail / Notes / Notion / Slack render real bulleted lists; code editors get plain text. Whispur paste is plain-text-only.

UX & onboarding

  • Recommended-setup card features Groq with a single-key path; the full provider matrix is hidden under "Other providers → Advanced configuration". Whispur exposes all 5 STT and 4 LLM options at the top level.
  • Auto-open Settings on relaunch, in-app Live Logs viewer, Recheck buttons on permission rows, Restart button + Nuclear-Reset commands in Troubleshooting, App Translocation guard at launch, Sparkle auto-check toggle exposed in Settings.

Brand & distribution

  • Orbit identity (logo, indigo palette, mic SF Symbol menu-bar icon).
  • Bundle identifier team.yourorbit.OrbitDictation (Whispur is ai.sophiie.whispur); Application Support and Keychain service rescoped to match.
  • Distributed from get.yourorbit.team and this repo's GitHub Releases. Currently ad-hoc signed; proper Developer ID signing pending.

Internal Swift symbols stay Whispur-named (WhispurApp, HotkeyManager, etc.) so git fetch upstream merges cleanly. Only user-visible strings, the bundle identifier, the Sparkle update channel, and the default cleanup prompt are Orbit-specific.

FAQ

Does it cost anything?

No. The app is free, MIT-licensed, no account required. If you choose a cloud STT or LLM provider, that provider may charge you — that's between you and them.

Do I need an API key?

No — the default speech provider is Apple's on-device recognition, which runs locally. API keys only matter if you switch to OpenAI, Deepgram, Groq, ElevenLabs, or any of the cleanup-LLM providers.

Is my audio sent anywhere?

Only if you pick a cloud provider. With Apple's on-device STT, audio never leaves your Mac. The app makes no calls to any Orbit server. Source is on GitHub if you want to verify.

Why is it unsigned?

Same reason as Orion — Apple's Developer Programme is $99/year. Signing happens later. Until then it's a one-time Terminal command per install.

Windows / Linux?

Not yet. The app is native AppKit/SwiftUI on macOS. A port to other platforms is a separate project, not a recompile.

Source, issue tracker, and changelog all live on GitHub. Powered by Whispur (MIT).

The Orbit MCPB extension for Claude Desktop is the bigger sibling — same voice, more depth, native Braze integration. Free with an account. Get Orbit for Claude →