Show HN: Ratchet – let an AI agent reflash your BIOS over a CH341A (MCP server) Ratchet, a new hardware debug and flash-programming toolkit for CH341A and CH347 USB programmers, was released as a pre-release on GitHub. Written in Rust, it replaces multiple existing tools like AsProgrammer and flashrom by providing a single binary with an MCP server for AI agents. The toolkit supports SPI flash programming, I2C, JTAG, and various MCU programmers, with live hardware support for BIOS reflashing and diagnostics. A hardware debug and flash-programming toolkit for CH341A and CH347 USB programmers. Its core is SPI flash programming and BIOS analysis, the path that drives live silicon end to end. Around it sits a unit-tested protocol layer I2C, UART, 1-Wire, passive SPI sniff, JTAG, SWD, CAN , target-MCU programmers AVR ISP, STK500 / Arduino bootloader, 24Cxx and 93xxx EEPROM, ESP32 / ESP8266, STM32 over SWD and AN3155 UART , an ARM debug surface ADIv5, Cortex-M halt/resume/step, ELF-aware memory peek , JTAG IDCODE and BSDL boundary scan, a logic-analyzer model with Saleae / sigrok export, and Bus Pirate / slcan CAN bridges. Not all of that is wired to live hardware yet. Status status marks every command live , offline , or n/w not wired . The rule throughout: a command with no live transport exits non-zero with a clear message; it never fakes success. Written in Rust: a single self-contained binary with custom libusb FFI and a hand-rolled JSON-RPC MCP server, no Node or Python runtime. It replaces AsProgrammer and NeoProgrammer on the SPI-flash path, and covers ground otherwise split across flashrom, avrdude, esptool, stm32flash, and OpenOCD: native USB, image analysis, a knowledge base of diagnostics, and a built-in MCP server for AI agents. Pre-release. No GitHub Releases are published yet, so the only install route today is from source see Install install . What drives live hardware today CLI + MCP : SPI flash + BIOS, end to end. status , detect , identify , read , write , verify , erase , region-erase , blank-check , sfdp , wp-status , full-repair , and full-backup run against a live CH341A or CH347. write erases the affected sectors first SPI program can only clear bits 1→0 , programs page by page, polls the write-in-progress WIP bit after every erase and program so it never races a busy chip, takes an automatic pre-write backup, and reads back to verify. Chips larger than 16 MB switch to 4-byte addressing automatically. full-repair runs the guided pipeline; full-backup is a full-chip read to a named file. I2C , over CH341A bit-bang or CH347 native. i2c scan , i2c read , i2c write , and eeprom-i2c read/write 24Cxx use the real Ch341aI2c / Ch347I2c master over the live bus. JTAG IDCODE scan , over the CH347 JTAG engine CH341A has none . jtag idcode-scan drives the real Ch347Jtag adapter. Backend auto-select. open default probes CH347 1a86:55db , then CH341A 1a86:5512 , then falls back to mock with a stderr warning; RATCHET FORCE MOCK=1 forces mock. Protocol verbs use open raw bus , which returns an honest error rather than a silent mock fallback when no device is present. ratchet status reports the active backend in its backend JSON field. Offline tools that need no hardware: i2c sniff