Skip to main content

interactive terminal in the browser

Project description


A fully functional terminal in your browser.


This is a Flask websocket backend combined with the Xterm.js Javascript terminal emulator in the frontend. It works out of the box and can run any application you want, including bash.

While useful on its own, the real purpose of this is to show a basic proof of concept on how to bring Xterm.js, Python, Flask, and Websockets together to make a useful tool.

It is a

  • starting point to build your own web app with a terminal
  • learning tool to understand what a pty is, and how to use one in Python
  • way to see Flask and Flask-SocketIO
  • way to play around with Xterm.js is a meaningful environment


Option 1

This option installs system-wide or to your virtual environment. Should probably only be used if you're using a virtual environment.

pip install pyxtermjs
pyxtermjs  # run it from anywhere

Option 2

This option installs system-wide and isolates all of pyxterm.js's dependencies, guaranteeing there are no dependency version conflicts. Requires pipsi to be installed.

pipsi install pyxtermjs
pyxtermjs  # run it from anywhere

Option 3

This option lets you play around with the source code. Requires poetry to be installed.

git clone
cd pyxterm.js
poetry install
python pyxtermjs/


>> pyxtermjs --help
usage: [-h] [-p PORT] [--debug] [--command COMMAND]
              [--cmd-args CMD_ARGS]

A fully functional terminal in your browser.

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to run server on (default: 5000)
  --debug               debug the server (default: False)
  --command COMMAND     Command to run in the terminal (default: bash)
  --cmd-args CMD_ARGS   arguments to pass to command (i.e. --cmd-args='arg1
                        arg2 --flag') (default: )

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyxtermjs, version
Filename, size File type Python version Upload date Hashes
Filename, size pyxtermjs- (9.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pyxtermjs- (5.2 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page