I recreated OpenAI's Codex Micro for a lot less - and mine is more customizable
Publish Time: 20 Jul, 2026
hero-image.png

My Stream Deck customized to emulate the Codex Micro

David Gewirtz/

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 . I have a SpaceMouse for 3D design. I have a Loupedeck, 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.

out-of-stock

Codex Micro out of stock

Screenshot by David Gewirtz/

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. Fortunately, Work Louder has a helpful setup page 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 gave Perplexity's agentic AI 5 complex tasks to run on my Mac - and I'll do it again

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.

Also: How I stopped a massive WordPress spam attack with 4,700 lines of code in two days - thanks to Codex and Claude

And it's less expensive, too. You can get a basic 15-button Stream Deck 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 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 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, scrolled down, and captured an image of the keyboard.

keyboard-image

Close-up of the Codex Micro

Screenshot by David Gewirtz/

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.

key-box

Selection rectangle around one key

Screenshot by David Gewirtz/

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.

copy-mic

Selection rectangle around mic icon

Screenshot by David Gewirtz/

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.

merge-layers

Merge Photoshop layers

Screenshot by David Gewirtz/

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).

profile-settings

Setting up the Stream Deck profile for Codex

Screenshot by David Gewirtz/

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.

Also: OpenAI's Codex Desktop can run your computer now - and has its own browser

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.

hotkey-config

Configuring hotkeys in the ChatGPT app

Screenshot by David Gewirtz/

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.

action-trigger

Dragging an action onto the trigger icon zone

Screenshot by David Gewirtz/

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.

plus-features

This pops up when you click +

Screenshot by David Gewirtz/

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.

plus-option

Configuring the dial to work with the + options

Screenshot by David Gewirtz/

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.

Also: I tried to save $1,200 by vibe coding for free - and quickly regretted it

Another menu you can get to from the chat interface can be roughly described as the mode menu.

mode-menu

Use a slash to choose the mode in ChatGPT

Screenshot by David Gewirtz/

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.

mode-keys

Customizing the dial to control the mode

Screenshot by David Gewirtz/

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.

prompt-history

Customizing the dial to scroll through prompt history

Screenshot by David Gewirtz/

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.

Also: Want local vibe coding? This AI stack might replace Claude Code and Codex - for free

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.

mic-settings

Customize the mic hotkey in ChatGPT

Screenshot by David Gewirtz/

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.

mic-button

Configuring a mic toggle button

Screenshot by David Gewirtz/

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.

Also: I compared how Gemini, ChatGPT, and Claude can analyze videos - this model wins

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.

bottom-row

Adding the rest of the buttons

Screenshot by David Gewirtz/

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 comes in. Think of it as an app store for the Stream Deck. After a few minutes of searching, I found Beautiful Thread Pulses 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.

live-thread-awareness

Button status indicators

Screenshot by David Gewirtz/

Once I installed it, the button options were available in the actions sidebar on the right.

blinkies

Now I have the blinkenlights

Screenshot by David Gewirtz/

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-cor...

I’d like Alerts: