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

RP2040 macropad for supervising AI coding agents: 13 hot-swap keys with per-key RGB status, encoder, joystick, 4-layer PCB, CircuitPython firmware, printable enclosure

Size
95 × 95 mm
Copper layers
4
Thickness
1.6 mm
Parts
101
Nets
74
Pads
374
Tracks, vias
936, 166
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Jul 2026
Updated
2 Sep 2026

Overview

AgentDeck is an open-source printed circuit board by Brillar0101, from the Brillar0101/agentdeck repository on GitHub, published under the MIT licence. It is a 4-layer board of 95 × 95 mm with 101 parts on 74 nets, routed with 936 tracks and 166 vias.

It is built around the RP2040, 74AHCT1G125SE and W25Q128JVSIQ, with the AMS1117-3.3, USBLC6-2SC6 and SK6812MINI-E among its other parts. Its parts include 29 capacitors, 16 diodes, 14 switches, 12 resistors and 5 ICs. It belongs with the keyboards and input boards and the RP2040 boards of this library.

Main components

10

README

README.md
AgentDeck v1

AgentDeck

AgentDeck is an open-source desk macropad for supervising AI coding agents.

AgentDeck is optimized for people running several coding agents at once who want glanceable status and one-hand control. It is a desk device, not a portable one: USB-C only, no battery, no radio.

Six agent keys light up with each agent's live state (idle, thinking, working, blocked, done). Press one to focus that session. The command keys accept or reject work, the dial scrubs and confirms, and the joystick navigates. A host bridge maps Claude Code hooks to the key colours, so the board answers "which of my sessions needs me?" without alt-tabbing.

This is a Codex Micro-inspired project. The concept follows OpenAI and Work Louder's Codex Micro, and the control layout deliberately echoes it. It is an independent build, not affiliated with, endorsed by, or produced with OpenAI, Work Louder, or Anthropic. The board, firmware and enclosure are original work; no Codex Micro files were used. Some material in this repository (vendor footprints, datasheets, reference photographs, third-party cap and knob models) is not ours to license. See LICENSING.md.

Renders

frontside
reartop

Changelog

Hardware revisions are tracked in the changelog. Because the board is text-based KiCad, every fabricated revision maps to a tagged commit, and a physical board can be traced back to the exact design it was made from.

Versions

VersionWhat it isWhere
V1 (this release)95 x 95 mm 4-layer RP2040 board, 13 keys, JLCPCB PCBAv1/hardware/

What comes next (v1.0 bring-up, the v1.1 depth release, and what is deliberately parked) is in the roadmap.

Status

PartState
Schematic + PCBComplete. 4 layers, fully routed, 0 DRC errors, 0 ERC errors
FirmwareWritten (CircuitPython, plus an Arduino/C++ port), untested on hardware
Host bridgeWritten. Maps Claude Code hooks to agent-key colours
EnclosureModelled and fit-checked in Blender, STLs exported, not yet printed
Fab packageGerbers, BOM and CPL generated for JLCPCB

Nothing has been manufactured yet, so none of it is hardware-verified.

Packages

The repository is organized by discipline. Each directory is self-contained and has its own README where the workflow needs explaining.

DirectoryContents
v1/hardware/KiCad 10 project: AgentDeck.kicad_pcb, AgentDeck.kicad_sch, footprint / symbol / 3D libraries
v1/enclosure/Blender assembly (AgentDeck-v2-assembled.blend), the parametric case generator (src/generate_case.py), printable STLs, keycap icon art
v1/firmware/CircuitPython firmware (boot.py, code.py) and the Arduino port
v1/host/agentdeck_bridge.py, the Claude Code hook bridge
v1/fab/Gerbers, drill files, BOM and CPL for JLCPCB
docs/design notes, datasheets, reference material, renders in docs/img/
LICENSES/full licence texts

Hardware

The board is a 95 x 95 mm 4-layer PCB, drawn in KiCad 10.

  • 13 Kailh Choc hot-swap keys on an 18.7 x 19.3 mm grid, each with a reverse-mount SK6812MINI-E RGB LED shining up through the cap
  • EC11 rotary encoder (top left) and Alps SKQUCAA010 5-way joystick (top right)
  • RP2040 with W25Q128 16 MB flash, USB-C, BOOT button, SWD pads
  • Everything is wired directly to GPIO. There is no key matrix, so there is no ghosting to debounce around
  • All SMD parts sit on the back of the board and hang down into the case tray; only the switches, encoder and joystick face up

Keycaps carry simple engraved-style icons (dice for the six agent keys, thumbs up and down for accept and reject) rendered from Lucide glyphs. The encoder and joystick caps are white.

Enclosure

Two printed parts plus four printed cover caps. The PCB drops into the bottom tray component-side down, the lid closes over it, and four screws clamp the stack into brass inserts.

FeatureSpec
ScrewsM2.5 x 8 mm button head (ISO 7380), head 4.7 x 1.3 mm
Lid5.2 mm counterbore, 2.5 mm deep, over a 2.9 mm shaft hole
InsertsM2.5 brass heat-set, 4.0 mm OD x 5.0 mm, melted into a 3.6 mm boss bore
Cover capsprinted 5.0 x 1.2 mm plugs that hide the screw heads
Fit0.4 mm pocket clearance around the board (a deliberately loose fit)
USBside port through the tray wall, sized for the plug plus a slim overmould
Walls2.6 mm, with a 0.6 mm bevel on exposed edges

Print v1/enclosure/case-bottom.stl, v1/enclosure/case-top-lid.stl, and four of v1/enclosure/case-cover-plug.stl. The case is generated, not sculpted: edit the parameters in v1/enclosure/src/generate_case.py and re-run it to get new STLs.

Firmware

Copy v1/firmware/boot.py and code.py onto a CIRCUITPY drive running CircuitPython 9.x, with adafruit_hid and neopixel in lib/. An Arduino port with identical behaviour lives in v1/firmware/arduino/ if you prefer a compiled build.

The command keys send Ctrl+Alt chords, the dial sets reasoning effort, and the joystick navigates. v1/firmware/README.md has the full control table, colour legend, pin map, and the three constants to confirm on first hardware.

Development

  • Board edits: open v1/hardware/AgentDeck.kicad_pcb in KiCad 10. After copper changes, refill zones before running DRC, then regenerate v1/fab/ with kicad-cli.
  • Case edits: run v1/enclosure/src/generate_case.py in Blender to rebuild the STLs from parameters.
  • Renders: the assembly lives in v1/enclosure/AgentDeck-v2-assembled.blend; reference renders are committed under docs/img/.
  • Derived files (board 3D exports, .dsn/.ses routing intermediates, autorouter logs) are gitignored and regenerate from the board.

Licence

Multi-licensed, as is normal for open hardware. See LICENSING.md.

WhatLicence
Software (v1/firmware/, v1/host/)MIT
Hardware (board, enclosure, fab files)CERN-OHL-S v2
DocumentationCC-BY-4.0

Vendor footprints, datasheets and reference images keep their original terms. Keycap icons are from Lucide (ISC).

Parts

101
QtyValueFootprintReferences
23100nFC_0603_1608MetricC3, C10, C11, C12, C15, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28, C29 +7
13ChocSwitchAgentDeck:KeyOutlineKEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY10, KEY11, KEY12, KEY14
12SK6812MINI-ELED-SMD_4P-L3.2-W2.8-LS5.9_SK6812MINI-ED1, D2, D3, D4, D5, D6, D10, D11, D12, D13, D14, D15
51kR_0603_1608MetricR5, R7, R10, R11, R12
4M2.5AgentDeck:MountingHole_M2.5MH1, MH2, MH3, MH4
3Fiducial_1mm_Mask2mmFiducial_1mm_Mask2mmFID1, FID2, FID3
3redLED-SMD_L1.6-W0.8-R-RDD7, D8, D9
210uFC_0603_1608MetricC16, C17
215pFC_0603_1608MetricC1, C2
21uFC_0603_1608MetricC13, C14
227RR_0603_1608MetricR3, R4
25.1kR_0603_1608MetricR1, R2
110kR_0603_1608MetricR8
110k DNPR_0603_1608MetricR6
1330RR_0603_1608MetricR9
174AHCT1G125SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BRU4
1ABM8-272-T3CRYSTAL-SMD_4P-L3.2-W2.5-BLY1
1AMS1117-3.3SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BRU3
1BOOTSELSW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5SW13
1CONN-SMD_HOTPLUGPAKAGE__C9900010116CONN-SMD_HOTPLUGPAKAGE__C9900010116SW14
1EC11SW-TH_EC11E1820402ENC1
1K1CONN-SMD_HOTPLUGPAKAGE__C9900010116SW1
1K10CONN-SMD_HOTPLUGPAKAGE__C9900010116SW10
1K11CONN-SMD_HOTPLUGPAKAGE__C9900010116SW11
1K12CONN-SMD_HOTPLUGPAKAGE__C9900010116SW12
1K2CONN-SMD_HOTPLUGPAKAGE__C9900010116SW2
1K3CONN-SMD_HOTPLUGPAKAGE__C9900010116SW3
1K4CONN-SMD_HOTPLUGPAKAGE__C9900010116SW4
1K5CONN-SMD_HOTPLUGPAKAGE__C9900010116SW5
1K6CONN-SMD_HOTPLUGPAKAGE__C9900010116SW6
1K7CONN-SMD_HOTPLUGPAKAGE__C9900010116SW7
1K8CONN-SMD_HOTPLUGPAKAGE__C9900010116SW8
1K9CONN-SMD_HOTPLUGPAKAGE__C9900010116SW9
1LED-SMD_4P-L3.2-W2.8-LS5.9_SK6812MINI-ELED-SMD_4P-L3.2-W2.8-LS5.9_SK6812MINI-ED16
1RP2040LQFN-56_L7.0-W7.0-P0.4-EPU1
1SKQUCAA010SKQUCAA010JS1
1SWDProgPads_1x4J2
1USB-CUSB-C_SMD-TYPE-C-31-M-12_1J1
1USBLC6-2SC6SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BLU6
1W25Q128JVSIQSOIC-8_L5.3-W5.3-P1.27-LS8.0-BLU2

