goto

module
v1.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2026 License: MIT

README

GOTO - A simple SSH manager

License Codecov

This is a tool for managing and organizing your SSH servers. Unlike PuTTY it doesn't include any connection logic, but integrates with ssh utility which should be installed on your system. It's perfect for dev teams allowing SSH configurations to be centrally stored on an internal server and shared across developers or entire tech departments.

Supported platforms: macOS, Linux, Windows.

1. Installation

1.1 Manual
  • Download the latest version from the Releases section;
  • Choose a binary file which matches your platform;
  • Place the binary into your user's binary path;
  • Optionally: rename gg-${YOUR_PLATFORM_TYPE} to gg.
  • If you're on Linux or macOS, ensure that the binary has execution permissions:
    chmod +x gg
    
1.2 Using package manager
Debian or RedHat

RPM and DEB packages are available in the releases section (these packages are not provided for pre-release builds).

Arch Linux (AUR)

Maintained externally by the open-source community.

Install goto-ssh-bin package. Also see the build file for additional details.

# Install goto
yay -S goto-ssh-bin
macOS (Homebrew)

Maintained externally by the open-source community.

You can install goto via Homebrew using a community tap:

brew tap avasilic/goto
brew install goto-ssh

This installs the gg binary (renamed automatically). Run it with:

gg

2. Functional demo

2.1. This is your interface to ssh configuration

This video demonstrates how to set path to a remote SSH configuration, which is shared among team members.

Shows how to set path to a remote ssh config file

Note: SSH Include directive is also supported. This allows you to create an access hierarchy - for example, a root configuration will be used by UNIX team, with leaf configurations distributed across specific departments. Please read more in this document.

2.2. Organize your hostnames into logical groups

This video represents hosts grouped into categories such as Dev, Beta, and Prod.

Shows how to switch between hosts groups

2.3. Edit your entries and connect to remote boxes

Adjust hostname before connecting to it.

Shows how to open ssh session using goto

Note: you can only edit hosts loaded from yaml storage. Please see section 4.

Find more demos and uses cases here.

3. Configuration

Please also refer F.A.Q. page which provides additional configuration details and usage examples.

3.1. Command line options
  • -f - specify the application home folder;
    gg -f /tmp/goto
    
  • -l - log verbosity level. Only info(default) or debug values are currently supported;
    gg -l debug
    
  • -s - define an alternative SSH configuration file path for current session;
    gg -s /mnt/nfs_share/ssh/config # since version 1.4.0
    
  • --set-ssh-config-path - set SSH configuration file path or url;
    gg --set-ssh-config-path https://company-repo/devops-team/ssh_config # since version 1.5.0
    
  • -d - disable feature, only supported value is ssh_config;
    gg -d "ssh_config" # since version 1.4.0
    
  • -e - enable feature, only supported value is ssh_config;
    gg -e "ssh_config" # since version 1.4.0
    
  • --set-theme - set application color theme;
    gg --set-theme nord # since version 1.5.0
    
  • -h - display help;
  • -v - display version and configuration details.
3.2. Environment variables
  • GG_HOME - specify the application home folder;
  • GG_LOG_LEVEL - set log verbosity level. Only info(default) or debug values are currently supported.
  • GG_SSH_CONFIG_FILE_PATH - define an alternative per-user SSH configuration file path.

4. File storage structure

2 file storages are supported:

  • ssh_config - readonly storage type. Goto loads all hosts from your ~/.ssh/config file. See man ssh_config, if you want to find out more about OpenSSH client configuration file. The application also supports remote ssh_config files. Please read SSH_CONFIG.md document for more details about ssh_config usage with GOTO.
  • yaml file - writable storage type, but supports less options than ssh_config. Please section 4.1 if you want to find out more about yaml file structure and its location.
4.1 Yaml storage location and structure

You can only store your hosts in a yaml file, which is called hosts.yaml. The file is located in your user config folder which exact path depends on a running platform:

  • on Linux, it's in $XDG_CONFIG_HOME/goto or $HOME/.config/goto;
  • on Mac, it's in $HOME/Library/Application Support/goto;
  • on Windows, it's in %AppData%\goto.

Usually you don't need to edit this file manually, but sometimes it's much more convenient to edit it with help of your favorite text editor, than using goto utility. The file structure is very simple and self-explanatory:

- host:
    title: kernel.org
    description: Server 1
    address: 127.0.0.1
- host:
    title: microsoft.com
    description: Server 2
    address: 127.0.0.1
    network_port: 22
    username: satya
    identity_file_path: /home/user/.ssh/id_rsa_microsoft

5. F.A.Q.

6. Contributing guidelines

7. Changelog

8. License

9. Thanks

Directories

Path Synopsis
cmd
goto command
Package main contains the application entry point for the GOTO SSH Manager.
Package main contains the application entry point for the GOTO SSH Manager.
internal
app
config
Package config contains application configuration struct
Package config contains application configuration struct
constant
Package constant contains shared app constants
Package constant contains shared app constants
logger
Package logger incapsulates logger functions
Package logger incapsulates logger functions
model/host
Package host contains definition of Host data model.
Package host contains definition of Host data model.
model/sshcommand
Package sshcommand provides functionality to build ssh command accompanied by options, which are taken from the user input or from the ssh_config file.
Package sshcommand provides functionality to build ssh command accompanied by options, which are taken from the user input or from the ssh_config file.
model/sshconfig
Package sshconfig contains SSH related models and methods.
Package sshconfig contains SSH related models and methods.
state
Package state is in charge of storing and reading application state.
Package state is in charge of storing and reading application state.
storage
Package storage contains methods for interaction with database.
Package storage contains methods for interaction with database.
storage/sshconfig
Package sshconfig contains methods for reading and parsing ssh_config files.
Package sshconfig contains methods for reading and parsing ssh_config files.
testutils
Package testutils_test contains utility methods for unit tests.
Package testutils_test contains utility methods for unit tests.
ui
Package ui - contains UI iteraction code.
Package ui - contains UI iteraction code.
ui/component/grouplist
Package grouplist implements the group list view.
Package grouplist implements the group list view.
ui/component/hostedit
Package hostedit contains UI components for editing host model attributes.
Package hostedit contains UI components for editing host model attributes.
ui/component/hostlist
Package hostlist implements the host list view.
Package hostlist implements the host list view.
ui/component/input
Package input implements generic UI input component.
Package input implements generic UI input component.
ui/message
Package message contains shared messages which are used to communicate between bubbletea components
Package message contains shared messages which are used to communicate between bubbletea components
ui/theme
Package theme provides centralized styling and theming functionality
Package theme provides centralized styling and theming functionality
utils
Package utils contains various utility methods
Package utils contains various utility methods
version
Package version is a singleton module which stores project build information.
Package version is a singleton module which stores project build information.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL