# 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:**
```bash
pip install TerminalTelemetry
termtel
```
**Linux & WSL2:**
β οΈ **Linux requires Qt6 system libraries first.** Quick install for Ubuntu/Debian:
```bash
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](README_Linux_Desktops.md)
> **Looking for a web-based tool?** See [Velociterm](https://github.com/scottpeterman/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
- **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
1. **Install via pip**: `pip install TerminalTelemetry`
2. **Launch**: `termtel`
3. **Create SSH sessions** via File β Open Sessions or use Quick Connect
4. **Open Telemetry Dashboard** via Tools β Telemetry Dashboard
5. **Connect to devices** and view real-time monitoring data
6. **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
1. Click **"Quick Connect"** in the bottom panel
2. Enter device IP, credentials, and select platform (cisco_ios, arista_eos, etc.)
3. Click **"Connect"** - terminal tab opens automatically
4. Open **Tools β Telemetry Dashboard** to see real-time monitoring
5. 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
1. Connect to a device and open telemetry dashboard
2. Click the **βοΈ gear button** on any widget (neighbors, routes, etc.)
3. **Template editor opens** with current template and sample data
4. **Edit template** using TextFSM syntax
5. **Click "RUN TEST"** to validate against live device output
6. **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**
```bash
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."*
Raw data
{
"_id": null,
"home_page": "https://github.com/scottpeterman/terminaltelemetry",
"name": "TerminalTelemetry",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "terminal ssh telemetry network monitoring pyqt6 netmiko textfsm",
"author": "Scott Peterman",
"author_email": "scottpeterman@gmail.com",
"download_url": null,
"platform": null,
"description": "# TerminalTelemetry\r\n\r\n\r\n\r\n\r\n\r\n\r\n**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.\r\n\r\n---\r\n\r\n## \ud83d\udda5\ufe0f Platform Requirements\r\n\r\n**TerminalTelemetry is a native desktop application** - requires a graphical desktop environment (not for headless servers or web browsers).\r\n\r\n### Quick Installation\r\n\r\n#### Application Entry Points\r\nTerminalTelemetry provides two launcher commands:\r\n- **`termtel`** - Standard GUI launch (Windows: `termtel.exe`)\r\n- **`termtel-con`** - Launch with console output (for debugging and troubleshooting)\r\n\r\n---\r\n\r\n**Windows & macOS:**\r\n```bash\r\npip install TerminalTelemetry\r\ntermtel\r\n```\r\n\r\n**Linux & WSL2:**\r\n\r\n\u26a0\ufe0f **Linux requires Qt6 system libraries first.** Quick install for Ubuntu/Debian:\r\n```bash\r\nsudo apt install -y libqt6gui6t64 libqt6widgets6t64 libqt6core6t64 qt6-base-dev \\\r\n libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 \\\r\n libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxkbcommon-x11-0 \\\r\n libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libx11-xcb1 libgl1 libglib2.0-0t64\r\n\r\npip install TerminalTelemetry\r\ntermtel\r\n```\r\n\r\n**\ud83d\udcd8 For other Linux distributions, WSL2 setup, and troubleshooting:** [Linux Installation Guide](README_Linux_Desktops.md)\r\n\r\n> **Looking for a web-based tool?** See [Velociterm](https://github.com/scottpeterman/velociterm) instead.\r\n\r\n---\r\n\r\n## \ud83d\ude80 Current Features\r\n\r\n### \ud83c\udfa8 **Advanced Theme System**\r\n- **24+ built-in themes** (Cyberpunk, Nord, Gruvbox, Doom, Borland, Amiga, CRT-Green/Amber, and more)\r\n- **Dynamic JSON-based themes** with hot-reload capability\r\n- **Live theme switching** across all components without restart\r\n- **Per-tab theme customization** via right-click context menu\r\n- **Individual terminal theming** - different theme for each tab\r\n- **Theme editor** with real-time preview and custom theme creation\r\n- **Consistent theming** across terminals, telemetry widgets, and UI components\r\n- **Tab management** with rename functionality and clean context menus\r\n\r\n### \ud83d\udda5\ufe0f **Multi-Session Terminal Environment**\r\n- **Tabbed SSH terminals** with xterm.js backend\r\n- **Session management** with YAML-based configuration\r\n- **Per-tab customization** - individual themes and renamed tab labels\r\n- **Context menu controls** - close, rename, and theme individual tabs\r\n- **Quick Connect** interface for rapid device access\r\n- **Cross-platform terminal support** (Windows, macOS, Linux)\r\n\r\n### \ud83d\udcca **Real-Time Network Telemetry**\r\n- **Live device monitoring** via SSH (no SNMP required)\r\n- **Multi-vendor support** (Cisco IOS/IOS-XE/NX-OS, Arista EOS, Linux)\r\n- **Real-time data collection**:\r\n - System information (hostname, version, uptime, hardware)\r\n - CPU and memory utilization with progress bars\r\n - CDP/LLDP neighbor discovery\r\n - ARP table monitoring\r\n - Routing table with VRF support\r\n - Live system log streaming\r\n- **Threaded data collection** keeps UI responsive\r\n- **Template-based parsing** with 200+ TextFSM templates\r\n- **CSV export** for all telemetry data tables\r\n\r\n### \ud83d\udd27 **Template System & Customization**\r\n- **Built-in template editor** with syntax highlighting\r\n- **200+ pre-configured TextFSM templates** for network devices\r\n- **Live template testing** against real device output\r\n- **Field mapping validation** with coverage reports\r\n- **Template debugging** with detailed error reporting\r\n- **Package resource management** - templates included in installation\r\n\r\n### \ud83d\udd12 **Enterprise Security**\r\n- **Encrypted credential storage** with Fernet (AES-128-CBC) + HMAC\r\n- **PBKDF2-HMAC-SHA256** key derivation (480,000 iterations)\r\n- \r\n- **SSH key authentication** \ud83c\udd95\r\n - Automatic private key detection from `~/.ssh/`\r\n - Support for RSA, ED25519, ECDSA, DSS key types\r\n - Config-based key management (`~/.ssh_manager/keys.json`)\r\n - Per-session key preferences with persistent settings\r\n- **Platform-specific secure storage** locations\r\n- **Machine-specific credential binding**\r\n- **Rate-limited authentication** prevents brute force\r\n- **Zero plaintext storage** of sensitive data\r\n\r\n\r\n### \ud83d\ude80 **Session Import Tools**\r\n- **NetBox Integration**:\r\n - Import devices directly from NetBox instances\r\n - Site-based organization and grouping\r\n - Automatic credential mapping\r\n- **LogicMonitor Integration**:\r\n - SDK-based device discovery\r\n - Progress feedback and error handling\r\n - SSL certificate validation support\r\n\r\n### \ud83e\uddf0 **Built-in Tools**\r\n- **Text Editor** with syntax highlighting\r\n- **Diff Tool** for configuration comparison\r\n- **Serial Terminal** for console connections\r\n- **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.\r\n\r\n---\r\n\r\n## \ud83c\udfd7\ufe0f Architecture Highlights\r\n\r\n### **SSH-Only Monitoring**\r\n- Works with any SSH-accessible device\r\n- No agent installation required on target devices\r\n- Leverages existing SSH credentials\r\n- Zero infrastructure - no monitoring servers or databases needed\r\n\r\n### **Template-Driven Parsing**\r\n- 200+ TextFSM templates packaged with the application\r\n- Live template editing with syntax highlighting and testing\r\n- Field normalization across different vendors\r\n- Package resource system - templates accessible in any environment\r\n- User-customizable - fix parsing issues yourself\r\n\r\n### **Extensible Desktop Platform**\r\n- Qt6-based UI with native performance\r\n- Threaded data collection prevents UI blocking\r\n- Signal-based communication between components\r\n- Modular widget system - easily add new tools and features\r\n- Package-aware resource management for pip installations\r\n- Tab-based interface can host any PyQt6 widget or web content\r\n\r\n---\r\n\r\n## \ud83c\udfaf Getting Started\r\n\r\n### Quick Start\r\n1. **Install via pip**: `pip install TerminalTelemetry`\r\n2. **Launch**: `termtel`\r\n3. **Create SSH sessions** via File \u2192 Open Sessions or use Quick Connect\r\n4. **Open Telemetry Dashboard** via Tools \u2192 Telemetry Dashboard\r\n5. **Connect to devices** and view real-time monitoring data\r\n6. **Customize themes** via View \u2192 Theme menu and Theme Editor\r\n\r\n**Note for Windows users:** After installation, you can create a desktop shortcut to `venv\\Scripts\\termtel.exe` for easier access.\r\n\r\n### First Device Connection\r\n1. Click **\"Quick Connect\"** in the bottom panel\r\n2. Enter device IP, credentials, and select platform (cisco_ios, arista_eos, etc.)\r\n3. Click **\"Connect\"** - terminal tab opens automatically\r\n4. Open **Tools \u2192 Telemetry Dashboard** to see real-time monitoring\r\n5. Use the **gear buttons** in widgets to customize TextFSM templates\r\n\r\n### Theme Customization\r\n- **Global themes**: Use View \u2192 Theme menu to change all components\r\n- **Individual tab themes**: Right-click any tab label \u2192 Terminal Theme \u2192 select theme\r\n- **Custom themes**: Use View \u2192 Theme \u2192 Theme Editor to create new themes\r\n- **Theme files**: Drop JSON theme files in the `~/.termtel/themes/` directory for instant availability\r\n\r\n### Template Customization\r\n1. Connect to a device and open telemetry dashboard\r\n2. Click the **\u2699\ufe0f gear button** on any widget (neighbors, routes, etc.)\r\n3. **Template editor opens** with current template and sample data\r\n4. **Edit template** using TextFSM syntax\r\n5. **Click \"RUN TEST\"** to validate against live device output\r\n6. **Save template** - changes apply immediately\r\n\r\n---\r\n\r\n## \ud83d\udce1 Supported Platforms\r\n\r\n### **Full Support (Complete Telemetry Dashboard)**\r\n- **Cisco IOS/IOS-XE**: System info, CDP neighbors, ARP table, routing table, CPU/memory utilization, system logs, VRF support\r\n\r\n### **Partial Support (Basic Telemetry)**\r\n- **Cisco NX-OS**: System info, CDP neighbors, ARP table, routing table, VRF support *(missing CPU/memory/logs)*\r\n- **Arista EOS**: System info, LLDP neighbors, ARP table, routing table, CPU/memory, temperature, logs, VRF support *(uses LLDP instead of CDP)*\r\n\r\n### **Basic Support (Limited Telemetry)**\r\n- **Aruba AOS-S/CX**: System info, LLDP neighbors, ARP table, routing table *(missing CPU/memory/logs)*\r\n- **HP ProCurve**: System info, LLDP neighbors, ARP table, routing table *(legacy switch support)*\r\n- **Juniper JunOS**: System info, LLDP neighbors, ARP table *(minimal support)*\r\n- **Linux**: System info, ARP table, routing table *(basic networking commands)*\r\n\r\n### **Template Coverage**\r\nBased on your actual TextFSM template library:\r\n- **200+ templates total** across all vendors\r\n- **Cisco IOS**: 100+ templates (most comprehensive)\r\n- **Arista EOS**: 45+ templates (good coverage)\r\n- **Cisco NX-OS**: 15+ templates (basic coverage)\r\n- **HP ProCurve**: 7 templates (legacy support)\r\n- **Juniper JunOS**: 3 templates (minimal)\r\n- **Linux**: Basic networking templates\r\n- **Aruba**: Basic switch templates\r\n\r\n---\r\n\r\n## \u26a0\ufe0f Known Issues & Limitations\r\n\r\n### **Known Platform Limitations**\r\n- **Cisco NX-OS**: Missing CPU/memory utilization and system log templates\r\n- **Aruba platforms**: No CPU/memory monitoring templates available \r\n- **HP ProCurve**: Legacy platform with limited template coverage\r\n- **Juniper JunOS**: Minimal template support (contributions welcome)\r\n- **Linux**: Basic networking only (no system monitoring templates)\r\n\r\n### **Template Coverage Notes**\r\n- **Cisco IOS/IOS-XE** has the most comprehensive template coverage\r\n- **Arista EOS** has good coverage but uses LLDP instead of CDP for neighbors\r\n- Other platforms have basic connectivity but may lack advanced telemetry features\r\n- Missing templates can be created using the built-in template editor\r\n\r\n### **Current Application Limitations**\r\n- Single-device monitoring per telemetry tab (multi-device dashboard planned)\r\n- No historical data storage (trending features planned)\r\n- Template editor requires platform connection for live testing\r\n\r\n---\r\n\r\n## \ud83d\uddfa\ufe0f Planned Features & Roadmap\r\n\r\n### **Near Term (v0.16-0.17)**\r\n- Multi-device dashboards for network-wide monitoring\r\n- Historical data collection with basic trending graphs\r\n- Enhanced error handling and automatic reconnection\r\n- Template sharing and import/export functionality\r\n- Custom command execution with ad-hoc template creation\r\n\r\n### **Medium Term (v0.18-0.20)**\r\n- Network topology discovery and visualization\r\n- Configuration backup and change detection\r\n- Alert system for threshold monitoring\r\n- Plugin architecture for community extensions\r\n- REST API for external integrations\r\n\r\n### **Long Term (v1.0+)**\r\n- Distributed monitoring across multiple instances\r\n- Community template repository with automatic updates\r\n- Advanced analytics and machine learning insights\r\n- Mobile companion app for alerts and basic monitoring\r\n\r\n---\r\n\r\n## \ud83d\udd27 Technical Architecture\r\n\r\n### **Data Flow**\r\n```\r\nSSH Connection \u2192 Command Execution \u2192 TextFSM Parsing \u2192 Field Normalization \u2192 UI Display\r\n \u2193 \u2193 \u2193 \u2193 \u2193\r\n netmiko show commands Package Templates Platform Maps PyQt6 Widgets\r\n```\r\n\r\n### **Key Components**\r\n- **Resource Manager**: Package-aware template and config loading\r\n- **Platform Config Manager**: JSON-driven platform definitions\r\n- **Threaded Telemetry Controller**: Non-blocking data collection\r\n- **Template Editor**: Live template editing and testing\r\n- **Theme System**: JSON-based UI customization\r\n- **Modular Tab System**: Extensible framework for hosting custom tools and widgets\r\n\r\n### **Security Architecture**\r\n- **Credential encryption** using Fernet with PBKDF2 key derivation\r\n- **SSH key authentication** with automatic key detection\r\n- **No network exposure** - purely SSH client connections\r\n- **Local data storage** with machine-specific encryption keys\r\n- **Memory-safe** credential handling with automatic cleanup\r\n\r\n---\r\n\r\n## \ud83e\udd1d Contributing\r\n\r\n### **Bug Reports**\r\nFound an issue? Please report it with:\r\n- Device platform and software version\r\n- Command output that failed to parse\r\n- Steps to reproduce the issue\r\n- Expected vs actual behavior\r\n\r\n### **Template Contributions**\r\n- Use the built-in template editor to create/fix templates\r\n- Test against multiple software versions when possible\r\n- Follow TextFSM best practices for field naming\r\n- Submit templates for new platforms or commands\r\n\r\n### **Development Setup**\r\n```bash\r\ngit clone https://github.com/scottpeterman/terminaltelemetry.git\r\ncd terminaltelemetry\r\npip install -e .\r\n# Edit code, templates, themes\r\npython -m pytest tests/ # Run tests\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udcf8 Screenshots\r\n\r\n### Main Interface with Cyberpunk Theme\r\n*Terminal sessions alongside real-time telemetry monitoring*\r\n\r\n### Multi-Vendor Telemetry Dashboard\r\n*Live monitoring of Cisco devices showing neighbors, ARP, routing, and system metrics*\r\n\r\n### Template Editor\r\n*Real-time template customization with live preview*\r\n\r\n---\r\n\r\n## \ud83d\udcc4 License\r\n\r\nTerminalTelemetry is licensed under the GPLv3 License. See the LICENSE file for details.\r\n\r\n---\r\n\r\n## \ud83d\ude4f Acknowledgments\r\n\r\n- Built on PyQt6 and the Python ecosystem\r\n- Network automation powered by netmiko and TextFSM\r\n- Terminal functionality via xterm.js\r\n- Template system inspired by ntc-templates\r\n- Packaging system using modern Python setuptools\r\n- Inspired by cyberpunk aesthetics and retro computing\r\n\r\n---\r\n\r\n## \ud83d\udcda Support & Community\r\n\r\n- **GitHub Issues**: Bug reports and feature requests\r\n- **GitHub Repository**: https://github.com/scottpeterman/terminaltelemetry\r\n- **Documentation**: Comprehensive guides and API reference \r\n- **Template Library**: Community-contributed TextFSM templates\r\n\r\n---\r\n\r\n## \ud83d\udccb Version History\r\n\r\n### v0.15.0 (Current - October 2025)\r\n- \u2705 **SSH key authentication** - Passwordless authentication with auto-detection\r\n- \u2705 **24+ themes** - Expanded theme library with vintage and retro options\r\n- \u2705 **Package resource system** - pip installable with embedded templates\r\n- \u2705 **Template editor integration** - live editing and testing\r\n- \u2705 **CSV export functionality** for all telemetry tables\r\n- \u2705 **Enhanced platform support** with JSON configuration\r\n- \u2705 **Threaded telemetry collection** for responsive UI\r\n- \u2705 **Improved error handling** and connection management\r\n\r\n---\r\n\r\n*\"The best network monitoring tool is the one that gets out of your way and shows you what you need to know.\"*\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A PyQt6 terminal emulator with SSH and telemetry capabilities",
"version": "1.1.0",
"project_urls": {
"Homepage": "https://github.com/scottpeterman/terminaltelemetry",
"Source": "https://github.com/scottpeterman/terminaltelemetry"
},
"split_keywords": [
"terminal",
"ssh",
"telemetry",
"network",
"monitoring",
"pyqt6",
"netmiko",
"textfsm"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1a1ec4561ababbbe99e99fde6f747b5a28f75d2104f1a15f84e323b4240c857b",
"md5": "3d26988f6972ed4fc4b392f43267b6fe",
"sha256": "bad7d99b1d6b6b154832f2528cdf3810b30ed78bbd4a7ef76f4cb7a0346488ac"
},
"downloads": -1,
"filename": "terminaltelemetry-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3d26988f6972ed4fc4b392f43267b6fe",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 23953403,
"upload_time": "2025-10-29T02:34:34",
"upload_time_iso_8601": "2025-10-29T02:34:34.721142Z",
"url": "https://files.pythonhosted.org/packages/1a/1e/c4561ababbbe99e99fde6f747b5a28f75d2104f1a15f84e323b4240c857b/terminaltelemetry-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-29 02:34:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "scottpeterman",
"github_project": "terminaltelemetry",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "backports.tarfile",
"specs": [
[
">=",
"1.2.0"
]
]
},
{
"name": "bcrypt",
"specs": [
[
">=",
"4.2.1"
]
]
},
{
"name": "certifi",
"specs": [
[
">=",
"2025.1.31"
]
]
},
{
"name": "cffi",
"specs": [
[
">=",
"1.17.1"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
">=",
"3.4.1"
]
]
},
{
"name": "click",
"specs": [
[
">=",
"8.1.8"
]
]
},
{
"name": "colorama",
"specs": [
[
">=",
"0.4.6"
]
]
},
{
"name": "cryptography",
"specs": [
[
">=",
"44.0.1"
]
]
},
{
"name": "diff-match-patch",
"specs": [
[
">=",
"20241021"
]
]
},
{
"name": "docutils",
"specs": [
[
">=",
"0.21.2"
]
]
},
{
"name": "future",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "id",
"specs": [
[
">=",
"1.5.0"
]
]
},
{
"name": "idna",
"specs": [
[
">=",
"3.10"
]
]
},
{
"name": "importlib_metadata",
"specs": [
[
">=",
"8.6.1"
]
]
},
{
"name": "jaraco.classes",
"specs": [
[
">=",
"3.4.0"
]
]
},
{
"name": "jaraco.context",
"specs": [
[
">=",
"6.0.1"
]
]
},
{
"name": "jaraco.functools",
"specs": [
[
">=",
"4.1.0"
]
]
},
{
"name": "Jinja2",
"specs": [
[
">=",
"3.1.5"
]
]
},
{
"name": "junos-eznc",
"specs": [
[
">=",
"2.7.2"
]
]
},
{
"name": "keyring",
"specs": [
[
">=",
"25.6.0"
]
]
},
{
"name": "logicmonitor-sdk",
"specs": [
[
">=",
"3.0.222"
]
]
},
{
"name": "lxml",
"specs": [
[
">=",
"5.3.1"
]
]
},
{
"name": "markdown-it-py",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "MarkupSafe",
"specs": [
[
">=",
"3.0.2"
]
]
},
{
"name": "mdurl",
"specs": [
[
">=",
"0.1.2"
]
]
},
{
"name": "more-itertools",
"specs": [
[
">=",
"10.6.0"
]
]
},
{
"name": "napalm",
"specs": [
[
">=",
"5.0.0"
]
]
},
{
"name": "ncclient",
"specs": [
[
">=",
"0.6.15"
]
]
},
{
"name": "netaddr",
"specs": [
[
">=",
"1.3.0"
]
]
},
{
"name": "netmiko",
"specs": [
[
">=",
"4.5.0"
]
]
},
{
"name": "netutils",
"specs": [
[
">=",
"1.12.0"
]
]
},
{
"name": "nh3",
"specs": [
[
">=",
"0.2.20"
]
]
},
{
"name": "ntc_templates",
"specs": [
[
">=",
"7.7.0"
]
]
},
{
"name": "packaging",
"specs": [
[
">=",
"24.2"
]
]
},
{
"name": "paramiko",
"specs": [
[
">=",
"3.5.1"
]
]
},
{
"name": "pkginfo",
"specs": [
[
">=",
"1.12.0"
]
]
},
{
"name": "pycparser",
"specs": [
[
">=",
"2.22"
]
]
},
{
"name": "pyeapi",
"specs": [
[
">=",
"1.0.4"
]
]
},
{
"name": "Pygments",
"specs": [
[
">=",
"2.19.1"
]
]
},
{
"name": "PyNaCl",
"specs": [
[
">=",
"1.5.0"
]
]
},
{
"name": "pynetbox",
"specs": [
[
">=",
"7.4.1"
]
]
},
{
"name": "pyparsing",
"specs": [
[
">=",
"3.2.1"
]
]
},
{
"name": "PyQt6",
"specs": [
[
">=",
"6.8.1"
]
]
},
{
"name": "PyQt6-Charts",
"specs": [
[
">=",
"6.8.0"
]
]
},
{
"name": "PyQt6-Charts-Qt6",
"specs": [
[
">=",
"6.8.2"
]
]
},
{
"name": "PyQt6-Qt6",
"specs": [
[
">=",
"6.8.2"
]
]
},
{
"name": "PyQt6-WebEngine",
"specs": [
[
">=",
"6.8.0"
]
]
},
{
"name": "PyQt6-WebEngine-Qt6",
"specs": [
[
">=",
"6.8.2"
]
]
},
{
"name": "PyQt6_sip",
"specs": [
[
">=",
"13.10.0"
]
]
},
{
"name": "pyserial",
"specs": [
[
">=",
"3.5"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
">=",
"2.9.0.post0"
]
]
},
{
"name": "pywin32-ctypes",
"specs": [
[
">=",
"0.2.3"
]
]
},
{
"name": "PyYAML",
"specs": [
[
">=",
"6.0.2"
]
]
},
{
"name": "qasync",
"specs": [
[
">=",
"0.27.1"
]
]
},
{
"name": "readme_renderer",
"specs": [
[
">=",
"44.0"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.32.3"
]
]
},
{
"name": "requests-toolbelt",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "rfc3986",
"specs": [
[
">=",
"2.0.0"
]
]
},
{
"name": "rich",
"specs": [
[
">=",
"13.9.4"
]
]
},
{
"name": "ruamel.yaml",
"specs": [
[
">=",
"0.18.10"
]
]
},
{
"name": "ruamel.yaml.clib",
"specs": [
[
">=",
"0.2.12"
]
]
},
{
"name": "scp",
"specs": [
[
">=",
"0.15.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"75.8.0"
]
]
},
{
"name": "six",
"specs": [
[
">=",
"1.17.0"
]
]
},
{
"name": "textfsm",
"specs": [
[
">=",
"1.1.3"
]
]
},
{
"name": "transitions",
"specs": [
[
">=",
"0.9.2"
]
]
},
{
"name": "ttp",
"specs": [
[
">=",
"0.9.5"
]
]
},
{
"name": "ttp-templates",
"specs": [
[
">=",
"0.3.7"
]
]
},
{
"name": "twine",
"specs": [
[
">=",
"6.1.0"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
">=",
"4.12.2"
]
]
},
{
"name": "urllib3",
"specs": [
[
">=",
"2.3.0"
]
]
},
{
"name": "yamlordereddictloader",
"specs": [
[
">=",
"0.4.2"
]
]
},
{
"name": "zipp",
"specs": [
[
">=",
"3.21.0"
]
]
}
],
"lcname": "terminaltelemetry"
}