I recreated OpenAI's Codex Micro for a lot less - and mine is more customizable A ZDNET writer recreated OpenAI's $230 Codex Micro keyboard using an Elgato Stream Deck+ for less money and with more customization. The original Codex Micro, a mini-keyboard for Codex users with agent keys, programmable keys, a dial, and a joystick, sold out immediately upon release. The Stream Deck+ version offers adaptable button screens that change per app, unlike the fixed keycaps of the Codex Micro. I recreated OpenAI's Codex Micro for a lot less - and mine is more customizable ZDNET's key takeaways - OpenAI's $230 Codex Micro sold out almost immediately. - I recreated its core controls on my Stream Deck+. - Unlike fixed keycaps, Stream Deck buttons adapt to any app. Look, I might as well admit it. I mean, it's not like you folks didn't suspect this already. I have a thing for add-on control surfaces for my computer. I've tried almost every add-on keypad and controller there is. I have not one, not two, but three Stream Decks, including a Stream Deck+ with its four dials https://www.amazon.com/Elgato-Production-Controller-Streaming-Customizable/dp/B0BJL8SJ59 . I have a SpaceMouse https://www.amazon.com/3Dconnexion-SpaceMouse-Wireless-Bluetooth-Edition/dp/B0D64M2YVH for 3D design. I have a Loupedeck https://www.zdnet.com/article/loupedeck-ct-vs-stream-deck-for-upping-final-cut-pro-x-productivity-both-save-time/ , for some reason, as well. And there are more in my gear bin, because, well, me. Also: I got 4 years of product development done in 4 days for $200, and I'm still stunned So it should come as no surprise that when OpenAI announced the Codex Micro, its fancy little mini-keyboard for Codex users, I wanted one. Yes, at $230, it's expensive. But think of the productivity benefits. Instead of the toil of having to press the Enter key on my keyboard, I could tap the Checkmark key on the Codex Micro. Instead of having to click Cancel on the screen, I could hit the X key on the Codex Micro. There's even a dial and a joystick. Ooh. Ah. For the record, that's not even a sarcastic "ooh" and "ah." I really do groove on these things. Alas, 'twas not to be. I am thwarted. Apparently, I'm not the only add-on control surface fiend out there in geekdom. For on day one, it was sold out. But I am a changed man. Two days ago, I didn't know I needed a special add-on keyboard for Codex work. Now I do. And, fellow geeks, what do we do when we know something can be done but are thwarted from obtaining the objects of our productivity affection? But of course. We make them. So stand back and sit down. I turned my Stream Deck+ into my very own Codex Micro. And then I rested. And it was good. What does it do? Now, as excited as I was about the Codex Micro taunting me with its unavailability, I also didn't exactly know what it did. Look, it's shiny and has buttons, OK? Also: I let ChatGPT Work and Claude Cowork loose on my files - only one made me nervous The device came together through a partnership between OpenAI and the boutique custom keyboard company Work Louder https://worklouder.cc/codex-micro . Fortunately, Work Louder has a helpful setup page https://worklouder.cc/openai-micro-setup for the device, including a video where a dude describes the functions of all the keys. There are three main features of the device. First are the Agent Keys. These keys allow you to switch between agents and sessions in Codex. They light up based on the status of the agents, which increased my gadget lust all the more. Also: I used GPT-5.2-Codex to find a mystery bug and hosting nightmare - it was beyond fast Second are the programmable keys. You can modify the function of this group of keys, but out of the box they enable you to accept or decline agent activity, branch sessions, and turn on and off voice dictation. The Codex Micro comes with a package of spare keycaps, so you can pick the design you like and install it on your keys. Frankly, I think the Stream Deck's programmable keycap mini-screens are a big improvement on this. Finally, a dial allows you to choose the file-processing mode, and a joystick lets you hop between some additional features sort of like a D-pad on a game controller . It's cool, but is it worth $230? Only you can decide. Fortunately for my wallet, it's unavailable. So I have to make do with my existing collection of control surface add-ons. Using the Stream Deck While the Codex Micro is quite cool, I actually think the Stream Deck solution is better overall. While it is possible to program the Codex Micro keys to work with other applications, the keypad doesn't change unless you actually pull off the keycaps . The Stream Deck is almost infinitely customizable. And it's less expensive, too. You can get a basic 15-button Stream Deck https://www.amazon.com/Elgato-Stream-Deck-MK-2-Controller/dp/B09738CV2G for $149. The Stream Deck+ I'm using for this only has eight buttons. But it has a touch strip and four knobs, which also work as buttons. It's $179. And if you want to go completely bonkers and spend $349, you can get a Stream Deck + XL https://www.amazon.com/Elgato-Stream-Deck-Customizable-Multifunction/dp/B0G7Y65YT9 with 36 programmable buttons and six dial wheels. The value of the Stream Deck is that each button can have its own graphics and that there's a powerful customization app that comes with the device. For the rest of this article, I'm going to show you how to effectively clone the Codex Micro keypad. Snagging the icons Before we get started, I'll show you how I snagged the Codex Micro-style icons. You can use my approach or pay $11.04 for a matching custom icon pack https://marketplace.elgato.com/product/beautiful-thread-icons-b6130509-5a68-4a67-b8ab-7e97577671da on the Stream Deck marketplace, which is an app store for Stream Deck graphics and plugins. Since this project is for my own use, I just copied the original keycaps. First, I pointed my browser to the product page https://worklouder.cc/codex-micro , scrolled down, and captured an image of the keyboard. I brought that into Photoshop although you can use any image editor . Then I drew a selection box around the first key and copied it. I then went ahead and created a new file with just that keycap image and saved it to my computer. For the wide push-to-talk icon, I grabbed the microphone image. Then I pasted it on top of one of the other buttons, merging the two layers into one. You don't have to go through this effort, because the Stream Deck software comes with a microphone icon, but I wanted everything to match the Codex style. OK, now that I had my basic collection of image assets, it was time to set up the Stream Deck. Also: I loved ChatGPT Desktop until OpenAI gutted it to make room for Codex and Work Creating a profile In the Stream Deck app, create a new profile. Then, go into Profile settings, rename it, and choose the ChatGPT application. The Codex app is now the ChatGPT app don't get me started https://www.zdnet.com/article/openai-gutted-chatgpt-desktop-app-for-codex-work/ . When you set the application for the profile, that tells the Stream Deck to switch to that profile when you switch to the application. I also have a Final Cut profile. When I launch Final Cut, all my special Final Cut keys are there for me to use. Same, now, with Codex. Hooking up the dials Stream Deck allows you to choose from a fairly wide variety of actions in response to each button click or dial spin. The dials are also buttons, so they perform actions on click as well as on spin. The key to making most of the actions work for applications like ChatGPT Codex is hotkeys. When a button is clicked, it emulates a hotkey. So the key to everything is making sure we know the hotkeys. Fortunately, there's a very configurable section in ChatGPT for hotkeys. Just go into ChatGPT settings and pick Keyboard Shortcuts. Most but not all of the hotkeys you'll ever want can be defined here. With that knowledge, let's emulate the dial on the Codex Micro. What it does is let you spin up and down the plugin list inside the app. We're going to start by adding an Action Trigger to the first dial. This adds three action slots to the dial of the Stream Deck. I added hotkey options to the first and third, corresponding to the up and down arrow keys. But for the middle option, I used a Hotkey Switch, which toggles between two actions. In this case, what we want Codex to do is pop open the choices under the plus icon, and then let the dial select the option we want. Personally, I don't think this is the most powerful dial option you could choose, but it's how the Codex Micro is configured, so it's what we're choosing. As you can see from the image above, the first hotkey is programmed to Shift-2. Shift-2 happens to type the @ sign, which pops up the menu. The second hotkey is programmed to the Enter key. The result of this is that when you click the dial, the plus menu opens up and you can spin the dial to choose an option. Clicking the dial again fires off the Enter key, which executes the chosen feature. Another menu you can get to from the chat interface can be roughly described as the mode menu. We'll again use the Action Trigger, Hotkey, and Hotkey Switch actions. This time, clicking the dial fires off the / character, the dial emulates arrow keys, and the second click hits Enter, selecting the mode. The final dial does two things that the joystick of the Codex Micro device originally did. It toggles the sidebar open and closed, and it travels through the prompt history, placing older prompts into the chat box. To do this, we're emulating arrow keys, which place historical prompts into the chat box. And we're emulating the CMD-B key combination, which shows and hides the sidebar. In this case, we're not using a Hotkey Switch action for the dial click. We're just using a plain hotkey because the sidebar toggles all on its own when its hotkey is pressed. Adding individual control buttons The buttons are set up just like the dials, but with fewer options. Plus, on all Stream Decks, you get to customize what the button looks like. This is a huge feature win over the Codex Micro, with its bag of extra swappable keycaps. Let's go left to right, starting with the Microphone button. Keep in mind that you're not limited to just one or two rows of buttons. Any button can trigger a transition to another screen of buttons. But for our purposes, we'll just populate these two rows. To add the Microphone button, you'll first have to define a hotkey for the microphone in Codex. To do that, go to Settings in ChatGPT, then Voice, and set the hotkey. Then, in the Stream Deck app, drag Hotkey to the first button, type Control-M which is my assigned hotkey , and choose the microphone icon we created earlier. Note that I leave the title blank. Otherwise, the Stream Deck would display it over the icon. That's helpful in some instances, but here it would ruin the vibe. Next, I added the checkbox button to confirm actions, which sends a press of the Return key. After that, I added the X button, which cancels a Codex action. I assigned the Escape key to it. Finally, I added the branch button, which I assigned to Option-Shift-Command-F. I often use complex keystrokes for programmed automations because I don't have to type them, and they extend my hotkey options considerably. Light-up status buttons The one feature of the Codex Micro keypad that I wasn't sure I'd be able to emulate was the set of light-up status buttons that correspond to agent activity. These show different colors depending on what the agent is doing, and even pulse to provide additional status information. This is where the Elgato Marketplace https://marketplace.elgato.com/ comes in. Think of it as an app store for the Stream Deck. After a few minutes of searching, I found Beautiful Thread Pulses https://marketplace.elgato.com/product/beautiful-thread-pulses-73685e35-a3d7-489e-ac9a-f1ca25358e40 by Lideal Innovation. This is a paid app. At $27, it's a bit spendy. But since I couldn't find any other way to emulate the color pulses of the Codex Micro, I ponied up my $27 and downloaded the file. Once I installed it, the button options were available in the actions sidebar on the right. I dragged one into each slot, and I was done setting up the Stream Deck. Now, when an agent thread changes state, the button changes color. Impressively, when the thread completes its run, Lideal Innovation manages to make the button pulse, which is quite cool. Stream Deck vs. Codex Micro The Codex Micro is smaller and it works with either USB or Bluetooth. The Stream Deck is USB only. You could almost -- almost -- just use the tiny Codex Micro to do vibe coding without a keyboard. If the Codex Micro had included a mic, that might have been possible. But as it stands, it's just a keyboard with a light-up indicator. I guess if you're at OpenAI and you're a hard-core Codex coder, the dedicated keyboard makes sense. But I switch between tools, and I can configure the Stream Deck to manage Claude Code just as easily as it manages Codex. Plus, I use the Stream Deck+ constantly for video editing. My other Stream Decks are used to control my studio. My point is not that I'm against the Codex Micro keypad. I'm not. Had it been available, I might have spent the money. I also probably would have had some buyer's remorse. It's cool. It's hip. But it is very limited. The thing that the Stream Deck did was make the custom buttons truly customizable, not just in the signals they send, but in how they look. In that way, the Codex Micro seems very 2015. I can't see myself or anyone else, for that matter yanking off keycaps when switching from Codex to, say, Photoshop. So you either keep the Codex-focused keys and just remember what they do in Photoshop or swap the keycaps. And what would the light-up buttons indicate in Photoshop? See what I mean? It's limited. I'm fairly impressed I managed to get my Stream Deck+ to fully emulate the Codex Micro. I will probably modify it, adding another page of buttons to take on more tasks. That's what I like about the Stream Deck: I can always tweak it. And so can you. Would light-up agent status buttons make a dedicated Codex control surface worth buying for you? Let us know in the comments below. You can follow my day-to-day project updates on social media. Be sure to subscribe to my weekly update newsletter, and follow me on Twitter/X at @DavidGewirtz, on Facebook at Facebook.com/DavidGewirtz, on Instagram at Instagram.com/DavidGewirtz, on Bluesky at @DavidGewirtz.com, and on YouTube at YouTube.com/DavidGewirtzTV. Artificial Intelligence Editorial standards /editorial-guidelines/