This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
# Install dependencies
pip3 install -r requirements.txt
# Compile UI and resource files (required before running)
make
# Compile only UI files
make ui
# Compile only resource file (icons)
make resources
# Clean generated files
make clean
# Run the application
python3 app.pySSH Tunnel Manager is a PySide6 desktop application for managing SSH tunnels via a GUI.
-
app.py - Main application entry point containing three main classes:
TunnelManager- Main window that loads config and displays tunnel listTunnel- Widget representing a single tunnel entry with start/stop/settings buttonsTunnelConfig- Dialog for editing tunnel settings (remote address, proxy host, local port)
-
vars.py - Constants for configuration keys, UI strings, icon paths, and system commands
-
tunnel.ui / tunnelconfig.ui - Qt Designer UI files (compiled to Python via
pyside6-uic) -
icons.qrc - Qt resource file for bundled icons (compiled to Python via
pyside6-rcc)
These files are compiled from .ui and .qrc sources:
tunnel.py- from tunnel.uitunnelconfig.py- from tunnelconfig.uiicons.py- from icons.qrc
The app reads tunnel configurations from config.yml (see config.example.yml for format). Each tunnel entry specifies:
remote_address- Target host:portproxy_host- SSH bastion/jump hostlocal_port- Local port to bindbrowser_open- Optional URL to open after tunnel starts
Uses QSharedMemory with a fixed UUID to prevent multiple instances.
On close, if config changed (detected via deepdiff), saves to config.yml and creates timestamped backup (keeps last 10).