AgentDeck ESP32 v1.2.1
A pager chime now points at the session that needs you
The T-Embed CC1101 could play its deliberate two-note attention chime for a
Claude or Codex session while keeping the idle OpenClaw card in the center.
Audio and display had separate waiting detectors: the first watched every
session, while the second preferred the conversational assistant until the
operator turned the knob. The carousel now centers the exact session that
entered a response wait and follows its ID across roster reordering. It keeps
an in-progress detail/history cursor intact and names the other waiting session
in the footer instead.
The same waiting request also no longer becomes a new alert when USB or WiFi
briefly drops the roster. A fixed-size per-session latch survives empty roster
frames and rearms only after that session is explicitly observed outside an
awaiting state. Repeated broadcasts therefore stay silent; a genuinely new
question still rings once.
Firmware for every board this repository builds. Each asset is named by the
board's canonical id — the same string the firmware reports as
device_info.board and the one agentdeck esp32-ota <target> takes, so the
file you download is the target you pass.
| Board | Factory image | Display | PlatformIO env | Wi-Fi OTA | Browser flash |
|---|---|---|---|---|---|
| 86 Box | agentdeck-86box-merged.bin |
4" 480x480 ST7701 | box_86 |
yes | yes |
| InkDeck | agentdeck-inkdeck-merged.bin |
7.5" 800x480 e-ink UC8179 | inkdeck |
yes | yes |
| IPS 10.1" | agentdeck-ips_10-merged.bin |
10.1" 800x1280 JD9365 | ips10 |
yes | no |
| IPS 3.5" | agentdeck-ips_35-merged.bin |
3.5" 480x320 AXS15231B | ips35 |
yes | untested |
| LilyGo T5 ePaper S3 | agentdeck-lilygo_epd47-merged.bin |
4.7" 960x540 grayscale e-ink ED047TC2 | lilygo_epd47 |
yes | untested |
| RockBase NM-EPD-420 | agentdeck-nm_epd_420-merged.bin |
4.2" 400x300 tri-color e-ink GDEY042Z98 | nm_epd_420 |
no | untested |
| Round AMOLED | agentdeck-round_amoled-merged.bin |
1.8" 360x360 ST77916 | amoled |
yes | untested |
| T-Display-S3-Pro | agentdeck-t_display_pro-merged.bin |
2.33" 480x222 ST7796U | t_display_pro |
yes | yes |
| T-Embed CC1101 | agentdeck-t_embed-merged.bin |
1.9" 320x170 ST7789 | t_embed |
yes | untested |
| TTGO T-Display | agentdeck-ttgo_t_display-merged.bin |
1.14" 240x135 ST7789 | ttgo |
yes | yes |
| Ulanzi TC001 | agentdeck-ulanzi_tc001-merged.bin |
32x8 WS2812B matrix | led8x32 |
yes | yes |
| Waveshare C6-LCD-1.47 | agentdeck-esp32_c6_147-merged.bin |
1.47" 172x320 ST7789 | esp32_c6_147 |
no | untested |
Flash over USB
Each board ships a merged factory image — one file, written at one offset,
on every chip:
esptool --port PORT write-flash 0x0 agentdeck-<board>-merged.binThe merged image already carries the bootloader, the partition table,
boot_app0 and the application, with the flash size and mode patched into its
header. That matters: the bootloader offset is chip-specific (0x1000 on ESP32,
0x2000 on ESP32-P4, 0x0 elsewhere), and writing the application alone leaves
boot_app0 pointing at whichever slot a previous OTA selected — so the board
can come up running the OLD firmware. The loose -bootloader.bin,
-partitions.bin, -boot_app0.bin and -<board>.bin files are still
published for recovery work; prefer the merged image.
manifest.json carries the same facts in machine-readable form (offsets,
sha256, per-board reset/baud settings). SHA256SUMS.txt covers every binary.
Update over Wi-Fi
agentdeck esp32-ota <board> --firmware agentdeck-<board>.binThe board must already be provisioned and connected to the daemon over Wi-Fi.
86box and ips_10 units flashed before 2026-07-05 may still carry a
factory/NO_OTA layout and need one USB full flash first.
Flash from a browser
5 of 12 boards are hardware-verified for browser flashing
(Chrome or Edge on desktop, via Web Serial). Boards marked untested are listed
there too, disabled, with the reason — a hidden board reads as unsupported.
Full changelog: https://github.com/puritysb/AgentDeck/blob/esp32-v1.2.1/CHANGELOG.md