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.
🚀 Installation
PyPI Installation (Recommended)
pip install TerminalTelemetry
termtel-con
termtel
Development Installation
git clone https://github.com/scottpeterman/terminaltelemetry.git
cd terminaltelemetry
pip install -e .
termtel
Prerequisites
- Python 3.9+
- PyQt6, netmiko, textfsm (automatically installed with pip)
Current Features
🎨 Advanced Theme System
- 20+ built-in themes (Cyberpunk, Dark Mode, Retro Green, Neon Blue, etc.)
- 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)
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
- Right-click tab labels to rename tabs or set individual themes
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
themes/directory for instant availability
🖥️ Multi-Session Terminal Environment
- Tabbed SSH terminals with xterm.js backend
- Session management with YAML-based configuration
- 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)
- 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 Productivity Tools
- Text Editor with syntax highlighting
- Diff Tool for configuration comparison
- Space Debris Game (Asteroids clone)
- Doom (WebAssembly port)
- Serial Terminal for console connections
Architecture Highlights
SSH-Only Monitoring
- Universal compatibility - works with any SSH-accessible device
- No agent installation required on target devices
- Leverages existing access - uses SSH credentials you already have
- 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
Modern Desktop Architecture
- Qt6-based UI with native performance
- Threaded data collection prevents UI blocking
- Signal-based communication between components
- Modular widget system for easy extension
- Package-aware resource management for pip installations
Getting Started
Quick Start
- Install via pip:
pip install TerminalTelemetry - Launch:
termtel-con- themes will bootstrap
- run
termtelortermtel-con - For Windows, venv\Scripts will contain .exe files you can create shortcuts to termtel.exe to feel more native.
- 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
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
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
Why This Approach Works
Superior to Commercial Tools
- No vendor lock-in - works with any SSH device
- Instant deployment -
pip installand run anywhere - Full customization - templates, themes, everything is editable
- Cost effective - no licensing fees or subscription costs
- Engineer friendly - shows actual commands and output
- Self-contained - no external dependencies or servers
Network Engineer Workflow
- Uses familiar SSH access you already have configured
- Command-line transparency - see exactly what commands are run
- Template debugging - fix parsing issues when vendors change output
- Portable - runs on your laptop without server infrastructure
- Export capability - CSV export for further analysis
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.11-0.12)
- 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.13-0.15)
- 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
Security Architecture
- Credential encryption using Fernet with PBKDF2 key derivation
- 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
- Documentation: Comprehensive guides and API reference
- Template Library: Community-contributed TextFSM templates
"The best network monitoring tool is the one that gets out of your way and shows you what you need to know."
Version History
v0.10.0 (Current)
- ✅ 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
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-0.12.3-py3-none-any.whl.
File metadata
- Download URL: terminaltelemetry-0.12.3-py3-none-any.whl
- Upload date:
- Size: 23.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c427a241292c33a86e402bd9d4240126067f798169dafb2130cb40231b6d2e4
|
|
| MD5 |
bf2c51e06cdaf5cd1af5e60df33f5207
|
|
| BLAKE2b-256 |
d85878c2d579140e70654921c6e78cca14ff323d825a2ca1a1a030723f348acc
|