Features

The nine things uterm bundles into one terminal control plane โ€” inline framing, DeckMux collaboration, edge deployment, MCP for AI agents, graphical consoles, fleet fan-out, tenant isolation, pluggable auth, and four tested-against-each-other implementations.

uterm is not a terminal emulator and not a thin WebSocket proxy. It is a collaborative control plane for terminal sessions โ€” the screen is xterm.js, but everything around it (transport, multiplexing, RBAC, recording, replay, AI participation, fleet orchestration) is uterm.

The nine cards below are the load-bearing features. Each has a deeper page with the protocol details and the relevant module entry points.

features

Inline control channel

DLE/STX framing multiplexes raw terminal bytes and structured control frames onto one WebSocket.

features

DeckMux

Presence, role-based leases, and queued keystrokes โ€” collaboration treated as a first-class protocol concern, not an afterthought.

features

Edge backend

Run the same control plane at the Cloudflare edge, with one Durable Object per session and SQLite persistence on the same object.

features

MCP for AI agents

28 tools over Model Context Protocol let AI agents discover sessions, request hijack, snapshot, annotate, chat, and drive a graphical target.

features

Graphical sessions

The same lease, presence, and audit model applied to a remote graphical console โ€” screenshots, injected input, and a filtered VNC relay.

features

Fleet fan-out

Broadcast input across N sessions with divergence detection and halt-on-failure rolling mode.

features

Multi-tenancy

Tenant scope is derived from the authenticated principal, never from client input, and a hosted deployment can refuse to let tenants reach the operator's network.

features

Authorization

Pluggable providers for RBAC and webhook-delegated authorization, plus in-memory IP-bound tunnel tokens with automatic rotation.

features

Four implementations

Python, Go, C# and TypeScript implementations of the same protocol, held together by a live interop matrix where every client talks to every server over a real socket.