Fork of Butterfly, the terminal running in a browser
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Peter Cai cc2fe7332f
term: hide input-helper until loaded
10 months ago
butterfly term: hide input-helper until loaded 10 months ago
coffees term: hide input-helper until loaded 10 months ago
docker Do @thaJeztah container efficiency suggestions 2 years ago
scripts Fix cursor blur. Fix scrollLock on focus/blur. Rework binaries. 3 years ago
.dockerignore Add .dockerignore 2 years ago
.gitignore Fix lint 10 months ago
.gitmodules Add themes as a submodule and handle both builtin themes and local themes. 3 years ago
.isort.cfg Fix lint 10 months ago Update Changelog 10 months ago
Dockerfile Updated docker baseimage 1 year ago Merge #94 3 years ago
LICENSE Happy new year (a bit late) 2 years ago
Makefile Bump 3.1.5 1 year ago
Makefile.config Fix crash on lsof on python3 1 year ago Integrate new themes 2 years ago
bower.json Fix alt buffer restore 3 years ago
butterfly.png Add 5 years ago Issue correct X.509 v3 certificates (you will need to re-generate your certs) 1 year ago
butterfly.service Enable systemd socket activation. Fixes #48. (Bump to 1.5.3) 4 years ago
butterfly.socket And some docs 4 years ago
package.json update grunt-sass 10 months ago
requirements.txt Fails with tornado 3.0 5 years ago
setup.cfg Add a Makefile. Lint code. Fix butterfly open. Add a 1 year ago Add a Makefile. Lint code. Fix butterfly open. Add a 1 year ago
yarn.lock update grunt-sass 10 months ago

ƸӜƷ butterfly 3.0


Butterfly is a xterm compatible terminal that runs in your browser.


  • xterm compatible (support a lot of unused features!)
  • Native browser scroll and search
  • Theming in css / sass (20 preset themes) endless possibilities!
  • HTML in your terminal! cat images and use <table>
  • Multiple sessions support (à la screen -x) to simultaneously access a terminal from several places on the planet!
  • Secure authentication with X509 certificates!
  • 16,777,216 colors support!
  • Keyboard text selection!
  • Desktop notifications on terminal output!
  • Geolocation from browser!
  • May work on firefox too!

Try it

$ pip install butterfly
$ pip install butterfly[themes]  # If you want to use themes
$ pip install butterfly[systemd]  # If you want to use systemd
$ butterfly

A new tab should appear in your browser. Then type

$ butterfly help

To get an overview of butterfly features.

Run it as a server

$ --host=myhost --port=57575

Or with login prompt

$ --host=myhost --port=57575 --login

Or with PAM authentication (ROOT required)

# --host=myhost --port=57575 --login --pam_profile=sshd

You can change sshd to your preferred PAM profile.

The first time it will ask you to generate the certificates (see: here)

Run it with systemd (linux)

Systemd provides a way to automatically activate daemons when needed (socket activation):

$ cd /etc/systemd/system
$ curl -O
$ curl -O
$ systemctl enable butterfly.socket
$ systemctl start butterfly.socket

Don’t forget to update the /etc/butterfly/butterfly.conf file with your server options (host, port, shell, …) and to install butterfly with the [systemd] flag.


and make the world better (or just butterfly).

Don’t hesitate to fork the repository and start hacking on it, I am very open to pull requests.

If you don’t know what to do go to the github issues and pick one you like.

If you want to motivate me to continue working on this project you can tip me, see:

Client side development use grunt and bower.


The js part is based on term.js which is based on jslinux.


Florian Mounier


butterfly Copyright (C) 2015-2017  Florian Mounier

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <>.


There is a docker repository created for this project that is set to automatically rebuild when there is a push into this repository:

Example usage

Starting with login and password

docker run --env PASSWORD=password -d garland/butterfly --login

Starting with no password

docker run -d -p 57575:57575 garland/butterfly

Starting with a different port

docker run -d -p 12345:12345 garland/butterfly --port=12345