An OS for the M5Stack Cardputer handheld with 512KB RAM, letting you write, compile and run Ruby and Python on the device itself.
tinydesk-project/tinydesk
A mouse-driven, windowed desktop that runs on ESP32 microcontrollers and is drawn in any ANSI terminal over serial.
- Stars
- 104
- Forks
- 15
- Open issues
- 4
- Last commit
- 2 days ago
What is it?
TinyDesk is a text-mode desktop for microcontrollers. It draws overlapping, draggable windows using ANSI escape sequences and reads keyboard and mouse input back from the terminal, so no display hardware is needed. Connect a UTF-8 terminal with ANSI/VT cursor control and xterm mouse reporting to the board's serial port, such as PuTTY, and the desktop appears.
The desktop includes a Terminal app running TinyDesk Shell, plus Files, an Editor with Python highlighting, Network, MQTT, Modbus (TCP and RTU), System Monitor, Log Viewer, Settings and OTA software update. Scripts can be written in shell (.tdsh) or MicroPython, and a small API lets developers add their own apps.
The portable C11 core has no third-party dependencies and targets ESP32-S3, ESP32-C6 and classic ESP32 boards via ESP-IDF, as well as Linux, Windows and macOS for development. The project is a developer preview at version 0.2.0.
Key features
- 01Overlapping, draggable, resizable windows drawn in a terminal over serial.
- 02Mouse and keyboard control, with copy and paste to the PC.
- 03Built-in apps for files, editing, networking, MQTT and Modbus.
- 04Shell scripts and MicroPython scripts with access to files, MQTT and Modbus.
- 05Runs on ESP32-S3, ESP32-C6 and classic ESP32 boards, and natively on Linux, Windows and macOS.
Use cases
- Managing an ESP32 device's files, network settings and logs without a display or extra software.
- Monitoring and writing Modbus registers on industrial RS-485 equipment from a board.
- Prototyping MQTT or pin-control scripts in MicroPython on a microcontroller.
- Learning or demonstrating embedded systems through a visual desktop in a terminal.
Quick start
- 1
Clone the repository with its shell submodule
git clone --recursive https://github.com/tinydesk-project/tinydesk.git - 2
Enter the project directory
cd tinydesk - 3
Build the desktop for the PC and run it
cmake -B build -G Ninja && cmake --build build && ./build/tinydesk
Things to know
- This is a developer preview (v0.2.0), so expect rough edges.
- Firmware images that include wolfSSH and wolfSSL are distributed under GPLv3 as a whole.
- Full use needs an ESP32 board wired to a serial terminal; the PC build is mainly for development.
- The optional Telnet takeover is unencrypted.
In collections
Topics
FAQ
- What is tinydesk?
- A mouse-driven, windowed desktop that runs on ESP32 microcontrollers and is drawn in any ANSI terminal over serial. TinyDesk is a text-mode desktop for microcontrollers. It draws overlapping, draggable windows using ANSI escape sequences and reads keyboard and mouse input back from the terminal, so no display hardware is needed. Connect a UTF-8 terminal with ANSI/VT cursor control and xterm mouse reporting to the board's serial port, such as PuTTY, and the desktop appears.
- Is tinydesk free to use? What license does it have?
- tinydesk is open source under the MIT license. Check the license terms before using it in commercial products.
- Is tinydesk still maintained?
- Actively maintained. The last commit to tinydesk was on Nov 5, 2026.
- What can I use tinydesk for?
- Managing an ESP32 device's files, network settings and logs without a display or extra software. Monitoring and writing Modbus registers on industrial RS-485 equipment from a board. Prototyping MQTT or pin-control scripts in MicroPython on a microcontroller. Learning or demonstrating embedded systems through a visual desktop in a terminal.
- How do I install tinydesk?
- Clone the repository with its shell submodule: git clone --recursive https://github.com/tinydesk-project/tinydesk.git Enter the project directory: cd tinydesk Build the desktop for the PC and run it: cmake -B build -G Ninja && cmake --build build && ./build/tinydesk
- Where can I get tinydesk?
- The source code and installation instructions are on GitHub: https://github.com/tinydesk-project/tinydesk
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A lean Python 3 implementation that runs on microcontrollers and other resource-constrained devices, with hardware access modules.
Official development framework from Espressif for building firmware on ESP32 and other Espressif SoCs, on Windows, Linux and macOS.
Cross-platform command-line tool and build system for embedded development, covering library management, multiple boards and frameworks, debugging and unit testing.
Alternative firmware for ESP8266 and ESP32 boards that adds web-based setup, OTA updates, local automation and MQTT, HTTP, Serial or KNX control.
A two-file embedded networking library in C providing a TCP/IP stack, TLS 1.3, HTTP, WebSocket, MQTT and firmware OTA updates for microcontrollers.