MCPcopy Index your code
hub / github.com/BuddySirJava/SSH-Studio

github.com/BuddySirJava/SSH-Studio @1.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.3.1 ↗ · + Follow
271 symbols 712 edges 15 files 98 documented · 36%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

App Icon

SSH-Studio

GTK License Python

A native GTK4 desktop app for editing and validating your ~/.ssh/config.

Search, edit, and validate SSH hosts with a clean UI — no need to touch terminal editors.


Preview

Main Interface Preferences Dialog


Features

  • Visual host editor – Edit common fields (Host, HostName, User, Port, IdentityFile, ForwardAgent, etc.).
  • Inline validation – Field-level errors shown directly under inputs; parser checks for duplicates and invalid ports.
  • Search and filter – Quickly find hosts across aliases, hostnames, users, and identities.
  • Raw/Diff view – Edit raw ssh_config text with instant diff highlighting.
  • Quick actions – Copy SSH command, test connection, and revert changes.
  • SSH Key Management – Import, generate, and use your keys without leaving the app.
  • Safe saves – Automatic backups (configurable), atomic writes, and include support.
  • Keyboard & mouse friendly – Smooth GTK 4 UI with dark theme preference.
  • Translations – Ready for localization (gettext support via po/).

Install

From AUR

You can install SSH Studio from AUR here.

From Flathub

Download on Flathub

Build from source

You can build and run with GNOME Builder or flatpak-builder:

flatpak-builder --user --force-clean --install-deps-from=flathub build-dir io.github.BuddySirJava.SSH-Studio.json --install

# Run
flatpak run io.github.BuddySirJava.SSH-Studio

Project structure

  • src/ssh_config_parser.py → Parse/validate/generate SSH config safely.
  • src/ui/ → Main App Components (MainWindow, HostList, HostEditor, SearchBar, PreferencesDialog, TestConnectionDialog, SSH Key Manager).
  • data/ui/*.ui → GTK Builder UI blueprints.
  • data/ssh-studio.gresource.xml → GResource manifest.
  • data/media/ → App icon and screenshots.
  • src/main.py → Application entry point.
  • meson.build, data/meson.build, src/meson.build → Build and install rules.
  • io.github.BuddySirJava.SSH-Studio.json → Flatpak manifest.
  • po/ → Translations.

Development

Requirements: - Python 3.12+ - GTK 4 / libadwaita 1.4+ - Meson & Ninja - Flatpak / flatpak-builder

Clone and run in dev mode:

git clone https://github.com/BuddySirJava/SSH-Studio.git
cd SSH-Studio
meson setup builddir
meson compile -C builddir
./builddir/src/ssh-studio

Contributing

Contributions are welcome!
- Report bugs or request features in the issue tracker.
- Submit pull requests with improvements, translations, or new features.
- Follow GNOME HIG for UI changes.


License

This project is licensed under the GNU GPLv3.
See LICENSE for details.


Support & Contact

Troubleshooting Flatpak Sandbox

If “Test SSH Connection” still fails, grant the sandbox the Flatpak talk permission:

flatpak override --user --talk-name=org.freedesktop.Flatpak com.buddysirjava.ssh-studio
flatpak run com.buddysirjava.ssh-studio

3. Save the file.

5. Verify the Fix

  1. Rebuild & reinstall with your updated manifest:
    ```bash flatpak-builder \ --user \ --install \ --force-clean \ build-dir \ com.buddysirjava.ssh-studio.json

flatpak run com.buddysirjava.ssh-studio```

Using flatpak app id to try and fix the issue

flatpak list

as an example you use vscode to run these

flatpak override --user --talk-name=org.freedesktop.Flatpak com.visualstudio.code 

now run the code.

Core symbols most depended-on inside this repo

get_option
called by 53
src/ssh_config_parser.py
_update_button_sensitivity
called by 13
src/ui/host_editor.py
_show_toast
called by 12
src/ui/ssh_key_manager_dialog.py
filter_hosts
called by 10
src/ui/host_list.py
_show_message
called by 9
src/ui/host_editor.py
write
called by 8
src/ssh_config_parser.py
select_host
called by 8
src/ui/host_list.py
_set_host_editor_visible
called by 8
src/ui/main_window.py

Shape

Method 252
Class 16
Function 3

Languages

Python99%
Ruby1%

Modules by API surface

src/ui/host_editor.py65 symbols
src/ui/main_window.py49 symbols
src/ui/host_list.py38 symbols
src/ui/ssh_key_manager_dialog.py22 symbols
src/ssh_config_parser.py22 symbols
src/ui/preferences_dialog.py21 symbols
src/main.py18 symbols
src/ui/test_connection_dialog.py13 symbols
src/ui/key_picker_dialog.py7 symbols
src/ui/generate_key_dialog.py7 symbols
src/ui/keyboard_shortcuts_dialog.py4 symbols
Formula/ssh-studio.rb3 symbols

For agents

$ claude mcp add SSH-Studio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact