AI Monitor zeigt KI-Verbrauch auf kompaktem ESP32-Display am Schreibtisch
AI Monitor ist ein offenes Projekt mit ESP32-Touchdisplay, das Account-Limits unterstuetzter KI-Dienste und lokal erfasste Token-Aktivitaet anzeigt. Neben dem Dashboard gibt es die animierten Schreibtisch-Begleiter NOVA und ORBIT; entwickelt wurde das Geraet mit LVGL 9.6 und Arduino.

AI Monitor brings supported AI account limits and locally recorded token activity onto a small USB touchscreen. You can choose between NOVA and ORBIT, two animated desk companions, and keep the usage dashboard visible while working on your main screen.
The project is open source, built with LVGL 9.6 and Arduino/PlatformIO, and now ships two separate firmware options in the same repository and Windows package.
These images are renders of the actual LVGL interface with synthetic data, not photographs of the boards.
The robot reacts to increases in the recorded token counters. Quota polling is a separate signal: fetching an account limit does not make the robot look busy.
The first counter sample establishes a baseline. Some clients only write their usage after a request completes, so the animation can lag behind generation. This is an activity display, not a billing ledger or a per-token stream.
Local activity adapters cover Codex, ZCode, Claude Code and Gemini CLI. Codex uses the signed-in official CLI for the quota of supported accounts, ZCode can use an optional Z.AI coding-plan key, and Claude quota can use its documented statusline bridge. Gemini only provides recorded activity. Other selectable providers require an external numeric telemetry bridge; selecting a name does not automatically connect the respective editor.
Besides the companion view, the screen offers:
The original target is the GUITION JC4880P433 ESP32-P4, with an ST7701S MIPI DSI display and GT911 touch. Its portrait panel is rotated into an 800 × 480 landscape UI, and brightness is controlled via hardware PWM.
Version v1.13.0 adds the original Waveshare ESP32-S3-Touch-LCD-4.3 as a separate, experimental target. That board uses a native 800 × 480 ST7262 RGB panel, GT911 touch, a CH422G expander, 16 MB flash and 8 MB OPI PSRAM. The B/C variants are not supported.
The S3 firmware has not yet been tested on physical hardware. It compiles and the shared native tests pass, but touch alignment, RGB stability, tearing and sustained operation still need testing on a real board.
A useful hardware lesson from this port: similar-looking screens require different brightness handling. The original S3 board only exposes an LED on/off switch, so intermediate brightness dims the rendered image with a touch-transparent overlay. Only zero switches the LEDs off. It does not reduce LED power like the P4's PWM.
Both boards share the dashboard, robot artwork, themes and protocol. Their drivers remain separate. LVGL and backlight changes belong to a single UI task, while the host communicates via bounded AIM1/JSON frames.
The S3 backend uses one PSRAM framebuffer, RGB bounce buffers and a partial LVGL draw buffer to fit its smaller memory budget. Its Arduino core and the matching Espressif PSRAM XIP SDK are pinned separately from P4. A single RGB framebuffer can still show tearing; a passing build is no substitute for observing the hardware.
CI builds both targets, and the project has 119 synthetic Python tests, protocol checks for both board identities, NVS settings tests and tests of the actual LVGL screens under both profiles.
The GitHub repository contains source code, screenshots and setup instructions. The v1.13.0 Windows release includes the host runtime, firmware flasher and both firmware variants, so users do not need Python or PlatformIO installed.
Extract the entire ZIP, open AI-Monitor.exe, select your exact board and AI providers in the first-time setup, and install the matching firmware. Fresh installations have neither a board nor an AI provider preselected. The S3 uses its USB TO UART connector for flashing and everyday host data.
The PC companion reads the selected usage sources and sends display data over USB. Provider credentials stay on the PC; no maintainer keys are distributed. Project-owned code and robot artwork are under MIT, while bundled components and provider marks retain their own terms. The USB protocol builds on tobymarks/esp32-ai-monitor.
Feedback on the interface and, above all, hardware testing from anyone who owns the original Waveshare S3 board would be welcome. The board guide in the repository lists the remaining checks.
Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.
Original (Englisch) anzeigen
AI Monitor puts supported AI account limits and locally recorded token activity on a small USB touchscreen. You can choose NOVA or ORBIT, two animated desk companions, and keep the usage dashboard visible while working on your main screen.
The project is open source, built with LVGL 9.6 and Arduino/PlatformIO, and now ships two separate firmware choices in the same repository and Windows package.
These images are renders of the actual LVGL interface with synthetic data, rather than photographs of the boards.
The robot reacts to increases in recorded token counters. Quota polling is a separate signal: fetching an account limit does not make the robot look busy.
The first counter sample establishes a baseline. Some clients write their usage only after a request finishes, so animation can lag generation. This is an activity display, not a billing ledger or a per-token stream.
Local activity adapters cover Codex, ZCode, Claude Code and Gemini CLI. Codex uses the signed-in official CLI for supported account quota, ZCode can use an optional Z.AI coding-plan key, and Claude quota can use its documented statusline bridge. Gemini supplies recorded activity only. Other selectable providers require an external numeric telemetry bridge; selecting a name does not automatically connect its editor.
Besides the companion view, the screen has:
The original target is the GUITION JC4880P433 ESP32-P4, with a ST7701S MIPI DSI display and GT911 touch. Its portrait panel is rotated into an 800 × 480 landscape UI, and brightness uses hardware PWM.
Version v1.13.0 adds the original Waveshare ESP32-S3-Touch-LCD-4.3 as a separate, experimental target. That board uses a native 800 × 480 ST7262 RGB panel, GT911 touch, a CH422G expander, 16 MB flash and 8 MB OPI PSRAM. The B/C variants are not supported.
The S3 firmware has not been tested on physical hardware. It compiles and the shared native tests pass, but touch alignment, RGB stability, tearing and sustained operation still need a real board test.
A useful hardware lesson from this port: similar-looking screens need different brightness handling. The original S3 board exposes an LED on/off switch, so intermediate brightness dims the rendered image with a touch-transparent overlay. Only zero switches the LEDs off. It does not reduce LED power like the P4's PWM.
Both boards share the dashboard, robot artwork, themes and protocol. Their drivers stay separate. LVGL and backlight changes belong to one UI task, while the host communicates through bounded AIM1/JSON frames.
The S3 backend uses one PSRAM framebuffer, RGB bounce buffers and a partial LVGL draw buffer to fit its smaller memory budget. Its Arduino core and matching Espressif PSRAM XIP SDK are pinned separately from P4. A single RGB framebuffer can still show tearing; passing a build is not a substitute for observing the hardware.
CI builds both targets, and the project has 119 synthetic Python tests, protocol checks for both board identities, NVS settings tests and tests of the actual LVGL screens under both profiles.
The GitHub repository contains source, screenshots and setup instructions. The v1.13.0 Windows release includes the host runtime, firmware flasher and both firmware variants, so users do not need Python or PlatformIO installed.
Extract the whole ZIP, open AI-Monitor.exe, choose your exact board and AI providers in First-time setup, and install the matching firmware. Fresh installations have neither a board nor an AI provider preselected. S3 uses its USB TO UART connector for flashing and everyday host data.
The PC companion reads selected usage sources and sends display data over USB. Provider credentials stay on the PC; no maintainer keys are distributed. Project-owned code and robot artwork use MIT, while bundled components and provider marks retain their own terms. The USB protocol builds on tobymarks/esp32-ai-monitor.
I'd welcome feedback on the interface and, especially, hardware testing from anyone with the original Waveshare S3 board. The board guide in the repository lists the remaining checks.