features
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.