Skip to the content
PCBKitNew board
4 layers95 × 95 mmOpenmicro, the printed circuit board in 3D

Open-source recreation of OpenAI's Codex Micro macropad — PCB written in CoHDL, an AI-native hardware description language. Rust firmware (embassy) + companion app (makepad). MIT licensed. https://openmicrokbd.org

Size
95 × 95 mm
Copper layers
4
Thickness
1.6 mm
Parts
88
Nets
65
Pads
337
Tracks, vias
1,500, 216
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
21 Jul 2026
Updated
31 Oct 2026

Overview

Openmicro is an open-source printed circuit board by conol-ai, from the conol-ai/openmicrokbd repository on GitHub, published under the MIT licence. It is a 4-layer board of 95 × 95 mm with 88 parts on 65 nets, routed with 1,500 tracks and 216 vias.

It is built around the STM32F072CBT6, USBLC6-4 and SK6812. Its parts include 34 diodes, 25 capacitors, 14 switches, 3 resistors and 3 ICs. It belongs with the keyboards and input boards and the STM32 boards of this library.

Main components

3

README

README.md
openmicrokbd

OpenMicroKbd

An open-source hardware recreation of OpenAI's Codex Micro macropad — 13 low-profile keys, a rotary encoder, an analog joystick, a capacitive touch pad, and per-key + underglow RGB on a wired USB-C board built around an STM32F072.

The finished OpenMicroKbd held in one hand: black PCB in a white printed case, icon keycaps, a knob, a joystick and a yellow accent key

The finished board — read the launch post for the full story.

The PCB is written, not drawn. The entire schematic is source code in CoHDL, an open-source, AI-native hardware description language. The compiler type-checks the design — units, pin-connection obligations, power integrity — and emits the netlist, BOM, footprints and layout constraints you can inspect under hw/v1/out/.

🌐 https://openmicrokbd.org · 🖨️ Printable case on MakerWorld (中国站) · License: MIT

Designed in CoHDL

This board was designed in CoHDL, an open-source hardware description language that makes schematic (PCB) design AI-native: a board is a program — typed, checked, and compiled. In CoHDL, the design in hw/v1/src/ is the schematic; the compiler is the oracle that grades it.

