Moro User Guide
Learn how to set up Moro and use its shortcuts, core features, privacy controls, and compatibility options.
Getting started
Moro is a macOS menu-bar app. After you grant the required system permissions, its shortcuts can be used for dictation, translation, rewriting, and questions in most apps with standard text fields. Some apps expose limited system interfaces, so certain features may be unavailable or use a compatibility mode.
Requirements
- macOS 15 (Sequoia) or later — the built-in local speech recognition needs it.
- Apple Silicon (M-series) — local speech and local LLM inference are arm64-optimized; Intel Macs can't run local inference.
- Speech recognition and text generation are configured separately. You can stay fully offline with local models, or use your own key for cloud models.
First-time setup
Onboarding recommends a path from the app language. Chinese, Japanese and Korean start with the quick cloud setup; English starts with on-device speech. You can switch paths at any time. This choice sets up the first speech recognizer only and does not lock the model used by every feature.
| Path | What you need | What becomes ready |
|---|---|---|
| Quick cloud setup | A network connection and one Alibaba Cloud Model Studio key. Moro verifies both Fun-ASR realtime speech and Qwen3.6-Flash before it reports success. | Speech transcription, first-run refinement and Quick Chat all have a working model. Requests are sent to Model Studio using your key. |
| On-device speech | No account. Download the recommended local ASR with pause and resume support. Moro will not start a hidden download on your first recording. | Basic speech transcription works offline. Smart refinement, translation, autocomplete and Quick Chat still need a local text model or a connected cloud text model. |
- Complete the two-service cloud check, or wait for the local ASR download to finish.
- Speak the sample line into your microphone. The first try counts only after real audio produces a transcript.
- Grant the four core permissions: Microphone, Accessibility, Input Monitoring and Full Disk Access.
- After entering Moro, test voice write-back with ⌥⌘ in a standard macOS text field, then open Quick Chat with ⌥C.
Setup does not start the trial clock. It begins only when you choose Start 7-day trial on the last step. Browse Moro saves your progress and keeps the trial paused.
Permissions on first run
Onboarding walks you through four core permissions (Microphone, Accessibility, Input Monitoring, Full Disk Access) — each tied to a specific capability and explained as you go; all four make the experience complete. Anything else is requested only when you use the matching feature:
- Microphone: required for voice input.
- Accessibility: to power the global shortcuts, read the context at your cursor and write results back into the field. This is Moro's core channel — it uses the system Accessibility API, not screenshots.
- Input Monitoring: keeps the global shortcuts reliable in edge cases with certain keyboards/IMEs (like Space×3 under some Chinese IMEs).
- Full Disk Access: powers the local "find file" search — names, file contents and recently-opened files are all matched against your Mac's own Spotlight index, nothing leaves the machine; without it, files in Documents/Desktop/Downloads can't be found.
- Screen Recording (optional, off by default): used only if you opt into the experimental reply-draft feature inside closed apps like WeChat. Everyday input never touches it.
- Automation (Apple Events) (optional): asked for only when you bring Finder-selected files into Quick Chat, Smart Voice or Smart Text — Moro requests permission to control Finder at that moment, not on first launch.
Granted it but nothing happens? If an update changes Moro's code signature, macOS may stop honoring the earlier Accessibility grant. If shortcuts stop working after an update, toggle Moro off and on in System Settings → Privacy & Security → Accessibility, or restart Moro once.
All shortcuts
The table below lists the default shortcuts. All shortcuts except ⇧⇧ for autocomplete can be changed in Settings.
| Action | Shortcut | What it does |
|---|---|---|
| Voice Input | ⌥⌘ | Record → transcribe → polish → write at cursor |
| Smart Voice | ⌥Space | One key; AI decides dictate / act-on-selection / ask / note |
| Smart Text | ⌘⌘ | Double-tap ⌘. The typed twin of Smart Voice, same intent chain |
| Translate | ⌥F | Translate the whole paragraph in place |
| Polish | ⌥S | Smooth the wording without changing meaning |
| Rewrite | ⌥R | Rewrite clearer and more natural, in place |
| Enhance Prompt | ⌥E | Turn spoken instructions into a structured prompt |
| Quick Chat | ⌥C | Talk to AI, answered in an overlay |
| Private Chat | ⌥V | Burns on close, no history kept |
| Quick Note | ⌥D | Say it, filed as a to-do card |
| Ask about screenshot | ⌥A | Region-select a screenshot, then ask about it by voice |
| Undo write-back | ⌥Z | Undo Moro's most recent write-back |
| Copy last transcript | ⌥X | Copy the last transcript to the clipboard |
| Summon autocomplete (closed apps) | ⇧⇧ | Double-tap Shift to summon a completion in apps like WeChat where the caret can't be read |
The voice key supports hold-to-talk out of the box: hold the modifier to speak and release to stop, while a quick tap still toggles start / stop. You can turn it off in Settings.
Voice input
Press ⌥⌘ and speak. Moro transcribes, polishes, and writes the finished text at your cursor — fillers removed, punctuation and numbers fixed, usually ready to send as-is.
- Adjustable polish strength: from near-verbatim to fully restructured, per your taste.
- Language recognition: supports English, Chinese, and mixed input. Accuracy varies by speech model, accent, and recording conditions.
- Local or cloud transcription: choose a local or cloud speech service in Settings. With a cloud service, audio is sent to that provider for processing.
- Recordings are kept locally only for re-transcription; retention is configurable or can be turned off.
- Optional sound cues: go to Voice → Recording and choose Off or one of ten themes. Each start cue has a matching completion answer.
Smart actions
Press ⌥Space to speak, or double-tap ⌘ to type. Depending on the current text field and selection, Moro can perform these actions:
- Write / dictate: turn speech into text, written into the current field.
- Act on selection: translate, rewrite, polish, summarize, reply, explain — on the text you selected.
- Ask: send the question to Quick Chat, answered in an overlay.
- Note: jot one down, recall an old one, or check a to-do off.
- System actions (Beta): open apps, find files, and open settings or websites.
Use a clear action phrase, such as “translate into English,” “open Calendar,” or “find last week's contract.” If the result is not what you expected, press ⌥Z to undo the latest write-back.
Say this, get that
| Intent | Say something like | Result |
|---|---|---|
| On your text | ||
| Dictate | Just say what you want written: "um I've roughly gone over this week's progress…" | fillers removed, punctuation fixed, written back |
| Translate ⌥F | "translate this into English", "into Japanese" | translated in place (never auto-sent) |
| Rewrite ⌥R | "reword this", "make it shorter", "rewrite it" | reworded in place, keeping meaning & tone |
| Polish ⌥S | "polish this", "make it more formal", "fix the grammar" | fixes spelling / grammar / punctuation, in place |
| Summarize | "summarize this", "tl;dr in three points" | a concise summary |
| Reply | "reply to this", "write a quick reply" | drafts a reply |
| Explain | "explain this", "what does this mean" | explains the selection |
| Enhance ⌥E | type the rough ask (e.g. "write launch copy, emphasize privacy and local models"), then press ⌥E | a structured, ready-to-use prompt (not voice-triggered by default—enable "Agent prompt enhance" in Voice settings; also a manual mode in ⌘⌘ / the voice capsule) |
| Ask & notes | ||
| Ask ⌥C | "ask Moro what this error means", "what time is it" | answered in a floating overlay |
| Note · jot ⌥D | "remind me to review with the client Thursday", "note down…" | filed as a to-do / idea card |
| Note · find ⌥D | "that idea I saved earlier" | surfaces the matching card |
| Note · done ⌥D | "the weekly report is in", "done" | marks that to-do complete ✓ |
| System actions · Beta | ||
| Open app | "open WeChat", "open VS Code" | launches & activates; a fuzzy name is resolved against installed apps — if unsure it opens nothing, and it never opens an app you don't have |
| Find file | "help me find last week's contract PDF", "the doc about quarterly goals", "that spreadsheet I just had open" | no need to remember the filename: Moro searches names, file contents and recently-opened files together — say "resume" in any language and Resume.pdf still shows up; rows matched by content or recency are labeled "Content match / Recently opened". Results appear in a panel; click a row to reveal it in Finder (never auto-opened) |
| Media control | "next track", "pause" | sends a macOS media-key command. Support depends on the active player's macOS media-control integration, and some third-party music apps may not respond |
| Open a settings pane | "open Bluetooth settings" | deep-links straight to that pane |
| Open a URL | "open apple.com" | opens in your browser (http/https only) |
| Moro's own settings | ||
| Change a setting | "set polish to strong", "default translation to Japanese", "go to privacy settings" | applies the preference, or jumps to that settings page |
A verb at the start of the sentence triggers most reliably ("translate into English" beats "this text, I'd like to translate it"); polite prefixes (please / could you) are stripped automatically.
Common tasks, step by step
Reply to a message by voice ⌥⌘
- Press ⌥⌘ in the chat's input field
- Say your reply, tap again to stop
- The cleaned-up text lands back in the field
- You press send — Moro never sends for you
Translate a draft in place ⌥F
- Type a draft in the field, or select a passage
- Press ⌥F, or tap Space three times in the field
- It becomes the translation in place (zh ⇄ en by default; pin a target language in Settings — never auto-sent)
Polish a passage in place ⌥S
- Select the passage, or type a draft in the field
- Press ⌥S
- Replaced in place under a strict rule: spelling, grammar and punctuation only, no rewording
- Not happy? ⌥Z reverts it right there
Open an app ⌥Space
- Press ⌥Space
- Say "open Calendar"
- Calendar launches; a fuzzy name is resolved against your installed apps — when unsure it opens nothing, and it never opens an app you don't have
Find a file ⌥Space
- Press ⌥Space
- Say "help me find the rental contract I signed last month"
- A results panel appears
- Click a row to reveal it in Finder — Moro doesn't open Finder on its own
Jot a to-do ⌥D
- Press ⌥D
- Say "remind me to review the checklist with the client Thursday afternoon"
- An editable to-do card pops up — confirm to save; later say "the weekly report is in" to check it off
Ask about a file ⌥C
- Select files in Finder, or a passage of text
- Press ⌥C
- Ask your question aloud
- The answer floats beside you; the app and files are untouched
Typing autocomplete Beta · off by default
When speaking is awkward — a meeting, late at night, or you haven't found the words yet — just type. Pause, and Moro predicts your next line in light gray: a small card floats above the input, stitching your text together with the prediction (right at the end of a line it can also appear inline after the cursor); press Tab to accept. Voice is for "say it once you know it"; autocomplete is for "draft a sendable line while you're still finding the words." They complement each other.
Turning it on & using it
- Off by default. Enable it under Autocomplete in Settings (it needs Accessibility and runs an always-on key watcher, so it's opt-in).
- Trigger: it predicts after a typing pause of about 0.35s; the cadence (Instant / Standard / Steady / Relaxed) is adjustable.
- Tab accepts all · ⌥Tab word-by-word · Esc dismisses. Keep typing and it refreshes in place; arrow keys, a click or switching apps hides it.
- Mid-sentence works too: it reads text on both sides and fills only the middle, leaving what follows untouched.
- In closed apps like WeChat where the caret position isn't available, double-tap Shift to summon it — this closed-app fallback is experimental and off by default; first enable it under Autocomplete › Closed apps like WeChat (experimental), or grant Screen Recording.
Availability
Autocomplete uses Accessibility to read text near the current field and does not read the clipboard. It does not run in password fields or restricted apps. Some apps do not expose the caret position or text context; autocomplete may be unavailable there, although you can try ⇧⇧ to summon it manually.
Privacy. Autocomplete is off by default. When enabled, it follows the autocomplete model in per-feature routing; if that route uses a cloud model, relevant text is sent to that provider. You can separately enable local-only autocomplete; without a local text model it then shows no suggestions and does not go online. It never fires in password fields or sensitive apps. Reply-message reading and the closed-app screen fallback are always forced local.
Translate, rewrite, polish, enhance
Select some text (Translate doesn't even need a selection), press the matching shortcut, and the result replaces in place or floats beside it. ⌥Z undoes the latest write-back (within about 2 minutes); where an app can't be reverted in place, your original is copied to the clipboard instead.
Translate
Whole-paragraph translation in place, with terminology alignment, simplified/traditional options and a stacked original/translation preview; target language is set separately. You can also trigger it by tapping Space three times in a field (immersive-translation style, no selection needed).
Polish
Keeps your meaning and your exact words — fixes only objective errors (spelling, grammar, punctuation, duplication), not a reflow or rhythm rewrite. Output is checked for length and language drift; a result that strays badly is downgraded to copy-only instead of overwriting, and ⌥Z undoes any change.
Rewrite
The same line reworded — clearer and more natural, in place — keeping your meaning and tone.
Enhance Prompt
Turns loose spoken instructions into a structured prompt, ready to feed an AI tool.
Quick Chat & screenshot ask
⌥C to ask in a flash — attach your selection, files multi-selected in Finder, or an image; use the answer right away. Esc collapses it to a floating pill that stays where the panel was — drag it to the left or right screen edge to dock it — so it never interrupts your work.
Quick Chat needs a text model. If onboarding installed only on-device speech, dictation is ready but chat is not. Download a local text model or connect a cloud model on the Models page. The first usable chat model becomes the default automatically.
- Multi-model: pick a different model per chat; built-in code highlighting and Markdown rendering.
- Web search: connect Bocha, Zhipu, Tavily, Serper, Jina, or key-free DuckDuckGo; default is Bocha in China, Tavily elsewhere.
- Screenshot ask ⌥A: region-select part of the screen and ask about it by voice.
- Private Chat ⌥V: burns on close, no history.
Notes & to-dos
Catch a thought: press ⌥D and just say it. Moro files it into a card — idea, note, meeting, to-do or plan, sorted for you. Do it all by voice: create, complete, reschedule, search.
Models & routing
Moro doesn't host models or resell tokens. Cloud is bring-your-own-key, with presets for OpenAI, Anthropic, Gemini, Qwen, DeepSeek, Kimi, GLM, MiniMax, MiMo, StepFun, Mistral, SiliconFlow, and more, plus OpenAI / Anthropic-compatible endpoints and direct OpenAI Codex subscription sign-in. It also connects to local Ollama / LM Studio. The local inference engine is built in—no Ollama required; model sizes vary, and downloaded models can run fully offline.
Route per feature: polish, rewrite, translate, chat, voice-polish and autocomplete can each point to a specific cloud or local model. Send everyday short text to a cheap fast model, save a strong model for heavy work, keep private content local — mix freely.
ASR and LLM do different jobs
| Capability | Needs | Without it |
|---|---|---|
| Speech to text | A working local or cloud ASR | Voice transcription cannot start |
| Polish, translate, rewrite and Quick Chat | A working local or cloud text LLM | Basic transcription still works; model-backed features direct you to the Models page |
| Screenshot ask | A vision-capable model | Moro asks you to switch before sending the image to a text-only model |
| Fully offline | Local ASR, local text model and Local-only enabled | Cloud routes are blocked explicitly, with no silent online fallback |
Choose by region and language
ASR turns speech into text. The LLM handles polishing, translation, and chat. You can choose them separately.
| Scenario | ASR | LLM |
|---|---|---|
| Mainland China, mostly Chinese | Use Fun-ASR Realtime online; offline, choose Qwen3-ASR 1.7B with ≥12 GB RAM, otherwise 0.6B | Use Qwen3.6-Flash online, or local Qwen3 4B offline |
| English or European languages | Start with local Parakeet V3; for CJK or mixed Chinese-English use Qwen3-ASR 1.7B / 0.6B based on memory | Choose OpenAI, Gemini, Anthropic, or a custom endpoint with low latency in your region |
| Fully offline | Use Parakeet V3 for English/European languages; use Qwen3-ASR for CJK or mixed input (1.7B with ≥12 GB RAM) | Local Qwen3 4B with Local-only enabled |
Privacy & security
- Local-only in one tap: ASR, LLM, and web search stay offline. Saved cloud settings remain available but are not used until Local-only is turned off.
- Cloud models: when you use a cloud model or speech service, relevant content is sent to the provider you configured and is subject to that provider's privacy and retention policies. Review those terms before use.
- Password fields always skipped: secure fields are detected and never read; password managers and other sensitive apps are forced local or skipped entirely.
- Local history is encrypted: sensitive text (transcripts, chats, learned samples) is stored with field-level AES-GCM on your Mac, key in the Keychain, deletable anytime. Optional voice recordings kept for re-transcribe are stored unencrypted—turn recording retention off, or pick a short auto-cleanup window, if you'd rather not keep them.
- Screen content: normal text access uses Accessibility. The screen-based compatibility mode for closed apps is off by default and must be enabled manually. When you use ⌥A, the selected image is processed by the active chat model.
Undo
Undo write-back ⌥Z: what was just written can be reverted, in the same app and shortly after — the last 5 actions are held in memory (never persisted). If the field or app changed and it can't revert in place, then for edits to a selection (translate / rewrite / polish) Moro copies the original to your clipboard and tells you; for plain voice dictation, if it can't safely delete what it inserted, it tells you it couldn't undo rather than copying. You can always edit by hand, too.
Pricing & license
- One-time purchase, not a subscription. License scope and upgrade terms will be confirmed at launch.
- Pricing will be announced later. Apply for private beta access before launch.
- 7-day free trial.
- One license per machine, transferable after you deactivate a seat. After an online check it works offline for a while (about two weeks including grace); transient network or server hiccups never lock a paying user out.
- Cloud costs are separate and yours to control: bring your own key and pay per use, or just run the free local models.
FAQ
Which apps does it work in?
Moro works in most chat, email, browser, document, and code-editor fields that use standard macOS text interfaces. Some Electron apps, web editors, and custom text fields do not expose complete caret or text information, so write-back, selection actions, or autocomplete may be limited. Password fields are not read or processed.
Does autocomplete send my text to the cloud?
Autocomplete is off by default. When enabled it follows the autocomplete model in per-feature routing; if that route is cloud-based, relevant text is sent to that provider. You can separately enable local-only autocomplete; without a local text model it shows no suggestions rather than falling back to cloud. Reply-message reading and the closed-app screen fallback are always forced local.
Why does dictation work while Quick Chat says there is no model?
Dictation uses ASR, while Quick Chat uses a text LLM. They are configured separately. The local onboarding path guarantees only that local ASR is ready. Download a local text model or connect a cloud model on the Models page to enable Quick Chat, polish, translation and rewriting.
What works offline?
Download a local ASR and local text model, then enable Local-only. Dictation, polishing, translation, autocomplete, notes, and Quick Chat work offline; cloud models and web search are paused.
Can I use it on two Macs? After a reinstall?
One license binds to one machine; deactivate in-app to move it to another. A reinstall is fine — just reactivate. After an online check it works offline for a while (about two weeks including grace), and transient network or server failures won't lock a paying user out.
Does it run on Intel Macs or Windows?
For now, Apple Silicon + macOS 15 or later only. Local speech and local LLMs are arm64-optimized, so Intel Macs can't run local inference. The Windows version is in development.
When can I join the private beta?
The first private beta is now underway. Apply with your email, and download access will be sent by email in batches.
A question we didn't answer?
Apply for the private beta