Skip to main content

Achilterm

Achilterm is a lightweight UTF-8 web based terminal.

https://raw.githubusercontent.com/fgallaire/achilterm/master/img/achilterm.png

Achilterm is written in Python (and some AJAX javascript for client side).

Achilterm is very simple to install on Linux, MacOS X, FreeBSD, Solaris, cygwin and any Unix that runs Python.

Achilterm is initially forked from Ajaxterm which was inspired by Anyterm.

Achilterm is developed by Florent Gallaire fgallaire@gmail.com.

Website: http://fgallaire.github.io/achilterm.

Download and Install

To install the last stable version from PyPI:

$ sudo pip install achilterm

To install the development version from GitHub:

$ git clone https://github.com/fgallaire/achilterm
$ cd achilterm
$ sudo python setup.py install

To run Achilterm after installation:

$ achilterm

To run Achilterm from the source without installation:

$ ./achilterm/achilterm.py

Then point your browser to this URL: http://localhost:8022/

Documentation and Caveats

  • Achilterm support Python 2.5 and above and Python 3.2 and above

  • Achilterm require WebOb >= 1.0

  • If run as root achilterm will run /bin/login, otherwise it will run ssh localhost. To use an other command use the -c option.

  • By default Achilterm only listen at 127.0.0.1:8022. For remote access, it is strongly recommended to use https SSL/TLS, and that is simple to configure if you use the apache web server using mod_proxy.

    Using ssl will also speed up achilterm (probably because of keepalive).

  • Using GET HTTP request seems to speed up achilterm, just click on GET in the interface, but be warned that your keystrokes might be loggued (by apache or any proxy). I usually enable it after the login.

Achiltermlite

Achiltermlite is a stripped-down client-side version of Achilterm.

https://raw.githubusercontent.com/fgallaire/achilterm/master/img/achiltermlite.png

Commandline usage

usage: achilterm [options]

options:
  --version                  show program's version number and exit
  -h, --help                 show this help message and exit
  -p PORT, --port=PORT       set the TCP port (default: 8022)
  -c CMD, --command=CMD      set the command (default: /bin/login or ssh localhost)
  -l, --log                  log requests to stderr (default: quiet mode)
  -d, --daemon               run as daemon in the background
  -P PIDFILE, --pidfile=PIDFILE
                            set the pidfile (default: /var/run/achilterm.pid)
  -i INDEX_FILE, --index=INDEX_FILE
                             default index file (default: achilterm.html)
  -u UID, --uid=UID          set the daemon's user id
  -L, --lite                 use Achiltermlite
  -w WIDTH, --width=WIDTH    set the width (default: 80)
  -H HEIGHT, --height=HEIGHT set the height (default: 25)

Configuration example

Listen 443
NameVirtualHost *:443

<VirtualHost *:443>
   ServerName localhost
   SSLEngine On
   SSLCertificateKeyFile ssl/apache.pem
   SSLCertificateFile ssl/apache.pem

   ProxyRequests Off
   <Proxy *>
           Order deny,allow
           Allow from all
   </Proxy>
   ProxyPass /achilterm/ http://localhost:8022/
   ProxyPassReverse /achilterm/ http://localhost:8022/
</VirtualHost>

Old versions

  • Achilterm 0.13 require Python 2.5 and above

Older Achilterm versions only support latin1, if you use Ubuntu or any LANG==en_US.UTF-8 distribution don’t forget to $ unset LANG:

  • Achilterm 0.12 require WebOb >= 1.2 (use it with Python 2.6 and 2.7)

  • Achilterm 0.11 require WebOb < 1.0 (use it with Python 2.5)

Compared to anyterm

  • There are no partial updates, achilterm updates either all the screen or nothing. That make the code simpler and I also think it’s faster. HTTP replies are always gzencoded. When used in 80x25 mode, almost all of them are below the 1500 bytes (size of an ethernet frame) and we just replace the screen with the reply (no javascript string handling).

  • Achilterm polls the server for updates with an exponentially growing timeout when the screen hasn’t changed. The timeout is also resetted as soon as a key is pressed. Anyterm blocks on a pending request and use a parallel connection for keypresses. The anyterm approch is better when there aren’t any keypress.

License

Achilterm files are released under the GNU AGPLv3 or above license.

Achilterm codebase from Ajaxterm by Antony Lesuisse (email: al AT udev.org), License Public Domain.

Metadata

Release files for Achilterm 0.21

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Achilterm 0.21
File Size Uploaded Provenance
Achilterm-0.21.tar.gz 106.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for Achilterm 0.21
File Interpreter ABI Platform
Achilterm-0.21-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 128.3 kB

Release files / Achilterm-0.21.tar.gz

Download URL Achilterm-0.21.tar.gz
Size 106.3 kB
Tags Source
SHA-256 checksum
How to use checksums
06a0a5134451364714aa65c5c19f3dcbbb98a9bd8bf599e2201abfe420c62c0a
BLAKE2b-256 checksum
How to use checksums
b84135e0b1bf58cf4cb55cdee49d4579cf927b4f7f862b4c574a6fcef35cc22d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / Achilterm-0.21-py2.py3-none-any.whl

Download URL Achilterm-0.21-py2.py3-none-any.whl
Size 22.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
c6d386583c8aea8a6e0e082a98e59644143be45a16369f45a4551725ca94af06
BLAKE2b-256 checksum
How to use checksums
11d30b879c80e1dfd72bcc08856b6074630ecbdaa568d2d595ca982199b577e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for Achilterm 0.21

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page