What is MonoTerm?
MonoTerm is Monolex’s terminal-in-terminal. It wraps the same headless PTY engine that powers the Monolex desktop app, but renders directly to your existing terminal via crossterm — no Electron, no WebView, no GUI. Published contract:monoterm 0.4.17, OpenCLIs build
2026-07-15-163247. The executing binary, registry, and public CDN metadata
agree on this release.
Install
Quick Start
Platform Availability
The exact published targets are
darwin-aarch64, linux-x86_64,
linux-aarch64, and windows-x86_64. There is no Intel macOS or Windows Arm
artifact in this release. ctl uses a Unix domain socket and test uses Unix
PTY primitives, so both command families fail closed on Windows until
named-pipe and ConPTY transports are implemented.
Complete CLI Reference
The control socket uses newline-delimited JSON at
~/Library/Application Support/Monolex/runtime/sockets/monoterm/control-{PID}.sock.
It discovers the newest live process and cleans stale sockets. ctl and test
prove different layers: ctl drives an existing PTY directly, while test
sends keyboard events through a newly spawned UI and also verifies selected
control-socket and PTY-stream paths.
Raw Socket Protocol: 11 Parsed Messages
The sixmonoterm ctl commands are the stable shell wrapper. Integrations can
also send raw newline-delimited JSON. The 0.4.17 parser recognizes exactly 11
message types:
This distinction matters for automation: the parser accepting a message is not
the same as the current TUI implementing its mutation. The 28-check harness
proves
status, tab-list, write, and subscribe-pty; it does not turn the
three fail-closed tab messages into working commands.
Keybindings
Default keybindings, configurable via JSON:
Override via
~/Library/Application Support/Monolex/keybindings.json:
Architecture
MonoTerm does not implement a terminal emulator. It wraps the Monolex headless engine — the same Alacritty VTE parser, AtomicState diff engine, and PTY daemon that power the desktop app.What MonoTerm adds over raw headless:
Virtual Cursor & IME
When apps like Claude Code hide the real cursor and draw their own using INVERSE video (\x1b[7m), MonoTerm detects the virtual cursor position
from the AtomicState layer and places the host terminal’s cursor there.
This ensures the parent terminal’s IME (Korean, Japanese, Chinese input)
composition window appears at the correct position — where the user is
actually editing, not where the hidden real cursor is.
The detection uses the same algorithm as the Monolex desktop app:
- Scan for INVERSE cells on the cursor row first (avoid false positives)
- Fall back to bottom-up scan
- Hold position during Ink erase-redraw cycles (6 frames)
- Distance check to discard false positives (zsh % marker, status bars)
PTY Harness
MonoTerm includes a built-in test system that exercises the headless engine through a real test PTY without requiring a human-operated terminal:ctl status, ctl tabs,
ctl write, PTY subscription, and the Spotlight palette. Screen assertions
poll until the required state appears instead of treating one fixed-delay
snapshot as proof.
Source
MonoTerm is released through OpenCLIs from the public Monolex repository undertauri-apps/app-monoterm. A source build, an installed OpenCLIs payload, and a
passing PTY harness are separate proof layers.