Repository navigation
Installation and Troubleshooting
| Requirement | |
|---|---|
| Running | macOS 14 or later; voice input needs macOS 26 or later. Apple silicon and Intel (the installer is universal) |
@improve, @translate, @question
|
An AI provider: Amazon Bedrock in your AWS account, or an API key for the Claude API, Gemini or an OpenAI-compatible service; see Settings and Configuration |
@claude |
Claude Code installed on this Mac (the claude command) |
- Download
AllInOneIME-<version>.dmgfrom Releases (only from there) and open it. - Double-click "Install AllInOneIME" and click Install. The input method goes into
~/Library/Input Methodsand "AllInOneIME Settings" into~/Applications, for this user only; no administrator password needed. - The installer isn't notarized by Apple yet, so the first time macOS says it can't verify it: click Done (Cancel on macOS 14), open System Settings → Privacy & Security, click Open Anyway near the bottom, and confirm. Each new version's installer needs this once.
- To write in English: open the settings (
@settings, or Spotlight → "AllInOneIME Settings"), and under "Input" add English and remove Chinese. Then set up an AI provider and click "Test Connection".
To update, install the new version's disk image the same way, without uninstalling first; settings, the jargon list and learned words are kept. Each version's changes are in the changelog.
After installing, AllInOneIME is in your input sources:
- Ctrl+Space switches input sources; or click the input menu in the menu bar and choose it.
- 🌐 key: switches input sources only if "Press 🌐 key to" is set to "Change Input Source" in System Settings → Keyboard.
If the installer tells you to add it by hand, this Mac doesn't let programs enable input methods. Add it once:
System Settings → Keyboard → Text Input → Input Sources → Edit… → + (bottom left) → Chinese, Simplified → AllInOneIME → Add
macOS lists it under Chinese because it can also type pinyin; it types English just as well.
macOS asks for each the first time it's needed:
| Permission | When |
|---|---|
| Microphone | Holding right ⌥ to talk; see Voice Input |
| Control Terminal |
@claude opening a session in Terminal |
| Control Notes, access Reminders |
@note, @reminder
|
| Contacts, control Messages | @imessage |
| Accessibility | Answers with several lines going into a terminal as a paste |
| Paste from other apps | ⌃V / ⌘V in a command, ⏎ on an empty command |
If you said no, allow AllInOneIME in System Settings → Privacy & Security under that permission.
Needs Xcode 26 or later (voice input uses the macOS 26 SDK).
git clone https://github.com/MicroZ-LLC/AllInOneIME.git
cd AllInOneIME
make installmake install downloads librime and the rime-ice dictionaries and verifies their SHA-256, builds, signs (with an
"Apple Development" certificate if you have one, ad-hoc otherwise), moves the app into ~/Library/Input Methods,
and registers it and adds it to your input sources the same way the installer does. It moves rather than copies
because macOS launches input methods by bundle ID: a second copy with the same ID may be launched instead.
From a clone of the repository, make status runs the installed input method and prints its status:
| Line | Meaning |
|---|---|
version: |
Installed version |
bundle: |
Path of the installed app |
running: |
Running AllInOneIME processes; no means it isn't running, and macOS starts it when it's needed |
config: model: aws:
|
Config file, model, AWS profile and region; after ✗ comes the cause of the error |
rime: rime user:
|
librime version, whether the dictionaries are bundled in the app, the Rime user folder |
registered: |
Whether the input source is registered |
enabled: |
Whether it's enabled |
listed: |
Whether it's in your input source list (the list Ctrl+Space goes through) |
selected: current:
|
Whether it's the selected input source; ID of the current input source |
macOS only has it "enabled by a program" (recorded in com.apple.inputsources); it isn't in your input source list, AppleEnabledInputSources. In this state you can type with it once it's selected, but Ctrl+Space doesn't reach it, and the system soon switches back to an input source from the list (usually U.S.).
- Run the installer again ("Install AllInOneIME" from the disk image); it adds AllInOneIME back to the list.
- If that doesn't help, add it once manually in System Settings as described above.
You can also look at the list directly: defaults read com.apple.HIToolbox AppleEnabledInputSources should contain an entry "Bundle ID" = "com.aipinyin.inputmethod.AIPinyin".
System Settings → Keyboard → set "Press 🌐 key to" to "Change Input Source".
Most likely there's another AllInOneIME.app with the same bundle ID (com.aipinyin.inputmethod.AIPinyin), and macOS launched that one. If you build from source, the usual one is build/AllInOneIME.app: make, make app, make selftest and make screenshots all leave it behind (make install moves it away).
rm -rf build/AllInOneIME.app # or make clean
mdfind "kMDItemCFBundleIdentifier == 'com.aipinyin.inputmethod.AIPinyin'" # see which copies are left
make install # or run the installer againIn the end only ~/Library/Input Methods/AllInOneIME.app should be left.
On its first start Rime has to deploy the dictionaries (for pinyin); until that's done, keys go straight to the app. The installer deploys them in advance, so you normally won't see this. If the dictionaries have problems, click "Redeploy Dictionaries" in the input menu.
The error shows in the candidate panel: Space retries, 0 inserts the original, Esc goes back. Start by clicking "Test Connection" in the settings window. For the Claude API, Gemini or an OpenAI-compatible service, the message comes from that service (an invalid key, a model name it doesn't know); for Bedrock:
| Message | What to do |
|---|---|
| AWS profile '…' not found | The profile isn't in ~/.aws/credentials or ~/.aws/config, or the wrong one is selected in the settings |
| AWS profile '…' uses SSO (or assume-role, credential_process); only static access keys are supported | Switch to a profile with aws_access_key_id / aws_secret_access_key
|
| AWS profile '…' has no aws_access_key_id / aws_secret_access_key | Add the keys to this profile |
| Bedrock AccessDeniedException: … | The key lacks the bedrock:InvokeModelWithResponseStream permission, or the account can't use this model yet |
| Bedrock ValidationException: … | Common causes: the model ID doesn't match the region; the model doesn't accept temperature (turn off "Send temperature" under "Advanced") |
| The request timed out | Slow network; or raise "Advanced → Timeout" (timeoutSeconds) |
| The config file is malformed (…) |
config.json isn't valid JSON; the settings window shows the error and doesn't overwrite the file |
| Secure input is on (a password field or the lock screen): nothing was sent to the AI | Intended; see Privacy |
| Secure input is on (a password field or the lock screen): Claude Code was not opened | Intended: the text stays in the command; press the action key again after secure input ends. See Privacy |
| The … API key was saved for …, not this base URL: save the key again for it | The base URL now points to another service than the key was saved for: paste the key for that service and click Save |
Intended: during secure input keys are typed as they are. See Privacy.
log show --last 10m --info --predicate 'subsystem == "com.aipinyin.inputmethod.AIPinyin"'The log doesn't record what you type. Rime's own warnings and errors are in ~/Library/Logs/AllInOneIME.
Open "Install AllInOneIME" and click Uninstall… (or make uninstall from a clone). It disables AllInOneIME,
removes it from your input sources, and deletes the input method and "AllInOneIME Settings".
Your data isn't deleted. To remove everything:
rm -rf ~/.config/allinoneime ~/Library/Application\ Support/AllInOneIME ~/Library/Logs/AllInOneIME
defaults delete com.aipinyin.inputmethod.AIPinyin # the input method's own preferences
tccutil reset Microphone com.aipinyin.inputmethod.AIPinyin # microphone permissionAPI keys are in the login keychain, under "AllInOneIME API key" (remove them in the settings, or in Keychain Access).
The keys in ~/.aws are your own; AllInOneIME only reads them.
AIPinyin is AllInOneIME's earlier name. If you had it installed, just install: the old AIPinyin.app and its
settings launcher are removed; the bundle ID hasn't changed (still com.aipinyin.inputmethod.AIPinyin), so the
input source simply takes the new name and the microphone permission is kept. On first launch, the data moves to the
new folders, and each old path keeps a link to the new one:
| Old | New |
|---|---|
~/.config/aipinyin |
~/.config/allinoneime |
~/Library/Application Support/AIPinyin |
~/Library/Application Support/AllInOneIME |
~/Library/Logs/AIPinyin |
~/Library/Logs/AllInOneIME |