A powerful, real-time terminal-based dashboard for monitoring and managing your Tailscale VPN network. Built with Python and the Textual framework, this tool provides an intuitive interface for viewing network status, peer connections, and performing network diagnostics.
- Real-time Network Monitoring - Live updates every 10 seconds showing current network status
- Interactive Peer Management - View all connected devices with hostname, IP, online status, and OS information
- Network Diagnostics - Integrated
tailscale netcheckoutput for connectivity troubleshooting - Exit Node Management - Monitor available exit nodes and current usage status
- Ping Testing - Click on any peer to test connectivity with interactive ping results
- Cross-platform Clipboard - Copy network information to clipboard (macOS/Linux)
- Keyboard Shortcuts - Quick refresh and navigation controls
The dashboard displays:
- Your local Tailscale IP address
- Available and currently used exit nodes
- A comprehensive peer table with real-time status
- Network diagnostics information
- Interactive ping results in modal dialogs
- Operating System: macOS or Linux
- Python: 3.8 or higher
- Tailscale: Must be installed and authenticated
textual- Modern terminal UI framework
tailscaleCLI tool (must be in PATH)xclip(Linux only, for clipboard functionality)
-
Clone or download the project files:
# Ensure you have both files: # - ts_backend.py # - main.py
-
Install Python dependencies:
pip install textual
-
Verify Tailscale installation:
tailscale version tailscale status
-
Install system dependencies (Linux only):
# Ubuntu/Debian sudo apt install xclip # Fedora/RHEL sudo dnf install xclip # Arch Linux sudo pacman -S xclip
python main.pyq- Quit the applicationr- Manually refresh all data↑/↓- Navigate through the peer tableEnter- Ping the selected peerEsc- Close ping result dialogs
Header: Shows current time and application title
Network Info Section:
- Local IP: Your Tailscale IP address
- Exit Nodes: Lists available exit nodes and current usage status
Peer Table: Interactive table showing:
- Hostname: Device name
- IP: Tailscale IP address
- Online: Connection status (✅/❌)
- Exit Node: Shows 🌐 if device can act as exit node
- OS: Operating system of the peer
Network Check: Output from tailscale netcheck for diagnostics
Footer: Shows available keyboard shortcuts
The application uses default settings but can be customized by modifying the source code:
- Refresh interval: Change the
sleep(10)value inrefresh_loop()(main.py) - Table styling: Modify the
DataTableconfiguration - UI colors/theme: Add custom CSS to the
CSS_PATHvariable
tailscale-dashboard/
├── ts_backend.py # Backend API for Tailscale operations
├── main.py # Main TUI application
└── README.md # This file
Backend module containing functions for:
- Executing Tailscale CLI commands safely
- Retrieving network and peer information
- Managing exit nodes
- Network diagnostics
- Cross-platform utilities
Main application featuring:
- Textual-based terminal user interface
- Reactive data updates
- Interactive peer table
- Modal dialog system for ping results
- Keyboard shortcut handling
"Command not found: tailscale"
- Ensure Tailscale is installed and in your PATH
- Try running
which tailscaleto verify installation
"No peers showing"
- Verify Tailscale is connected:
tailscale status - Check if you're logged in:
tailscale login
"Clipboard error"
- On Linux: Install
xclippackage - On unsupported systems: Clipboard features will be disabled
"Permission denied"
- Ensure your user has permission to run
tailscalecommands - Some operations may require sudo privileges
For troubleshooting, you can run individual backend functions:
python3 -c "from ts_backend import get_peers; print(get_peers())"Contributions are welcome! Areas for improvement:
- Windows support for clipboard functionality
- Additional Tailscale management features
- UI themes and customization options
- Export functionality for network reports
- Integration with Tailscale ACL management
This project is provided as-is. Feel free to modify and distribute according to your needs.
For issues related to:
- Tailscale connectivity: Check Tailscale documentation and support
- Python/Textual issues: Refer to respective project documentation
- Application bugs: Review the code and modify as needed