Skip to main content

Torrus

Torrus

A web-based SSH terminal that works behind any reverse proxy. Install it, run it, use it.

Features

  • Web-based SSH terminal with full xterm.js emulation
  • SFTP file browser — upload, download, rename, delete files directly from the browser
  • Multi-tab support — open multiple SSH sessions side by side, close all at once
  • Tab management — right-click to rename, clone, duplicate, or save a tab as a session
  • Keyboard shortcutsCtrl+T new tab, Ctrl+W close tab, Ctrl+Tab cycle tabs, Ctrl+, settings
  • Saved servers — save, edit, import, and export connection configs
  • Works behind reverse proxies — uses Socket.IO for reliable transport
  • Session sidebar — quick-connect to saved servers
  • LDAP/AD authentication — optional, via ldapgate

Install

pip install torrus

Usage

torrus serve

Opens the terminal in your browser. Connect to any SSH server from there.

Options:

--host TEXT          Bind host. [default: 127.0.0.1]
--port INTEGER       Bind port. [default: 8080]
--no-browser         Don't open the browser automatically.
--ldap-config PATH   Path to ldapgate YAML config to enable LDAP authentication.

LDAP Authentication

Torrus can require users to log in via LDAP/AD before accessing the terminal. This uses ldapgate as FastAPI middleware — no separate proxy process needed.

pip install 'torrus[ldap]'
torrus serve --ldap-config /path/to/ldapgate.yaml

When LDAP is enabled, a logout button appears in the top-right corner of the tab bar.

See the ldapgate README for config file documentation.

Terminal input audit

LDAP deployments persist every raw terminal-input chunk, including individual keystrokes and pasted text. It intentionally does not record terminal output or the password supplied while opening an SSH connection. Audit data is stored at ~/.local/share/torrus/audit.db by default (or TORRUS_AUDIT_DB when set).

torrus audit show --user alice
torrus audit purge --older-than 90

audit show escapes control characters so viewing an event cannot replay its terminal escape sequences. Restrict access to the audit database: raw input may include commands, secrets pasted at a prompt, and other sensitive content.

Development

Requires uv.

git clone https://github.com/anudeepd/torrus
cd torrus
uv sync
make dev

License

MIT

Download files

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

Source Distribution

torrus-0.2.1.tar.gz (598.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torrus-0.2.1-py3-none-any.whl (578.8 kB view details)

Uploaded Python 3

File details

Details for the file torrus-0.2.1.tar.gz.

File metadata

  • Download URL: torrus-0.2.1.tar.gz
  • Upload date:
  • Size: 598.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for torrus-0.2.1.tar.gz
Algorithm Hash digest
SHA256 88bfd7f66fef254c9c550e45d89b639b55d2956c5d11d9ce730aa1f1a6ebf4ae
MD5 83a4dca00b0560f72082ad5c7e8f3f80
BLAKE2b-256 232d50995401f97ec2c411345f69f5bb40cadc11adc7f4004213c32675e224cf

See more details on using hashes here.

File details

Details for the file torrus-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: torrus-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 578.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for torrus-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 900f91ba8e7b3e3ca8f0cd67f10f328b5b2a9aee097f8e24308660725dfcd4a1
MD5 027353ac373f55ed4b471b12cb2b8087
BLAKE2b-256 5235d292cbad3ae61d7ccac229aa53ce696de269f143f503843f263f7479c020

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.43

2 files

0.2.42

2 files

0.2.41

2 files

0.2.40

2 files

0.2.39

2 files

0.2.38

2 files

0.2.37

2 files

0.2.36

2 files

0.2.35

2 files

0.2.34

2 files

0.2.33

2 files

0.2.32

2 files

0.2.31

2 files

0.2.30

2 files

0.2.29

2 files

0.2.28

2 files

0.2.27

2 files

0.2.26

2 files

0.2.25

2 files

0.2.24

2 files

0.2.23

2 files

0.2.22

2 files

0.2.21

2 files

0.2.20

2 files

0.2.19

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.42

2 files

0.1.41

2 files

0.1.40

2 files

0.1.39

2 files

0.1.38

2 files

0.1.37

2 files

0.1.36

2 files

0.1.35

2 files

0.1.34

2 files

0.1.33

2 files

0.1.32

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

2 files

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page