A PyQt6 terminal emulator with SSH and telemetry capabilities
Project description
TerminalTelemetry
TerminalTelemetry is a modern, cyberpunk-inspired terminal emulator and network telemetry platform built with PyQt6. It combines powerful SSH terminal capabilities with real-time network device monitoring in a sleek, themeable interface.
๐ฅ๏ธ Platform Requirements
TerminalTelemetry is a native desktop application - requires a graphical desktop environment (not for headless servers or web browsers).
Quick Installation
Application Entry Points
TerminalTelemetry provides two launcher commands:
termtel- Standard GUI launch (Windows:termtel.exe)termtel-con- Launch with console output (for debugging and troubleshooting)
Windows & macOS:
pip install TerminalTelemetry
termtel
Linux & WSL2:
โ ๏ธ Linux requires Qt6 system libraries first. Quick install for Ubuntu/Debian:
sudo apt install -y libqt6gui6t64 libqt6widgets6t64 libqt6core6t64 qt6-base-dev \
libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 \
libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxkbcommon-x11-0 \
libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libx11-xcb1 libgl1 libglib2.0-0t64
pip install TerminalTelemetry
termtel
๐ For other Linux distributions, WSL2 setup, and troubleshooting: Linux Installation Guide
Looking for a web-based tool? See Velociterm instead.
๐ Current Features
๐จ Advanced Theme System
- 24+ built-in themes (Cyberpunk, Nord, Gruvbox, Doom, Borland, Amiga, CRT-Green/Amber, and more)
- Dynamic JSON-based themes with hot-reload capability
- Live theme switching across all components without restart
- Per-tab theme customization via right-click context menu
- Individual terminal theming - different theme for each tab
- Theme editor with real-time preview and custom theme creation
- Consistent theming across terminals, telemetry widgets, and UI components
- Tab management with rename functionality and clean context menus
๐ฅ๏ธ Multi-Session Terminal Environment
- Tabbed SSH terminals with xterm.js backend
- Session management with YAML-based configuration
- Per-tab customization - individual themes and renamed tab labels
- Context menu controls - close, rename, and theme individual tabs
- Quick Connect interface for rapid device access
- Cross-platform terminal support (Windows, macOS, Linux)
๐ Real-Time Network Telemetry
- Live device monitoring via SSH (no SNMP required)
- Multi-vendor support (Cisco IOS/IOS-XE/NX-OS, Arista EOS, Linux)
- Real-time data collection:
- System information (hostname, version, uptime, hardware)
- CPU and memory utilization with progress bars
- CDP/LLDP neighbor discovery
- ARP table monitoring
- Routing table with VRF support
- Live system log streaming
- Threaded data collection keeps UI responsive
- Template-based parsing with 200+ TextFSM templates
- CSV export for all telemetry data tables
๐ง Template System & Customization
- Built-in template editor with syntax highlighting
- 200+ pre-configured TextFSM templates for network devices
- Live template testing against real device output
- Field mapping validation with coverage reports
- Template debugging with detailed error reporting
- Package resource management - templates included in installation
๐ Enterprise Security
- Encrypted credential storage with Fernet (AES-128-CBC) + HMAC
- PBKDF2-HMAC-SHA256 key derivation (480,000 iterations)
- SSH key authentication ๐
- Automatic private key detection from
~/.ssh/ - Support for RSA, ED25519, ECDSA, DSS key types
- Config-based key management (
~/.ssh_manager/keys.json) - Per-session key preferences with persistent settings
- Automatic private key detection from
- Platform-specific secure storage locations
- Machine-specific credential binding
- Rate-limited authentication prevents brute force
- Zero plaintext storage of sensitive data
๐ Session Import Tools
- NetBox Integration:
- Import devices directly from NetBox instances
- Site-based organization and grouping
- Automatic credential mapping
- LogicMonitor Integration:
- SDK-based device discovery
- Progress feedback and error handling
- SSL certificate validation support
๐งฐ Built-in Tools
- Text Editor with syntax highlighting
- Diff Tool for configuration comparison
- Serial Terminal for console connections
- Space Debris & Doom - Demonstrates the framework's capability as a general-purpose tool delivery platform. The terminal application's architecture is designed to host any PyQt6 or web-based component, making it easy to extend with custom tools and utilities.
๐๏ธ Architecture Highlights
SSH-Only Monitoring
- Works with any SSH-accessible device
- No agent installation required on target devices
- Leverages existing SSH credentials
- Zero infrastructure - no monitoring servers or databases needed
Template-Driven Parsing
- 200+ TextFSM templates packaged with the application
- Live template editing with syntax highlighting and testing
- Field normalization across different vendors
- Package resource system - templates accessible in any environment
- User-customizable - fix parsing issues yourself
Extensible Desktop Platform
- Qt6-based UI with native performance
- Threaded data collection prevents UI blocking
- Signal-based communication between components
- Modular widget system - easily add new tools and features
- Package-aware resource management for pip installations
- Tab-based interface can host any PyQt6 widget or web content
๐ฏ Getting Started
Quick Start
- Install via pip:
pip install TerminalTelemetry - Launch:
termtel - Create SSH sessions via File โ Open Sessions or use Quick Connect
- Open Telemetry Dashboard via Tools โ Telemetry Dashboard
- Connect to devices and view real-time monitoring data
- Customize themes via View โ Theme menu and Theme Editor
Note for Windows users: After installation, you can create a desktop shortcut to venv\Scripts\termtel.exe for easier access.
First Device Connection
- Click "Quick Connect" in the bottom panel
- Enter device IP, credentials, and select platform (cisco_ios, arista_eos, etc.)
- Click "Connect" - terminal tab opens automatically
- Open Tools โ Telemetry Dashboard to see real-time monitoring
- Use the gear buttons in widgets to customize TextFSM templates
Theme Customization
- Global themes: Use View โ Theme menu to change all components
- Individual tab themes: Right-click any tab label โ Terminal Theme โ select theme
- Custom themes: Use View โ Theme โ Theme Editor to create new themes
- Theme files: Drop JSON theme files in the
~/.termtel/themes/directory for instant availability
Template Customization
- Connect to a device and open telemetry dashboard
- Click the โ๏ธ gear button on any widget (neighbors, routes, etc.)
- Template editor opens with current template and sample data
- Edit template using TextFSM syntax
- Click "RUN TEST" to validate against live device output
- Save template - changes apply immediately
๐ก Supported Platforms
Full Support (Complete Telemetry Dashboard)
- Cisco IOS/IOS-XE: System info, CDP neighbors, ARP table, routing table, CPU/memory utilization, system logs, VRF support
Partial Support (Basic Telemetry)
- Cisco NX-OS: System info, CDP neighbors, ARP table, routing table, VRF support (missing CPU/memory/logs)
- Arista EOS: System info, LLDP neighbors, ARP table, routing table, CPU/memory, temperature, logs, VRF support (uses LLDP instead of CDP)
Basic Support (Limited Telemetry)
- Aruba AOS-S/CX: System info, LLDP neighbors, ARP table, routing table (missing CPU/memory/logs)
- HP ProCurve: System info, LLDP neighbors, ARP table, routing table (legacy switch support)
- Juniper JunOS: System info, LLDP neighbors, ARP table (minimal support)
- Linux: System info, ARP table, routing table (basic networking commands)
Template Coverage
Based on your actual TextFSM template library:
- 200+ templates total across all vendors
- Cisco IOS: 100+ templates (most comprehensive)
- Arista EOS: 45+ templates (good coverage)
- Cisco NX-OS: 15+ templates (basic coverage)
- HP ProCurve: 7 templates (legacy support)
- Juniper JunOS: 3 templates (minimal)
- Linux: Basic networking templates
- Aruba: Basic switch templates
โ ๏ธ Known Issues & Limitations
Known Platform Limitations
- Cisco NX-OS: Missing CPU/memory utilization and system log templates
- Aruba platforms: No CPU/memory monitoring templates available
- HP ProCurve: Legacy platform with limited template coverage
- Juniper JunOS: Minimal template support (contributions welcome)
- Linux: Basic networking only (no system monitoring templates)
Template Coverage Notes
- Cisco IOS/IOS-XE has the most comprehensive template coverage
- Arista EOS has good coverage but uses LLDP instead of CDP for neighbors
- Other platforms have basic connectivity but may lack advanced telemetry features
- Missing templates can be created using the built-in template editor
Current Application Limitations
- Single-device monitoring per telemetry tab (multi-device dashboard planned)
- No historical data storage (trending features planned)
- Template editor requires platform connection for live testing
๐บ๏ธ Planned Features & Roadmap
Near Term (v0.16-0.17)
- Multi-device dashboards for network-wide monitoring
- Historical data collection with basic trending graphs
- Enhanced error handling and automatic reconnection
- Template sharing and import/export functionality
- Custom command execution with ad-hoc template creation
Medium Term (v0.18-0.20)
- Network topology discovery and visualization
- Configuration backup and change detection
- Alert system for threshold monitoring
- Plugin architecture for community extensions
- REST API for external integrations
Long Term (v1.0+)
- Distributed monitoring across multiple instances
- Community template repository with automatic updates
- Advanced analytics and machine learning insights
- Mobile companion app for alerts and basic monitoring
๐ง Technical Architecture
Data Flow
SSH Connection โ Command Execution โ TextFSM Parsing โ Field Normalization โ UI Display
โ โ โ โ โ
netmiko show commands Package Templates Platform Maps PyQt6 Widgets
Key Components
- Resource Manager: Package-aware template and config loading
- Platform Config Manager: JSON-driven platform definitions
- Threaded Telemetry Controller: Non-blocking data collection
- Template Editor: Live template editing and testing
- Theme System: JSON-based UI customization
- Modular Tab System: Extensible framework for hosting custom tools and widgets
Security Architecture
- Credential encryption using Fernet with PBKDF2 key derivation
- SSH key authentication with automatic key detection
- No network exposure - purely SSH client connections
- Local data storage with machine-specific encryption keys
- Memory-safe credential handling with automatic cleanup
๐ค Contributing
Bug Reports
Found an issue? Please report it with:
- Device platform and software version
- Command output that failed to parse
- Steps to reproduce the issue
- Expected vs actual behavior
Template Contributions
- Use the built-in template editor to create/fix templates
- Test against multiple software versions when possible
- Follow TextFSM best practices for field naming
- Submit templates for new platforms or commands
Development Setup
git clone https://github.com/scottpeterman/terminaltelemetry.git
cd terminaltelemetry
pip install -e .
# Edit code, templates, themes
python -m pytest tests/ # Run tests
๐ธ Screenshots
Main Interface with Cyberpunk Theme
Terminal sessions alongside real-time telemetry monitoring
Multi-Vendor Telemetry Dashboard
Live monitoring of Cisco devices showing neighbors, ARP, routing, and system metrics
Template Editor
Real-time template customization with live preview
๐ License
TerminalTelemetry is licensed under the GPLv3 License. See the LICENSE file for details.
๐ Acknowledgments
- Built on PyQt6 and the Python ecosystem
- Network automation powered by netmiko and TextFSM
- Terminal functionality via xterm.js
- Template system inspired by ntc-templates
- Packaging system using modern Python setuptools
- Inspired by cyberpunk aesthetics and retro computing
๐ Support & Community
- GitHub Issues: Bug reports and feature requests
- GitHub Repository: https://github.com/scottpeterman/terminaltelemetry
- Documentation: Comprehensive guides and API reference
- Template Library: Community-contributed TextFSM templates
๐ Version History
v0.15.0 (Current - October 2025)
- โ SSH key authentication - Passwordless authentication with auto-detection
- โ 24+ themes - Expanded theme library with vintage and retro options
- โ Package resource system - pip installable with embedded templates
- โ Template editor integration - live editing and testing
- โ CSV export functionality for all telemetry tables
- โ Enhanced platform support with JSON configuration
- โ Threaded telemetry collection for responsive UI
- โ Improved error handling and connection management
"The best network monitoring tool is the one that gets out of your way and shows you what you need to know."
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file terminaltelemetry-1.0.0-py3-none-any.whl.
File metadata
- Download URL: terminaltelemetry-1.0.0-py3-none-any.whl
- Upload date:
- Size: 23.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b9df53838e65e123fe19b089c9c8a8d0ef7696017bc96f85a8fb17c5e9f24a8
|
|
| MD5 |
16eca827c16988d85febcc7014ff9533
|
|
| BLAKE2b-256 |
8ca60c624f4cfd476158d153033a67bf83f09c25b2483915d0bb795d7934ad42
|