NXTKB's Codex Micro compatibility turns Ferris Sweep and Sweep Pro into compact control surfaces for ChatGPT. Without leaving the keyboard, you can switch between six chats, approve or decline an action, split the current chat into a new chat, dictate through your computer microphone, and send a message. Sweep Pro models with e-ink also show chat status.
What it lets you do
These are not ordinary operating-system shortcuts. The keyboard and ChatGPT keep a two-way connection: the keyboard sends your actions, and ChatGPT sends the status of six chats back. It works over USB or Bluetooth, does not require Work Louder Input, and does not replace normal typing, mouse, trackpad, or ZMK Studio features. The screenless Ferris Sweep receives status without rendering it.
Before you begin
- Install and sign in to the ChatGPT desktop app.
- Make sure the keyboard has firmware with Codex Micro support.
- Connect with a USB data cable, or pair the keyboard again over Bluetooth.
- On macOS, grant ChatGPT Input Monitoring access when prompted.
- For voice input, also grant ChatGPT access to the computer microphone.
After ChatGPT detects a compatible keyboard for the first time, open Settings → Codex Micro to choose which chats the six Agent Keys follow and whether a single tap should bring ChatGPT forward. See the official OpenAI Codex Micro guide for the original device behavior.
Enter the Codex layer
- Hold both thumb Tab layer keys to open the FUN layer.
- Press I to toggle the CODEX layer.
- Release the layer keys. The Codex layer stays active until you press P to exit.
I is the Codex entry key. O on the FUN layer remains system mute, so the two actions do not conflict. While CODEX is active, letter keys temporarily become Agent and command controls; press P before returning to normal typing.
Codex layer keymap
| Key | Action | How to use it |
|---|---|---|
| Q W E R T Y | Agents 1–6 | Switch to or focus the matching ChatGPT chat |
| A | Approve | Approve the current action waiting for confirmation |
| S | Split chat | Continue the current chat in a new chat, preserving its context |
| D | Decline | Decline the current action waiting for confirmation |
| F | Fast | Toggle Fast mode for the current chat |
| H | Push-to-talk | Hold to talk; double-press to latch recording |
| J | Send | Send the current input |
| P | Exit | Leave the Codex layer and restore normal keys |
How the six Agent Keys work
Q through Y represent Agent 1 through Agent 6. By default, they follow your six most recently updated ChatGPT chats, whether or not those chats are pinned. In ChatGPT's Codex Micro settings, you can switch to recent, pinned, priority, or custom assignment modes.
- Single tap: switch to that chat without taking focus from your current app.
- Double tap within 350ms: switch chats and bring the ChatGPT window forward.
- Focus on one tap: enable this option in ChatGPT's Codex Micro settings.
Six is the number of physical shortcut slots, not a limit on the chats ChatGPT can keep. All other chats remain available in ChatGPT even when they are not mapped to an Agent Key.
The voice key uses your computer microphone
H controls ChatGPT voice input on the computer. The keyboard does not contain a microphone, so audio quality and permissions depend on the computer's built-in microphone, a headset, or another selected input device.
- Hold H while speaking, then release it to finish.
- Press twice within 350ms to latch recording without holding the key.
- Press H again to stop a latched recording.
If the key responds but no audio arrives, check the operating system microphone privacy setting and the input device selected by ChatGPT.
Agent status and the e-ink display
A Sweep Pro with the display may show a line such as A2 1I 2W 3N 4? 5! 6-. A2 means Agent 2 is selected; the following entries represent Agents 1–6. E-ink refreshes only when state changes, so a still, flicker-free status line is normal.
The screenless Ferris Sweep uses the same Agent and action keys but does not show status on the keyboard. Check the current chat in the ChatGPT desktop app instead; the missing display does not limit Codex controls.
| Display symbol | ChatGPT status | Meaning |
|---|---|---|
- | Unassigned | This Agent Key does not currently follow a chat |
I | Idle | The chat is idle |
W | Thinking | ChatGPT is working |
N | Complete | The task completed with an unread update |
? | Requires input | ChatGPT needs your approval or response |
! | Error | Something went wrong in the chat |
U | Unknown | ChatGPT returned a newer state the firmware does not recognize yet |
The original Codex Micro represents these states with white, blue, green, amber, and red lighting. Sweep Pro translates them into characters that remain clear on a low-power monochrome display.
USB, Bluetooth, and multiple computers
Codex controls automatically follow the output currently selected on the keyboard. There is no separate ChatGPT device switch: after you use the normal USB/Bluetooth output key or a Bluetooth profile key, Agent controls and any available display state follow the same computer. See the Ferris Sweep or Sweep Pro keymap guide for the device-switching keys.
- USB: ideal for a fixed desk, with low latency and no battery dependency.
- Bluetooth: Codex controls share the currently selected profile with normal keyboard input.
- Multiple computers: each connected computer keeps its own six-Agent state; returning to it restores the last known state.
- Other computers stay connected: selecting an output changes where keys go without deliberately disconnecting other USB or Bluetooth hosts.
If USB and Bluetooth connect to the same computer at once, the operating system may see two Codex interfaces, but actions still follow the selected keyboard output. This can normally coexist. If ChatGPT repeatedly reconnects, temporarily disconnecting the unused path is a useful way to isolate which connection is failing.
Why Bluetooth may need to be paired again
Computers cache the capabilities advertised by a Bluetooth keyboard. After you first install firmware with Codex Bluetooth support, an old bond may still describe the device as an ordinary keyboard. Simply turning Bluetooth off and on is then not enough.
- Forget or remove the old keyboard entry in the computer's Bluetooth settings.
- Select the matching Bluetooth profile on the keyboard and clear that profile's bond.
- Put the profile into pairing mode and connect it again from the computer.
- Open ChatGPT and wait for it to detect and connect to the compatible interface.
You should normally need this only when enabling the feature for the first time or after a firmware update changes the Bluetooth capabilities.
Connection failures and unresponsive keys
Check these in order
- Use the ChatGPT desktop app, not ChatGPT in a browser tab.
- Make sure the keyboard currently targets this computer.
- Enter CODEX again: hold both Tab layer keys, then press I.
- On macOS, grant Input Monitoring access; voice also needs microphone access.
- For USB, try a cable known to carry data and reconnect it.
- For Bluetooth, completely remove the old bond and pair again as described above.
- Temporarily quit Karabiner, keyboard remappers, or security tools that may intercept HID devices.
- Quit and reopen ChatGPT. Restart the computer if the connection still fails.
If ChatGPT says it found your Codex Micro but could not connect, the compatible interface was discovered but two-way communication did not start. Focus on permissions, stale Bluetooth pairing, HID interception, and the selected keyboard output instead of repeatedly pressing Agent Keys.
If only the microphone key fails, check microphone access first. If only e-ink status stays unchanged, confirm that ChatGPT has assigned chats to the six Agent slots and that Sweep Pro currently targets the computer running ChatGPT.
The simple idea behind the connection
The Ferris Sweep family talks to the ChatGPT desktop app through the operating system's HID device channel. The keyboard sends press and release events for Agent and command keys; ChatGPT sends connection information and six chat states back. USB and Bluetooth carry the same kind of two-way messages, which is why both transports can provide the same core experience.
The current compatibility layer handles only the controls and state needed for these features. It does not display or store chat text, prompts, or code on the keyboard. It also gives the keyboard no extra ChatGPT account access; every action is still performed by the signed-in ChatGPT desktop app.
Current support
| Feature | Status |
|---|---|
| Six Agent chat keys | Supported |
| Approve, Split chat, Decline, Fast, voice, and Send | Supported |
| Single tap, double tap, hold, and key release | Supported and interpreted by ChatGPT |
| USB control | Supported |
| Bluetooth control and multiple profiles | Supported |
| E-ink Agent status | Supported on Sweep Pro; not shown on screenless Ferris Sweep |
| Codex Micro analog stick and dial customization | Not applicable to the current Ferris Sweep family keymaps |
| Full RGB editor and device firmware updates | Not supported |
Ferris Sweep and Sweep Pro both cover the complete control workflow: connect the current computer, enter the Codex layer, choose one of six chats, and trigger common actions. Sweep Pro adds e-ink status for whether ChatGPT is working, waiting for input, or finished.