CoHDL is open source. Visit cohdl.org to explore the language, or browse and contribute to the compiler and libraries on GitHub. This repository also checks in the complete compiler outputs under hw/*/out/, so the generated hardware design remains directly inspectable.

Questions about CoHDL, the hardware source, or building a board of your own? Join the CoHDL and OpenMicroKbd community on Discord.

What's inside

PathContents
hw/v1/src/The PCB as CoHDL source: main.cohdl (top-level design), openmicro_parts.cohdl (datasheet-verified part bindings), footprints.cohdl, pads.cohdl
hw/v1/out/Checked-in compiler output: KiCad netlist (openmicro.net), BOM (openmicro-bom.csv), SMT placement (openmicro-smt.csv), .kicad_mod footprints, layout constraints (openmicro-layout.json)
hw/v1/pcb/The routed board — openmicro.kicad_pcb + KiCad project (design rules)
hw/v1/fab/Manufacturing package: Gerber/drill zip, assembly BOM, SMT placement CSV — see hw/v1/fab/README.md
hw/v1/mechanical/Board outline (DXF) plus the printable enclosure parts — case, rotary knob, joystick cap, shipping tray and a solder-assembly jig, as editable Fusion 360 .f3d and ready-to-slice .3mf. Also published as a print profile on MakerWorld (中国站)
hw/v1/docs/Manufacturer datasheets for every active, connector, and electromechanical part in the BOM, with sourcing/verification notes — see hw/v1/docs/README.md
hw/v2/Hardware v2, in development — wireless successor on the SiFli SF32LB52 (BLE, battery-powered): CoHDL source + compiler outputs, not yet routed. See hw/v2/README.md
layout/The bootloader/firmware/host contract: flash and RAM map, image header, handoff words, HID update protocol, CRC-32 — no_std, shared by fw, boot, app and scripts/
boot/Resident 24 KiB bootloader at 0x08000000: validates the application by length and CRC-32 before every start and offers a driverless USB HID update mode, so an interrupted update never bricks the pad. See boot/README.md
fw/Firmware — Rust + embassy on STM32F072CB: key matrix, twin WS2812 chains, USB HID + vendor interface, driverless updates through the resident bootloader (ROM DFU kept for migration and recovery), and an opt-in Codex Micro compat mode (the pad boots with the Codex Micro's USB identity and speaks ChatGPT Desktop's device protocol so the desktop app drives it natively — confirmed with Codex desktop 26.825 on macOS). See fw/README.md
app/Companion desktop app — Rust + GPUI, with a crisp 8-bit visual system: device dashboard, live connection state, and button-free firmware updates over USB. See app/README.md

Hardware (v1)

  • MCU: STM32F072CBT6 (Cortex-M0), 8 MHz HSE crystal, 2×3 SWD debug socket
  • Keys: 13× Kailh Choc V2 low-profile switches on a 19.05 mm grid (square 4×4-cell frame, matching the Codex Micro layout), 1N4148W per-key matrix diodes
  • Inputs: EC11 rotary encoder, RKJXV analog joystick, capacitive touch pad
  • Lighting: 13× per-key SK6812MINI-E (reverse-mount, one WS2812 chain) + 8× perimeter underglow SK6812MINI-E (second chain)
  • USB: Type-C wired, USBLC6 ESD protection, AP2112 3.3 V LDO
  • PCB laid out from the CoHDL-generated constraints; manufacturing handoff via IPC-2581

Building

sh
# Production firmware binary + debug ELF
scripts/build-firmware.sh dist

# Native GPUI macOS app bundle + DMG (ad-hoc signed for local testing)
scripts/package-macos.sh dist dist/openmicro-fw-<firmware-version>.bin

# Or run the companion app from source
cd app && cargo run --release --locked

On Windows, install Rust and Visual Studio's Desktop development with C++ workload, then build a portable package from PowerShell:

powershell
rustup target add x86_64-pc-windows-msvc
./scripts/package-windows.ps1 `
  -OutputDir dist/windows `
  -FirmwareBin dist/openmicro-fw-<firmware-version>.bin `
  -Target x86_64-pc-windows-msvc

Use aarch64-pc-windows-msvc for a native Windows on Arm package; that build also requires the Visual Studio LLVM/Clang component.

The open-source CoHDL compiler and its documentation are available at cohdl.org. Generated netlists, BOMs, footprints, and layout constraints remain checked in under hw/*/out/ for inspection and use without rerunning the toolchain.

Releases build Intel and Apple Silicon DMGs, Windows x64 and Arm64 portable ZIPs, and firmware through GitHub Actions. See RELEASING.md for versioning, Apple signing/notarization secrets, the required device smoke test, and the tag flow. Linux packaging, USB permissions, and the STM32F072 ROM-DFU host-controller workaround are tracked in docs/linux-firmware-updates.md.

Production files

The final routed v1 board lives in hw/v1/pcb/ (openmicro.kicad_pcb, opens in KiCad 9+). The manufacturing package — Gerber/drill zip, assembly BOM, and SMT pick-and-place CSV, ready to upload to a fab such as JLCPCB — is in hw/v1/fab/, with DRC status and ordering notes in hw/v1/fab/README.md.

Printing the case

The enclosure is published as a ready-to-print model on MakerWorld, alongside the editable Fusion sources in hw/v1/mechanical/:

The print covers the case, the rotary knob and the joystick cap, plus the solder-assembly jig and the shipping package as a bonus from the same project. Recommended settings: 0.4 mm nozzle, 0.2 mm layer height, 3 walls, 15–20% infill, PLA or PETG (PETG for a daily driver), no supports required.

Beyond the print you will need an assembled PCB, Choc V2-compatible keycaps, M2×4 female-female brass standoffs, M2×5 screws, and a USB-C cable.

License

