-
-
Notifications
You must be signed in to change notification settings - Fork 67
Plugins
SSH Pilot has a plugin system that lets you add new features, protocols, and tools to the application.
Plugins can:
- Add new connection protocols (Telnet, Serial, Mosh, Docker/Podman, Kubernetes)
- Add new UI pages and tabs (like the Docker Console)
- Add tools to the Tools menu
- React to events (when you connect, disconnect, or change settings)
- Run commands on your server
- Create custom connection types
SSH Pilot ships with these built-in plugins:
| Plugin | What it does | Default |
|---|---|---|
| SSH Protocol | Standard SSH connections (required) | Always on |
| Telnet Protocol | Telnet connections | On |
| Serial Protocol | Serial port connections | On |
| Mosh Protocol | Mobile Shell (UDP-based, works on poor connections) | On |
| Docker/Podman Protocol | Exec sessions into containers | On |
| Kubernetes Protocol |
kubectl exec sessions |
On |
| Docker Console | Local/remote Docker/Podman management GUI | Off (opt-in) |
Built-in plugins cannot be uninstalled. You can disable optional ones in Settings > Plugins. The SSH protocol cannot be disabled.
Docker Console is off by default. Enable it under Settings > Plugins, then see Docker Console. For Telnet, Serial, Mosh, Docker exec, and Kubernetes connections, see Protocols.
Plugin files are typically .zip or .py packages. You can find community plugins or create your own.
- Open Settings (
Ctrl+,/Cmd+,) - Go to Plugins
- Click Install from File
- Select the plugin package
- The plugin appears in the list
Toggle the switch next to the plugin to enable or disable it.
From Settings > Plugins, you can:
| Action | How |
|---|---|
| Enable a plugin | Toggle the switch to ON |
| Disable a plugin | Toggle the switch to OFF |
| View plugin info | Click the info button |
| Remove a plugin | Click the remove button (user-installed plugins only) |
| Install a new plugin | Click Install from File |
Plugins run Python code with your user permissions. Only install plugins from sources you trust.
If you know Python, writing a plugin is straightforward. A plugin is a Python package with a manifest file and a main class.
my-plugin/
plugin.json
__init__.py
{
"name": "My Custom Plugin",
"description": "Does something awesome",
"version": "1.0.0",
"api_version": "1.14",
"entry_point": "MyPlugin"
}from sshpilot.plugins.base import BasePlugin
class MyPlugin(BasePlugin):
name = "My Custom Plugin"
description = "Does something awesome when I connect"
version = "1.0.0"
def on_app_ready(self, app_context):
# The GUI is loaded. Add your custom menu items here.
pass
def on_connection_opened(self, host_model):
# A new SSH connection just succeeded!
print(f"Connected to {host_model.hostname}!")- on_app_ready -- The application has started
- on_connection_opened -- A connection was established
- on_connection_closed -- A connection was closed
- on_session_opened -- A terminal session started
- on_session_closed -- A terminal session ended
- on_settings_changed -- A setting was modified
For comprehensive tutorials on the plugin API, UI hooks, and protocol backends, see the docs/plugins/ directory in the SSH Pilot source code.
The source code includes example plugins:
- mock_vps -- A minimal VPS provisioning example
- easyenv_workspaces -- A real REST API integration example
- Protocols -- Use built-in non-SSH connection types
- Docker Console -- Enable and use the Docker Console
- Settings -- Manage plugins from the settings
- Connections -- Plugins can add new connection types
- Troubleshooting -- Solutions to common problems
- Home
- Installation
- Quick Start
- Main Window
- Sidebar
- Connections
- Groups
- Terminal
- File Manager
- Credentials
- Key Management
- Known Hosts
- Authorized Keys
- Keyboard Quick Reference
- Omni-search
- Snippets
- Keyboard Shortcuts
- Plain Terminal Mode
- Docker Console
- Protocols
- Security
- Bitwarden & Vaultwarden
- Settings
- Isolated Mode
- Backup
- Plugins
- FAQ
- Troubleshooting