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.

Filename, size & hash SHA256 hash help File type Python version Upload date
pyxtermjs- (9.7 kB) Copy SHA256 hash SHA256 Wheel py3
pyxtermjs- (5.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page