MIT © 2026 Tony Huang. Build your own — attribution appreciated.


OpenMicroKbd is an independent open-source project and is not affiliated with, endorsed by, or sponsored by OpenAI. "Codex Micro" refers to OpenAI's product; all trademarks belong to their respective owners.

Parts

88
QtyValueFootprintReferences
21100nFpassive-CHIP_0402C1, C2, C3, C4, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21 +5
21SK6812led-FP_LED_SK6812MINI_ELED1, LED2, LED3, LED17, LED18, LED19, LED20, LED21, LED22, LED23, LED24, LED25, LED26, LED27, LED28, LED29 +5
13Diode_1N4148diode-FP_D_SOD_123D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13
13KeySwitchopenmicro-FP_SW_Choc_V2SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12, SW13, SW14, SW15
4MountingHoleopenmicro-FP_MountingHole_M2H1, H2, H3, H4
215pFpassive-CHIP_0402C28, C29
25.1kohmpassive-CHIP_0402R2, R3
110kohmpassive-CHIP_0402R1
11uFpassive-CHIP_0402C27
14.7uFpassive-CHIP_0603C26
1AP2112K_3V3ldo-SOT5P95X290X160NU2
1CapTouchPadopenmicro-FP_TouchPadTP1
1Crystal8MHzosc-FP_Crystal_3225Y1
1RotaryEC11openmicro-FP_Encoder_EC11SW1
1STM32F072CBT6st_stm32-f0-stm32f072cb-QFP50P900X900X160_48NU3
1Socket_2x3connectors-headers-smd_254-FP_Socket_2x3_254_SMDJ2
1ThumbPointeropenmicro-FP_Joystick_RKJXVJ1
1USBLC6esd-FP_SOT_23_6U1
1USB_C_Receptacle_2_0usb-connectors-type_c-FP_USB_C_Receptacle_HRO_TYPE_C_31_M_12J3

Questions

How big is the Openmicro PCB?

It measures 95 × 95 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Openmicro use?

88 parts, built around the STM32F072CBT6, USBLC6-4 and SK6812. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Openmicro KiCad files?

From the conol-ai/openmicrokbd repository on GitHub, at the commit this page was made from: the board is hw/v1/pcb/openmicro.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Openmicro design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers43.2 × 17.6 mmOtterPill, the printed circuit board in 3D

    OtterPill

    Jana-Marie/OtterPill

    stm32f072 dev board with arduino nano alike pinout

    37 parts162
  • 2 layers56.1 × 35.8 mmLensmount v1, the printed circuit board in 3D

    Lensmount v1

    Jana-Marie/EF-S-Adapter

    Hard- and Firmware to control different EF and EF-S lenses

    35 parts139MIT
  • 4 layers197 × 71 mmArduino ads129x, the printed circuit board in 3D

    Arduino ads129x

    OpenElectronicsLab/OpenHardwareExG

    The OpenHardwareExG is a platform for ECG, EEG, EMG, ENG, EOG, and evoked potential applications. http://openelectronicslab.github.io/OpenHardwareExG/

    279 parts102
  • 4 layers58 × 18 mmUpm, the printed circuit board in 3D

    Upm

    jonasblixt/upm

    USB Power monitor

    72 parts46
  • 2 layers128 × 77 mmScale, the printed circuit board in 3D

    Scale

    Jana-Marie/lab-balance

    https://twitter.com/_Jana_Marie/status/1270040286710968321

    59 parts34
  • 4 layers220 × 120 mmElectricui arena, the printed circuit board in 3D

    Electricui arena

    electricui/electricui-arena

    Hardware for continuous integration testing of serial interfaces and microcontrollers

    268 parts27MIT
  • 2 layers91.3 × 53.3 mmTimep, the printed circuit board in 3D

    Timep

    Matir/timep

    Test Interface for Multiple Embedded Protocols

    89 parts25Apache-2.0
  • 4 layers110 × 46 mmJiffy, the printed circuit board in 3D

    Jiffy

    jonasblixt/jiffy

    IMX6UL Development board

    199 parts24