Use a Codex Micro or Creator Micro 2 to control Claude Desktop on a Mac.
This setup keeps the original Codex controls on Layer 1 and adds Claude Desktop controls on Layer 2. It includes the key map, a small Mac app called Codex Micro Bridge, setup instructions, checks, and an Agent Skill for adding more app layers later.
This is an unofficial community project. It is not made or supported by OpenAI, Anthropic, or Work Louder.
You need:
| Item | Why you need it |
|---|---|
| Codex Micro or Creator Micro 2 | The physical controller |
| A Mac | The Bridge currently supports macOS only |
| USB data cable | Recommended for the first device setup; a charging-only cable will not work |
| Work Louder Input | Creates Layer 2 and saves keys to the Micro |
| Claude Desktop | The target app |
| Access to the Code tab in Claude Desktop | This map controls Code sessions inside Claude Desktop |
| Apple command-line developer tools | Builds the Bridge locally; check with swift --version |
| Accessibility and Input Monitoring permission | Lets the Bridge receive Layer 2 keys and control Claude Desktop |
Optional:
- Aqua Voice for the two voice buttons.
- ChatGPT/Codex Desktop for the original Layer 1 controls. Creator Micro 2 owners can use a different Layer 1.
- Git if you clone this repository. Downloading the repository as a ZIP also works.
You do not need terminal Claude Code for this first setup. Claude Desktop's Code tab and terminal Claude Code are different. Terminal profiles can be added later.
If swift --version does not work, run:
xcode-select --install- Layer 1 stays unchanged.
- Layer 2 receives the keys listed in Claude Desktop controls.
Codex Micro Bridge.appis built locally and placed in~/Applications.- A startup entry is placed in
~/Library/LaunchAgents. - If you use Aqua Voice, Caps Lock is changed to Globe/Fn for the Creator Micro keyboard only.
The repository does not rewrite Work Louder Input's private files. Input must save each change to the device through its visible controls.
- Connect the Micro and confirm that it appears in Work Louder Input.
- Leave Layer 1 unchanged and create Layer 2 with the
+button. - Copy the keys from Claude Desktop controls.
- Follow First-time setup to configure voice input and install the Bridge.
- Check every control on the real device.
Do not continue pressing session keys if macOS opens a display or brightness panel. That means the Bridge is not receiving the keys. Follow A display or brightness panel opens first.
- When Claude Desktop is already in front: press once.
- When ChatGPT/Codex is in front: press once. The Bridge moves to Claude before Codex can react to a second device press.
- When another app is in front: press the same control twice quickly.
- Scrolling may need one click in the Claude conversation first.
- Model changes work; effort changing is not reliable in every Claude Desktop version.
┌──────────┬───────────┬───────────┬──────────┐
│ Dial │ Session 1 │ Session 2 │ Joystick │
├──────────┼───────────┼───────────┼──────────┤
│ Session 3│ Session 4 │ Session 5 │ Session 6│
├──────────┼───────────┼───────────┼──────────┤
│ New chat │ Home │ Code │ Escape │
├──────────┴───────────┼───────────┼──────────┤
│ Voice │ Voice │ Send │
└──────────────────────┴───────────┴──────────┘
Dial:
- Turn left: scroll down
- Turn right: scroll up
- Press: change effort
Joystick radial menu:
┌───────────────────────────┬────────────────────────┐
│ Upper-left │ Upper-right │
│ Previous model: NumPad 8 │ Next model: NumPad 2 │
├───────────────────────────┼────────────────────────┤
│ Lower-left │ Lower-right │
│ Previous session: NumPad 4│ Next session: NumPad 6 │
└───────────────────────────┴────────────────────────┘
| Read this | When to use it |
|---|---|
| First-time setup | Start with a new device or Mac |
| Claude Desktop controls | Enter the exact Layer 2 keys |
| Troubleshooting | A key, dial, joystick, permission, or app switch does not work |
| Compatibility | See what was tested and what remains unconfirmed |
| Agent Skill | Let an agent guide another profile or layer setup |
The Agent Skill is guided setup, not a blind import. It records the physical position, Input key, intended action, and real test result separately.
./scripts/check.shThis builds the Swift code, runs the Bridge's internal key and timing tests, checks shell-script syntax, and looks for unfinished text. It does not test the physical Micro, macOS permissions, Work Louder Input, or the real Claude and Codex apps.
- The Bridge is built locally with an ad-hoc signature. It is not Developer ID signed or notarized by Apple.
- Replacing the Bridge can make macOS ask for Accessibility and Input Monitoring permission again.
- Work Louder Input and Claude Desktop updates can change their visible controls.
- Experimental direct HID access and status lighting are off because direct HID caused duplicate typing during testing.
- See Compatibility before treating an untested system or control as supported.
./scripts/uninstall.shThe uninstall script moves the installed app and startup file to the Trash so they can be recovered.