📈 GH Trending Explorer 🎲 Surprise me

← all repos

tinydesk-project / tinydesk

git clone https://github.com/tinydesk-project/tinydesk.git

A mouse-operated, windowed desktop for microcontrollers, drawn in your terminal: Files, Editor, Shell, MQTT, Modbus. Tested on ESP32 boards; also runs on Windows and Linux.

—
stars, 24h
—
stars, 7 days
+77
stars, 30 days · #2,908
77
★ total
11
forks · 3 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageC
LicenseMIT
Created2026-09-27 (23d ago)
Last push2d ago
Watchers0
OwnerOrganization

GitHub topics

Links

README excerpt
# TinyDesk
**A tiny board. A real desktop. Inside your terminal.**
v0.1.6 · Developer preview.
**Install it from the browser**: flash an ESP32 (Chrome or
Edge, no toolchain), or download the Windows and Linux programs. Then open
the board in the **web terminal**, or in PuTTY.
Full **documentation**. To build from source, see below.
*One continuous take from an ESP32 over USB serial, at normal speed: Editor,
Files, System Monitor and Terminal are opened, dragged and resized side by
side, then About. The board runs the desktop; the computer only displays it.
Watch the MP4 or read the
capture details.*
TinyDesk draws overlapping, draggable text-mode windows with ANSI escape
sequences and reads the keyboard and mouse back from the terminal. There is
no display hardware: open a UTF-8 terminal with ANSI/VT cursor control
and xterm mouse reporting (for example, configured PuTTY) on the board's serial
port and you get a desktop, with a full shell,
TinyDesk Shell, in a
Terminal window. The core is portable C11; ports exist for ESP32 boards
(ESP-IDF), Linux and Windows, and a new target needs four functions.
* Pure C11 core with no third-party dependencies. Screen buffers are allocated
 at initialization; pasted text can grow a heap buffer with `realloc()`.
 Only changed cells are sent each frame.
* Runs on the **ESP32-C6** (built-in USB port) and the **classic ESP32**
 (USB-UART, 921600 baud, PSRAM boards), and natively in Windows, Linux and
 macOS terminals for development.
* Windows with z-order, drag, resize, minimise, maximise; taskbar, start
 menu, mouse and keyboard; copy and paste with the PC; screen size follows
 the terminal.
* Apps: Terminal (the shell), Files, Editor, Network, MQTT, Modbus (TCP and
 RTU), Task Manager, System Monitor, Log Viewer, Settings, Software Update
 (OTA), and a small API for writing your own.
* Shell scripts (`.tdsh`): variables, `if`/`while`/`for`, functions, pipes
 and redirection, run from the Terminal or with right-click → Run on the
 desktop. Language reference: `docs/SCRIPTING.md` in
 TinyDesk Shell.
* Optional, root-only desktop takeover over unencrypted Telnet. SSH provides
 an encrypted shell and SFTP, not the windowed desktop. FTP, SMB mounts,
 Wi-Fi and W6100 Ethernet are available from the shell.
## Choose a target
| Desktop target | Hardware | Console / limits |
| --- | --- | --- |
| ESP32-C6 | 8 MB flash | Built-in USB Serial/JTAG |
| Classic ESP32 with PSRAM | 16 MB flash, PSRAM required | USB-UART, 921600 baud |
| Classic ESP32, 4 MB | PSRAM optional | USB-UART, 921600 baud; 80×25, no SSH server or OTA |
| PC | Linux, Windows with MinGW, or macOS | Compatible terminal; host simulator for development |
TinyDesk Shell also runs as
standalone firmware or a POSIX host program. Every
release has the firmware
images for both editions, the PC programs and `SHA256SUMS.txt`; the
web installer uses the same files.
### Community ports
Maintained by their authors, not built or tested here:
| Port | Hardware | Notes