Questions

How big is the AgentDeck PCB?

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

What parts does the AgentDeck use?

101 parts, built around the RP2040, 74AHCT1G125SE, W25Q128JVSIQ and AMS1117-3.3. 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 AgentDeck KiCad files?

From the Brillar0101/agentdeck repository on GitHub, at the commit this page was made from: the board is v1/hardware/AgentDeck.kicad_pcb and its schematic v1/hardware/AgentDeck.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the AgentDeck 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).

More from Brillar0101/agentdeck

1
  • 2 layers150 × 110 mmAgentDeckV2, the printed circuit board in 3D

    AgentDeckV2

    Brillar0101/agentdeck

    RP2040 macropad for supervising AI coding agents: 13 hot-swap keys with per-key RGB status, encoder, joystick, 4-layer PCB, CircuitPython firmware, printable enclosure

    126 partsMIT

Similar boards

  • 2 layers446.9 × 141.7 mmPerson keyboard, the printed circuit board in 3D

    Person keyboard

    jtljac/person-keyboard

    My personal Keyboard Design

    374 parts
  • 2 layers131.2 × 132.5 mmMacropad, the printed circuit board in 3D

    Macropad

    earthtojake/text-to-cad

    Design physical products with AI

    73 parts26kMIT
  • 2 layers120 × 102.5 mmDsug cctv BOARD, the printed circuit board in 3D

    Dsug cctv BOARD

    LucasLHenry/spelltwister

    This is the third version of the code for the Spelltwister module with CCTV. This version uses the Arduino platform and the RP2040, a chip developed by Raspberry Pi for their RPi Pico board.

    251 partsMIT
  • 4 layers70 × 68 mmSssata fluxpad Fluxpad, the printed circuit board in 3D

    Sssata fluxpad Fluxpad

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    78 parts1
  • 2 layers133.4 × 79.5 mmMacro keyboard PCB, the printed circuit board in 3D

    Macro keyboard PCB

    thiagolocatelli/claude-code-macropad-meme

    When I saw the claude code macropad meme image I thought: "I can make this happen", and so I did.

    56 partsGPL-3.0
  • 2 layers70 × 70 mmSensactUp4, the printed circuit board in 3D

    SensactUp4

    klaus-liebler/sensact

    Es gibt vier Namespaces für Nachrichten "REQUEST" und "RESPONSE", "EVENT" und "ACKNOWLEDGE". Dies wird mit den beiden LSB des Versions-Namespace-Bytes erklärt (Somit bleiben 64 Versionierungsmöglichkeiten) Alle vier…

    147 parts4Apache-2.0
  • 2 layers290.5 × 116.7 mmKeeby60v2, the printed circuit board in 3D

    Keeby60v2

    minhazislamnafi/KEEBY60-20

    A moduler 60% mechanical hot-swapble keyboard. With 20% numpad attachment will form a proper 80% keyboard

    237 partsCERN-OHL-S-2.0
  • 2 layers149 × 224 mmGDEK, the printed circuit board in 3D

    GDEK

    GilDev/GDEK

    Low-profile, compact, beginner-friendly, assembly-friendly 4×6 with 5-keys thumb cluster ergonomic keyboard with universal keyswitch support, per-key RGB LED, encoder and RP2040 controller. Phew, that’s a lot!

    324 parts3CERN-OHL-S-2.0