GOTSH(1) General Commands Manual GOTSH(1)

gotshGame of Trees Shell

gotsh -cgit-receive-pack repository-path

gotsh -cgit-upload-pack repository-path

gotsh is the network-facing interface to gotd(8). It implements the server-side part of the Git network protocol used by git(1) and got(1).

gotsh is not an interactive shell. gotsh is intended to be configured as the login shell of Git repository user accounts on servers running gotd(8). If users require a different login shell, gotsh can be installed in the command search path under the names git-receive-pack and git-upload-pack.

The users can then interact with gotd(8) over the network. When users invoke commands such as got send and got fetch on client machines, got(1) will connect to the server with ssh(1). gotsh will facilitate communication between gotd(8) running on the server machine and the got(1) or git(1) program running on the client machine.

Users running gotsh must be members of the group which has read/write permission to the gotd(8) unix socket. The group used for this purpose can be configured in gotd.conf(5). Users running gotsh should not have access to Git repositories by means other than accessing the unix socket of gotd(8) via gotsh.

It is recommended to restrict ssh(1) features available to users of gotsh. See the EXAMPLES section for details.

Set the path to the unix socket which gotd(8) is listening on. If not specified, the default path /var/run/gotd.sock will be used.

The following sshd_config(5) directives are recommended to protect the server machine and any systems reachable from it via ssh(1) forwarding features. This example assumes the group called “_gotsh” has read/write access to the gotd(8) unix socket.

Match Group _gotsh
    DisableForwarding yes
    PermitTTY no

got(1), ssh(1), gotd.conf(5), sshd_config(5), gotd(8)

Stefan Sperling <>

November 8, 2022 OpenBSD 7.2