Vibe Coding Keyboard
A meme about vibe coding turned into working hardware: an ESP32-S3 desk keyboard with nine keys, a rotary encoder and a small screen holding ten switchable keymaps.

What it is
An ESP32-S3 keyboard you can build yourself: nine mechanical keys, a toggle switch, a rotary encoder and a 76×284 LCD, presenting itself over USB as a keyboard and a mouse. The repository holds everything needed to make one — the Arduino firmware, a Python tool that configures keymaps over a serial link and writes them to EEPROM, the LCEDA project, Gerbers and schematic PDFs, and the SketchUp and STL files for a printed case.
Who built itA hardware builder who documents his projects on the blog GeekLogic and has been on GitHub since 2012. His twenty repositories are mostly retro-computing hardware: a replica of the TRS-80 Model 100, an SD-card interface for Apple II machines, a flashable MSX cartridge, a DRAM tester, a replacement ULA for the ZX81, and a wooden box that plays Amiga MOD files. The blog is served by a Loongson 3A6000, a Chinese-designed CPU.
Build log
7 stages- 01
It started as a meme
The author found the idea in an image going around online: a joke keyboard labelled as being for vibe coding. He describes it as half a joke and half a metaphor for the future, and the question he took from it was what the feeling would look like if it were made into an object. The project is that question answered literally. His announcement post, published on 26 April 2026, names the repository as where all the code and models were opened up.
- 02
What the object actually is
The device is an ESP32-S3, chosen for its native USB interface, driving a 76×284 ST7789 LCD, nine mechanical keys, one toggle switch, and a rotary encoder that reads clockwise, anticlockwise and press. It presents itself as a USB HID keyboard and mouse. Keys are configured through a Python desktop tool that talks to the keyboard over a serial port and writes the result into EEPROM, with ten keymap profiles available. Each key carries a short label of up to seven characters, a trigger mode — simultaneous, sequential or sticky — and up to five HID key values. The README names a GPIO for every part, so the wiring is not left to guesswork.
- 03
The repository is a bill of materials
What makes it buildable rather than merely demonstrative is the file list: the LCEDA project file, two Gerber archives for PCB fabrication, two schematic PDFs, and a directory of 3D models supplied as both SketchUp sources and STL — case top, case bottom, display housing, a keycap and a spacebar stabiliser plate. Twenty-five files in total, in a repository whose entire history is nine commits.
- 04
A reader caught a 5V wiring fault, and it was fixed the same day
Issue 1 asked whether the CH340C, a 5V part, could be connected straight to the ESP32-S3’s TX and RX lines when the ESP32 pins are 3.3V. The author replied that in practice it had been fine, but that he would add a level shifter to be safe, and then updated the schematics and the PCB fabrication files. The repository’s last commit, on 17 April 2026, is that change. It is the most concrete event in the project’s public record: a reader found an electrical fault, and both the schematic and the board files were corrected about two hours later.
- 05
What the numbers look like
Nine commits between 1 and 17 April 2026, all from one author, and nothing since. No releases and no tags. The README calls the current version 0.1 and dates it to 8 February 2026, roughly seven weeks before the first commit. Three issues have been opened: the level-shifter question, a request for a BOM to hand to a PCB manufacturer’s assembly service, answered with the menu path for exporting one from the EDA tool, and an open request to redesign the board around a four-microphone array for directional pickup, whose author offered to write the software side. Two hundred and thirty-six stars and thirty-two forks on a project that stopped moving five months ago.
- 06
The same premise, arrived at separately
Two other ESP32-S3 desk controllers for AI coding workflows appeared on GitHub later the same year: JoeShi/ki-board in June 2026, built around five small screens for switching between coding agents, and zerob13/vibe-keyboard in July, a macOS controller for a 428×142 board. Neither cites this repository, and the hardware differs — ki-board is assembled from Waveshare modules rather than a custom board. What they share is the premise: a small physical object on the desk whose job is to talk to a coding agent rather than to type at it.
- 07
What the README says about finishing it
The closing section is a note rather than a roadmap: the project was made for fun, the code was written by hand and is not well structured, and the author invites others to help improve it and to add Bluetooth and WiFi so it can become a wireless keyboard or find some other use. Reuse is under GPL-3.0, with the request that the author’s name and the licence notice stay attached.
Adjacent records
All records →No. 034
N.O.R.A.Core
A single-author AI companion with two brains, an encrypted diary of its own, and 98 commits signed in its own name.
No. 038
VibeRave
A fork of Strudel that lets you hold a key, say a genre out loud, and have the music change on the next bar without the beat ever stopping.
No. 033
AudioNoise
Linus Torvalds learning digital audio DSP by writing guitar effects — with the Python visualiser vibe-coded.