by stephenleo
🎮 Codex Micro functionality using any Gaming Controller on any Coding Harness!
# Add to your Claude Code skills
git clone https://github.com/stephenleo/OpenMicroLast scanned: 7/18/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-07-18T06:04:18.339Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}OpenMicro is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by stephenleo. 🎮 Codex Micro functionality using any Gaming Controller on any Coding Harness!. It has 119 GitHub stars.
Yes. OpenMicro passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/stephenleo/OpenMicro" and add it to your Claude Code skills directory (see the Installation section above).
OpenMicro is primarily written in TypeScript. It is open-source under stephenleo on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh OpenMicro against similar tools.
No comments yet. Be the first to share your thoughts!
Bring Codex Micro to any gaming controller and coding harness
You need macOS, Node.js 22 or newer, Claude Code or Codex CLI, and a connected controller. OpenMicro is macOS-first; other platforms are not yet tested.
npm i -g openmicro
openmicro claude # or just: openmicro
openmicro codex
openmicro codex-app # drive the Codex macOS desktop app
openmicro codex-app drives the Codex desktop app instead of a terminal CLI: new chat and prompt prefill use codex:// deep links (no permission needed), while submit (Enter), reject (Esc), dictation (Ctrl+Shift+D), d-pad arrows, and Ctrl+U send keystrokes and need Accessibility permission for your terminal. A stick-flick prompt prefills the composer; press submit to send it. The app launches automatically and the terminal shows live status (controller, actions, agent state).
The thinking-depth dial (right-stick flicks) needs one-time setup: the app ships "Increase reasoning effort" and "Decrease reasoning effort" shortcuts unassigned, and assignments are account-synced so OpenMicro cannot set them for you. In the Codex app open Settings → Keyboard shortcuts, search "effort", and assign Increase to ⌃⌥= (Control+Option+=, Ctrl+Alt on Windows) and Decrease to ⌃⌥- — right-stick flicks then step the composer's reasoning effort. These chords avoid the app's Ctrl/Cmd +/- zoom shortcuts. Note the app's own Decrease shortcut stops one step short of the lowest effort level (also when pressed physically) — use the model picker for that. Optionally also assign "Open model picker" to ⌃⇧M — right-stick click then opens the picker so you can watch the effort change. Assigned different chords? Remap thinking_depth in your OpenMicro config to matching keys bindings.
OpenMicro installs its lifecycle hooks automatically. If Codex reports that its hooks changed, open /hooks in Codex and trust the OpenMicro hooks.
Controller support depends on the exact device and connection. Check the controller compatibility guide before you start, or run openmicro doctor to test your controller.
| DualSense | GameSir G7 Pro |
|---|---|
![]() |
![]() |
| Control | Action |
|---|---|
| south (✕ / A) | Submit or confirm |
| east (○ / B) | Interrupt or dismiss |
| north (△ / Y) | Push-to-talk |
| west (□ / X) | Start a new chat |
| d-pad | Navigate TUI menus; repeats while held |
| left stick flick up / down / left / right | Review PR / debug / refactor / write tests |
| right stick flick right / left | Increase / decrease thinking depth |
| R1 | Cycle modes (Shift+Tab) |
| R2 | Clear the input line (Ctrl+U) |
| right stick click (R3) | Open the model picker (Codex app, with shortcut setup) |
| touchpad click | Focus the next session by default, where supported |
| L2 | Cycle herdr spaces; touchpad then cycles agents in the space |
Stick flicks fire after returning to center. Rotation gestures (rstick_cw/rstick_ccw, one step per quarter-turn) remain available for remapping. Hold L1 with south, east, west, north, d-pad up, or d-pad down to select one of six layers. The first layer ships with these defaults; the other five start empty. Other controls are unbound by default and remappable.
Voice and thinking-depth support varies by harness; see OpenMicro feature parity.
Animated demos (rendered, not filmed) of the six core interactions:
Status lightbar — executing, waiting, done, error |
Command keys — ✕ ○ △ □ |
Workflow flick — stick up = review PR |
Thinking dial — stick flicks step /effort |
Layers — hold L1 to switch |
Multi-session — touchpad switches focus |
✅ supported · ⚠️ setup required or best-effort · — no verified equivalent
| Capability | Claude Code | Codex CLI |
|---|---|---|
| Launch and forward CLI arguments | ✅ openmicro claude |
✅ openmicro codex |
| Submit / confirm | ✅ Enter | ✅ Enter |
| Interrupt / dismiss | ✅ Escape | ✅ Escape |
| Start a new chat | ✅ /clear |
✅ /new |
| D-pad TUI navigation | ✅ Arrow-key passthrough | ✅ Arrow-key passthrough |
| Stick-triggered workflow prompts | ✅ Supported | ✅ Supported |
| Push-to-talk | ✅ Enable with /voice |
— No equivalent |
| Thinking-depth dial | ✅ /effort, low → max |
— No deterministic binding |
| Six remappable control layers | ✅ Supported | ✅ Supported |
| Multi-session focus switching | ✅ Supported | ✅ Supported |
| Executing status | ✅ Prompt and tool hooks | ✅ Prompt and tool hooks |
| Waiting-for-input status | ✅ Questions and notifications | ✅ Permission requests |
| Stop status | ✅ Stop hook | ✅ Stop hook |
| Error status | ⚠️ Notification-text matching | — No error hook signal |
| Hook installation | ✅ Automatic | ⚠️ Trust changes in /hooks |
Layers, workflows, navigation, and session switching are handled by OpenMicro itself. Harness-specific gaps are left unmapped instead of sending guessed keystrokes. A Stop event means the agent stopped; it does not guarantee success.
OpenMicro creates ~/.openmicro/config.json on first run. Edit bindings, layer colors, and workflow prompt text there. Invalid configuration stops startup without overwriting the file.
{
"layers": [
{
"name": "Layer 1",
"color": { "r": 255, "g": 255, "b": 255 },
"bindings": {
"south": { "type": "accept" },
"lstick_up": { "type": "workflow", "presetId": "review-pr" },
"rstick_right": { "type": "thinking_depth", "delta": 1 }
}
},
{ "name": "Layer 2", "color": { "r": 160, "g": 32, "b": 240 }, "bindings": {} },
{ "name": "Layer 3", "color": { "r": 0, "g": 255, "b": 255 }, "bindings": {} },
{ "name": "Layer 4", "color": { "r": 255, "g": 140, "b": 0 }, "bindings": {} },
{ "name": "Layer 5", "color": { "r": 255, "g": 20, "b": 147 }, "bindings": {} },
{ "name": "Layer 6", "color": { "r": 255, "g": 255, "b": 0 }, "bindings": {} }
],
"workflows": {
"review-pr": "Review this PR for correctness, security, and style issues."
}
}
Binding keys can be buttons such as south and dpad_up, or gestures such as lstick_up and rstick_cw. Actions i