A Windows desktop SFTP file browser for lab users, built with Python, Paramiko, and PySide6.
Cluster Browser connects to a configured SSH/SFTP server and keeps each user inside their own remote home folder at /data/home/<username>. It provides a simple desktop interface for browsing folders, previewing common file types, downloading files, and opening remote files with local applications.
- SSH/SFTP login with a desktop PySide6 interface
- User-scoped browsing under
/data/home/<username> - Folder tree with lazy loading for faster navigation
- File table with preview, download, and open actions
- Local
credentials.jsonconfiguration for host and port settings - Text, image, and PDF preview support with lightweight safety limits
Preview behavior is extension-based.
| Type | Extensions |
|---|---|
| Text | .txt, .log, .csv, .json, .xml, .yaml, .yml, .py, .m, .sh, .md, .ini, .cfg, .tsv |
| Images | .png, .jpg, .jpeg, .bmp, .gif, .webp, .tif, .tiff |
| PDFs | .pdf |
Unsupported file types can still be downloaded or opened locally.
- Windows
- Python 3.12
- Access to an SSH/SFTP server
Core dependencies are listed in requirements.txt:
paramiko
PySide6
pillow
pyinstaller
This project was built with Python 3.12.7. pillow is recommended for faster image preview processing.
.
|-- main.py # Main desktop application
|-- requirements.txt # Python dependencies
|-- credentials.json # Local connection settings
|-- run_Cluster_Dir_main.bat # Windows launcher
|-- LICENSE # MIT License
`-- README.md
From the project folder, create and activate a virtual environment:
uv venv .venv --python 3.12.7
.venv\Scripts\activateInstall dependencies:
uv pip install -r requirements.txtIf you are not using uv, the same flow works with standard Python tooling:
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txtConnection settings are read from credentials.json in the project root:
{
"host": "host_ip",
"port": "port_number"
}Keep this file local. It contains connection details and should not be committed or shared unnecessarily.
Start the app with:
python main.pyOr use the included launcher:
.\run_Cluster_Dir_main.batWhen the app opens:
- Enter your SSH username and password.
- Connect to the configured host.
- Browse files inside
/data/home/<username>. - Select a file to preview it.
- Use
Downloadto save a remote file locally. - Use
Opento download a temporary copy and launch it with the default local app.
- Remote paths are normalized and validated against
/data/home/<username>. - SSH credentials are used for the connection only and are not stored by the app.
- Text previews read only a limited amount of data and mark the preview when truncated.
- Very large images and PDFs are not rendered inline.
credentials.jsonshould remain local because it contains server connection details.
This project is licensed under the MIT License. See LICENSE for details.