A 13-key macropad for agentic work, designed from scratch: RP2040, USB-C, 12×1U + 1×2U hot-swap keys, a clickable EC11 encoder, an analog tilt joystick, a capacitive-touch key, and 24 RGB LEDs (per-key plus edge underglow) that an open Raw HID protocol drives to show what your agents are doing — thinking, running, waiting, done, one key each.
Pick your options, turn the pad around in 3D, and get back an order sheet where every line links to
the exact file you upload to a fab or drop into a slicer. That is the way in. Prefer paper?
release/HOW-TO-ORDER.md is the same thing, static.
The shipping v5 board in the v2 case, straight from the CAD.
release/ The bundle — everything you order, print or flash.
HOW-TO-ORDER.md The configurator's static form.
RELEASE.md What shipped and why, section by section.
MANIFEST.md Every file in the bundle with its md5 and byte count.
hardware/ Board fab package, case, plate, bases, keycaps, toppers, gasket.
firmware/ Flashable UF2s, BRING-UP.md, POLARITY-NOTE.md.
configurator/ The published site and its consumption assets; current outputs are copied from development.
firmware/ vial-qmk tree, simulations, conformance tests, BUILD.md.
docs/ The Raw HID protocol contract, and the design reviews.
Before you send anything to a fab, run python3 manifest_selfverify.py — it should print
9/9 checks PASS. Every listed file is present with the right hash, and nothing unlisted is
hiding in the bundle.
The v1 encoder knobs and stick caps are retired. The current release carries three Ø17.5 encoder
knob styles and three joystick toppers: a compact nub, restored TPU puck, and a conventional Ø12
topper paired with a TPU restrictor. Details are in release/RELEASE.md §(f).
agentpad13.uf2.The isolated codex_oai keymap is an experimental alternative for direct
Codex Desktop control. It is not Vial firmware and does not replace the normal,
recommended release/firmware/prebuilt/agentpad13.uf2. Codex Desktop talks to
this target directly—no helper, daemon, bridge, or Vial protocol—using the
locked Codex Micro Lab OAI LED identity (303A:8360, usage FF00:61, Report
ID 6, 64-byte reports).
The current unflashed candidate is
release/firmware/prebuilt/agentpad13_codex_oai.uf2, 93,696 bytes, SHA-256
fcb50b2419419be43b7cf90b00a96b16063fcaf182bc24b9642d57e2e8adf54d.
Start with the keymap contract,
source hand-off, and
Direct OAI build procedure.
Run the complete host suite from the repository root:
python3 -m unittest discover -s firmware/tests/codex_oai -p 'test_*.py'
The checked-in emulator capture and current manifest bind that exact UF2 to the offline USB/protocol/LED checks. Physical validation is still entirely PENDING; no install or flash occurred. Any future hardware operation requires the literal authorization and observation record in the physical runbook.
Flash agentpad13.uf2 — hold BOOTSEL and drag the file on. Then hold
SW14, the button in the back, for about a second and follow the 13 key LEDs: the board measures its
own joystick and stores the result. About 15 seconds, no host software, no reflash, once ever —
full procedure in release/firmware/BRING-UP.md. If an axis reads
backwards that is polarity, not calibration:
release/firmware/POLARITY-NOTE.md.
Firmware source is in firmware/loudest_micro/; the exact Vial/QMK
build recipe and validation commands are in firmware/BUILD.md. The plain-QMK,
byte-reproducible build is agentpad13_reference.uf2.
release/hardware/ — CERN-OHL-W-2.0 (PCB and case CAD).firmware/ and release/firmware/ — GPL-2.0-or-later (QMK/vial-qmk
derivative), except firmware/tests/conformance/protocol_oracle.py, which is
MIT. Corresponding source for the prebuilt UF2s = this tree built against
vial-qmk per firmware/BUILD.md.42 commits
10 commits
Python
60.5%
JavaScript
25.1%
C
13.4%
A 13-key macropad for agentic work, designed from scratch: RP2040, USB-C, 12×1U + 1×2U hot-swap keys, a clickable EC11 encoder, an analog tilt joystick, a capacitive-touch key, and 24 RGB LEDs (per-key plus edge underglow) that an open Raw HID protocol drives to show what your agents are doing — thinking, running, waiting, done, one key each.
Pick your options, turn the pad around in 3D, and get back an order sheet where every line links to
the exact file you upload to a fab or drop into a slicer. That is the way in. Prefer paper?
release/HOW-TO-ORDER.md is the same thing, static.
The shipping v5 board in the v2 case, straight from the CAD.
release/ The bundle — everything you order, print or flash.
HOW-TO-ORDER.md The configurator's static form.
RELEASE.md What shipped and why, section by section.
MANIFEST.md Every file in the bundle with its md5 and byte count.
hardware/ Board fab package, case, plate, bases, keycaps, toppers, gasket.
firmware/ Flashable UF2s, BRING-UP.md, POLARITY-NOTE.md.
configurator/ The published site and its consumption assets; current outputs are copied from development.
firmware/ vial-qmk tree, simulations, conformance tests, BUILD.md.
docs/ The Raw HID protocol contract, and the design reviews.
Before you send anything to a fab, run python3 manifest_selfverify.py — it should print
9/9 checks PASS. Every listed file is present with the right hash, and nothing unlisted is
hiding in the bundle.
The v1 encoder knobs and stick caps are retired. The current release carries three Ø17.5 encoder
knob styles and three joystick toppers: a compact nub, restored TPU puck, and a conventional Ø12
topper paired with a TPU restrictor. Details are in release/RELEASE.md §(f).
agentpad13.uf2.The isolated codex_oai keymap is an experimental alternative for direct
Codex Desktop control. It is not Vial firmware and does not replace the normal,
recommended release/firmware/prebuilt/agentpad13.uf2. Codex Desktop talks to
this target directly—no helper, daemon, bridge, or Vial protocol—using the
locked Codex Micro Lab OAI LED identity (303A:8360, usage FF00:61, Report
ID 6, 64-byte reports).
The current unflashed candidate is
release/firmware/prebuilt/agentpad13_codex_oai.uf2, 93,696 bytes, SHA-256
fcb50b2419419be43b7cf90b00a96b16063fcaf182bc24b9642d57e2e8adf54d.
Start with the keymap contract,
source hand-off, and
Direct OAI build procedure.
Run the complete host suite from the repository root:
python3 -m unittest discover -s firmware/tests/codex_oai -p 'test_*.py'
The checked-in emulator capture and current manifest bind that exact UF2 to the offline USB/protocol/LED checks. Physical validation is still entirely PENDING; no install or flash occurred. Any future hardware operation requires the literal authorization and observation record in the physical runbook.
Flash agentpad13.uf2 — hold BOOTSEL and drag the file on. Then hold
SW14, the button in the back, for about a second and follow the 13 key LEDs: the board measures its
own joystick and stores the result. About 15 seconds, no host software, no reflash, once ever —
full procedure in release/firmware/BRING-UP.md. If an axis reads
backwards that is polarity, not calibration:
release/firmware/POLARITY-NOTE.md.
Firmware source is in firmware/loudest_micro/; the exact Vial/QMK
build recipe and validation commands are in firmware/BUILD.md. The plain-QMK,
byte-reproducible build is agentpad13_reference.uf2.
release/hardware/ — CERN-OHL-W-2.0 (PCB and case CAD).firmware/ and release/firmware/ — GPL-2.0-or-later (QMK/vial-qmk
derivative), except firmware/tests/conformance/protocol_oracle.py, which is
MIT. Corresponding source for the prebuilt UF2s = this tree built against
vial-qmk per firmware/BUILD.md.42 commits
10 commits
Python
60.5%
JavaScript
25.1%
C
13.4%