$npx skillfedfor your agent

terminado

Tornado websocket backend for the Xterm.js Javascript terminal emulator library.

With conditionsPyPI TerminalsReleased Mar 202442.6M downloads / mopermissive licensePure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — terminado-0.18.1-py3-none-any.whl
v0.18.1 · released 2024-03-12 · Python >=3.8 · 3 runtime deps: ptyprocess, pywinpty, tornado

Yes, if you need to expose terminal access over the web via Tornado. The package is stable, permissively licensed, has low install friction, and carries no known vulnerabilities. Maintenance is aging but not stalled; expect infrequent updates. Suitable for production use in established projects; less ideal if you need active feature development or rapid bug-fix cycles.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python >=3.8; depends on ptyprocess (or pywinpty on Windows) and tornado to be installed; terminal management is OS-level and may require appropriate shell availability.
  • Low install friction; ships as a pure Python wheel.
  • Maintenance is aging—last release was 2024-03-12—but the repository remains active with recent commits and no archived status, suggesting the project is stable rather than abandoned.

License · maintenance · safety

permissive license (permissive) — BSD 2-Clause permissive license allows commercial and private use with minimal restrictions; you must retain copyright and license notices in source distributions.

last release 2024-03-12 (885 days) · last repo commit 2025-08-02 · 373 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 42,582,057 downloads/mo, #656 on PyPI

Verify before relying

pip install terminado

import terminado
import tornado.web
import tornado.ioloop

term_manager = terminado.SingleTermManager(shell_command=["bash"])
handlers = [(r"/websocket", terminado.TermSocket, {"term_manager": term_manager})]
app = tornado.web.Application(handlers)
app.listen(8765, "localhost")
tornado.ioloop.IOLoop.instance().start()
  • Whether pywinpty is automatically selected on Windows or requires explicit configuration
  • Performance characteristics under high concurrent terminal sessions
  • Compatibility with recent Xterm.js versions beyond what the fact sheet documents
  • How frequently maintenance updates are expected given the aging status
Same gist for agents: .md · .json

What it is and what it does

Terminado is a Tornado-based websocket server that bridges OS-level terminal processes to browser-based terminal emulators. It manages virtual terminal lifecycle—launching, connecting to Tornado's event loop, and shutting down—and exposes them via websocket for real-time bidirectional communication. The package includes a lightweight JavaScript wrapper and a Tornado UI module for template integration.

The project evolved from earlier terminal-over-web systems (Ajaxterm, GraphTerm) and is now maintained as part of the Jupyter ecosystem. It handles the low-level complexity of PTY management on Unix-like systems (via ptyprocess) and Windows (via pywinpty), letting you focus on the web layer. Typical use is embedding interactive shells in web applications, Jupyter-like environments, or any scenario requiring browser-based terminal access.

Use it for

  • Embed an interactive shell in a web dashboard or admin panel for remote command execution
  • Build a Jupyter-like notebook interface with terminal cells accessible from the browser
  • Provide remote terminal access in a containerized or cloud application without SSH
  • Create a web-based IDE or development environment with integrated terminal support
  • Monitor and control server processes through a browser-based terminal interface

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you need to expose terminal access over the web via Tornado.

The package is stable, permissively licensed, has low install friction, and carries no known vulnerabilities. Maintenance is aging but not stalled; expect infrequent updates. Suitable for production use in established projects; less ideal if you need active feature development or rapid bug-fix cycles.

Install

terminado on PyPI

Before you install

Low install friction; ships as a pure Python wheel. Maintenance is aging—last release was 2024-03-12—but the repository remains active with recent commits and no archived status, suggesting the project is stable rather than abandoned.

Requires Python >=3.8; depends on ptyprocess (or pywinpty on Windows) and tornado to be installed; terminal management is OS-level and may require appropriate shell availability.

License in practice

BSD 2-Clause permissive license allows commercial and private use with minimal restrictions; you must retain copyright and license notices in source distributions.

Quickstart

pip install terminado

import terminado
import tornado.web
import tornado.ioloop

term_manager = terminado.SingleTermManager(shell_command=["bash"])
handlers = [(r"/websocket", terminado.TermSocket, {"term_manager": term_manager})]
app = tornado.web.Application(handlers)
app.listen(8765, "localhost")
tornado.ioloop.IOLoop.instance().start()

Verify before relying

  • Whether pywinpty is automatically selected on Windows or requires explicit configuration
  • Performance characteristics under high concurrent terminal sessions
  • Compatibility with recent Xterm.js versions beyond what the fact sheet documents
  • How frequently maintenance updates are expected given the aging status

Package facts

Licensepermissive license permissive
Python supportSupports the current Python release >=3.8
Install frictionLow. Pure-Python wheel
Runtime dependencies
3 packages
ptyprocesspywinptytornado
MaintenanceAging 885 days since the last release
Last repo commit
First released
Downloads42,582,057 / month, #656 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Environment :: Web EnvironmentLicense :: OSI Approved :: BSD LicenseProgramming Language :: Python :: 3Topic :: Terminals :: Terminal Emulators/X Terminals

Evidence: terminado-0.18.1-py3-none-any.whl

Tags

Capabilities
tornado websocket terminal emulatorweb-based terminal backendxterm.js server integrationbrowser terminal over websocketremote shell web interfaceterminal management tornadointeractive web terminal
Topics
websocket-terminaltornado-integrationjupyter-ecosystem

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “tornado websocket terminal emulator”

  • terminadoTerminado provides a Tornado websocket backend that connects…
  • tuipetA terminal-based virtual pet game in the Digimon V-Pet style, with…
  • tornadoTornado is a Python web framework and asynchronous networking library…

Give your agent the search over MCP, or paste the wish link into any chat.

More Terminals packages

tqdm Worth it
PyPI · Libraries · released Jul 2026

Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.

copyleftpure Python · 3.8+
648.6Mdownloads / mo
rich Worth it
PyPI · Terminals · released Apr 2026

Rich renders styled text, tables, progress bars, syntax highlighting, markdown, and tracebacks to the terminal with minimal code.

MITpure Python · 3.9.0+
613.9Mdownloads / mo
colorama Worth it
PyPI · Terminals · released Oct 2022

Colorama makes ANSI escape sequences for colored terminal text work on Windows by intercepting and converting them to win32 API calls, while passing through unchanged on other platforms.

Install it if you need colored terminal output to work on Windows or want to use ANSI-based libraries portably; skip it only if you target non-Windows platforms…

BSD-3-Clausepure Python
431.0Mdownloads / mo
wcwidth Worth it
PyPI · Libraries · released Jun 2026

Measures the displayed width of Unicode strings in terminals, accounting for wide characters, combining marks, and terminal escape sequences that standard Python string functions mishandle.

Install it if your application formats text for terminals and handles non-ASCII characters.

MITpure Python · 3.8+
306.5Mdownloads / mo
ptyprocess With conditions
PyPI · Terminals · released Dec 2020

Run a subprocess in a pseudo terminal (pty) and interact with its input and output, enabling automation of interactive programs that require terminal features like password prompts or curses-style interfaces.

However, note that it is aging (last release 2020-12-28) and not actively maintained; it works well for its narrow, well-defined purpose but won't receive updates for…

ISCpure Pythonaging
205.2Mdownloads / mo
pexpect With conditions
PyPI · Software Development · released Nov 2023

Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.

ISCpure Pythonaging
200.8Mdownloads / mo

See also tornado · pytest-tornado · jupyter-server-terminals · textual-serve · pytest-tornasync · textual-image · textual-dev · opentelemetry-instrumentation-tornado · textual · threadloop