Skip to main content

OmniTerm

A cross-platform terminal built with PyQt6. OmniTerm gives you SSH, serial, local, and Unix-like "Home" shell sessions in a tabbed interface, an integrated SFTP file browser, encrypted credential storage, a native terminal renderer, and a headless CLI for scripts and agents.

Features

  • Multiple session types — SSH (password or key auth), serial (configurable baud / data bits / parity / stop bits), local PTY shells, and a MobaXterm-style "Home" Unix shell.
  • Native terminal rendererpyte screen model drawn directly with QPainter (no embedded browser): smooth output, minimal input latency, true 256/true-color, and a real alternate-screen buffer for vi/htop/btop.
  • Tabbed sessions with a sidebar session tree (folders), drag-to-reorder, split view (2/4 panes), and saveable layouts.
  • Integrated SFTP browser that attaches automatically to SSH sessions: navigate, drag-and-drop, double-click a remote file to edit it locally and sync changes back, and transfer with a progress bar.
  • Shadow command prediction (opt-in) — inline suggestions of your next command from your own history; accept with Ctrl+F / End / →. Secrets are never suggested or stored.
  • Ergonomics — copy-on-select, full clipboard support, keyboard text selection, bracketed paste (clean pastes into vim), and Ctrl+wheel font zoom.
  • Encrypted credentials — passwords stored with Fernet encryption, optionally protected by a master password (PBKDF2-HMAC-SHA256).
  • Headless CLI (omniterm-cli) — drive sessions, remote command execution, and SFTP from scripts and agents without the GUI (see below).

Installation

pip install omniterm

Usage

Launch the GUI:

omniterm

Command-line interface (headless)

omniterm-cli controls OmniTerm's capabilities without the GUI — ideal for scripts, automation, and AI agents. It reuses the sessions you've saved in the app. Every command supports --json.

# Sessions
omniterm-cli session list --json
omniterm-cli session add prod --host example.com --user deploy \
    --auth key --key-path ~/.ssh/id_ed25519
omniterm-cli session show prod

# Run a remote command (captures stdout/stderr, propagates the exit code)
omniterm-cli exec prod "systemctl is-active nginx" --json

# SFTP
omniterm-cli sftp ls  prod /var/log --json
omniterm-cli sftp get prod /var/log/app.log ./
omniterm-cli sftp put prod ./build.tar.gz /tmp/

# Interactive REPL
omniterm-cli repl

Driving a running GUI

If the OmniTerm window is open, omniterm-cli ctl … controls it live over a token-authenticated localhost socket:

omniterm-cli ctl ping
omniterm-cli ctl open --type ssh --session prod
omniterm-cli ctl run     --tab 0 --text "uname -a"
omniterm-cli ctl capture --tab 0            # read the tab's output back
omniterm-cli ctl list-tabs --json

Set OMNITERM_NO_CONTROL=1 to disable the control socket.

For agent use, a SKILL.md describes the whole interface for discovery. The CLI imports no PyQt, so it runs anywhere — no display required.

Development

git clone https://github.com/fbobe321/omniterm
cd omniterm
pip install -e .
python -m omniterm.main          # GUI
python -m omniterm.cli --help    # CLI

# Tests (headless)
QT_QPA_PLATFORM=offscreen python -m pytest tests/

License

MIT — see LICENSE.

Download files

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

Source Distribution

omniterm-0.1.81.tar.gz (623.9 kB view details)

Uploaded Source

Built Distribution

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

omniterm-0.1.81-py3-none-any.whl (621.5 kB view details)

Uploaded Python 3

File details

Details for the file omniterm-0.1.81.tar.gz.

File metadata

  • Download URL: omniterm-0.1.81.tar.gz
  • Upload date:
  • Size: 623.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for omniterm-0.1.81.tar.gz
Algorithm Hash digest
SHA256 2c105c0b34589b0e4419545cc1862f86a56214d92df1b23c9312820b0905fab4
MD5 202663dee0f3c3c8b4663de23159f320
BLAKE2b-256 b8edccdad954e1fd0b63d1d83719277ffcc0318defb56fe19ac76a7a11321ebc

See more details on using hashes here.

File details

Details for the file omniterm-0.1.81-py3-none-any.whl.

File metadata

  • Download URL: omniterm-0.1.81-py3-none-any.whl
  • Upload date:
  • Size: 621.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for omniterm-0.1.81-py3-none-any.whl
Algorithm Hash digest
SHA256 2b63ce0a7ed8542190290bfd6d222b9b72aec7385ba3db1f6a87f088eae2875e
MD5 da82124b5378cc4033afb0cd3c67e518
BLAKE2b-256 f99564a10ca3a61bc8d151ab5f1dec6b92f4a7f4a2d72d36433e90ce24b3afb0

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.93

2 files

0.1.92

2 files

0.1.91

2 files

0.1.89

2 files

0.1.88

2 files

0.1.87

2 files

0.1.86

2 files

0.1.85

2 files

0.1.84

2 files

0.1.83

2 files

0.1.82

2 files

This release

0.1.81 This release

2 files

0.1.80

2 files

0.1.79

2 files

0.1.78

2 files

0.1.77

2 files

0.1.76

2 files

0.1.75

2 files

0.1.74

2 files

0.1.73

2 files

0.1.72

2 files

0.1.71

2 files

0.1.70

2 files

0.1.69

2 files

0.1.68

2 files

0.1.67

2 files

0.1.66

2 files

0.1.64

2 files

0.1.63

2 files

0.1.62

2 files

0.1.61

2 files

0.1.60

2 files

0.1.59

2 files

0.1.58

2 files

0.1.57

2 files

0.1.56

2 files

0.1.55

2 files

0.1.54

2 files

0.1.53

2 files

0.1.52

2 files

0.1.51

2 files

0.1.50

2 files

0.1.49

2 files

0.1.48

2 files

0.1.47

2 files

0.1.46

2 files

0.1.45

2 files

0.1.44

2 files

0.1.43

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

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